{
  "openapi": "3.0.0",
  "info": {
    "x-katapult-version": "2.105.0",
    "version": "1.0.0",
    "title": "Katapult Core API",
    "description": "Welcome to the documentation for the Katapult Core API"
  },
  "externalDocs": {
    "description": "Katapult API Documentation",
    "url": "https://docs.katapult.io/docs/category/core-api"
  },
  "servers": [
    {
      "url": "https://api.katapult.io/core/v1"
    }
  ],
  "paths": {
    "/organizations/organization/api_tokens": {
      "get": {
        "operationId": "get:organization_api_tokens",
        "summary": "List organization API tokens",
        "description": "Returns a list of all API tokens for an organization\n## Scopes\n- `api_tokens`\n- `api_tokens:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "API tokens"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/api_tokens",
              "api.katapult.io/core/v1/api_tokens:read"
            ]
          },
          {
            "Authenticator": [
              "api_tokens",
              "api_tokens:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to list API tokens for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to list API tokens for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "annotations[][key]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "in": "query",
            "name": "annotations[][value]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all API tokens for an organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "api_tokens": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/APIToken"
                      }
                    }
                  },
                  "required": [
                    "pagination",
                    "api_tokens"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:organization_api_tokens",
        "summary": "Create API token for organization",
        "description": "Create a new API token for a given organization\n## Scopes\n- `api_tokens`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "API tokens"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/api_tokens"
            ]
          },
          {
            "Authenticator": [
              "api_tokens"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/APITokenArguments"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "organization",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create a new API token for a given organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "api_token": {
                      "description": "The API token that has been created",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/APIToken"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      },
                      "description": "Annotations for this API token"
                    }
                  },
                  "required": [
                    "api_token",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/api_tokens/api_token": {
      "patch": {
        "operationId": "patch:api_token",
        "summary": "Update organization API token",
        "description": "Updates an organization API token with new properties\n## Scopes\n- `api_tokens`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "API tokens"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/api_tokens"
            ]
          },
          {
            "Authenticator": [
              "api_tokens"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "api_token": {
                    "$ref": "#/components/schemas/APITokenLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/APITokenArguments"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "api_token",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updates an organization API token with new properties",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "api_token": {
                      "description": "The API token that has been updated",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/APIToken"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      },
                      "description": "Annotations for this API token"
                    }
                  },
                  "required": [
                    "api_token",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/APITokenNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:api_token",
        "summary": "Delete organization API token",
        "description": "Delete an organization API token\n## Scopes\n- `api_tokens`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "API tokens"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/api_tokens"
            ]
          },
          {
            "Authenticator": [
              "api_tokens"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "api_token": {
                    "$ref": "#/components/schemas/APITokenLookup"
                  }
                },
                "required": [
                  "api_token"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete an organization API token",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "api_token": {
                      "description": "The API token that has been destroyed",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DeleteAPIToken200ResponseAPIToken"
                        }
                      ]
                    }
                  },
                  "required": [
                    "api_token"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/APITokenNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/api_tokens/api_token/regenerate_secret": {
      "post": {
        "operationId": "post:api_token_regenerate_secret",
        "summary": "Regenerate organization API token secret",
        "description": "Regenerates the secret for an organization API token\n## Scopes\n- `api_tokens`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "API tokens"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/api_tokens"
            ]
          },
          {
            "Authenticator": [
              "api_tokens"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "api_token": {
                    "$ref": "#/components/schemas/APITokenLookup"
                  }
                },
                "required": [
                  "api_token"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Regenerates the secret for an organization API token",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "api_token": {
                      "description": "The API token that has had its secret regenerated",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/APIToken"
                        }
                      ]
                    }
                  },
                  "required": [
                    "api_token"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/APITokenNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/object_storage/object_storage_cluster/access_keys": {
      "post": {
        "operationId": "post:organization_object_storage_object_storage_cluster_access_keys",
        "summary": "Create object storage access key",
        "description": "Create a new access key in an object storage account\n## Scopes\n- `object_storage`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Access keys"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage"
            ]
          },
          {
            "Authenticator": [
              "object_storage"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "object_storage_cluster": {
                    "$ref": "#/components/schemas/ObjectStorageClusterLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/ObjectStorageAccessKeyArguments"
                  }
                },
                "required": [
                  "organization",
                  "object_storage_cluster",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a new access key in an object storage account",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "object_storage_access_key": {
                      "$ref": "#/components/schemas/ObjectStorageAccessKey"
                    }
                  },
                  "required": [
                    "object_storage_access_key"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/ObjectStorageAccountNotProvisionedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageAccountNotFoundObjectStorageClusterNotFoundOrganizationNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/object_storage/access_keys": {
      "get": {
        "operationId": "get:organization_object_storage_access_keys",
        "summary": "List object storage access keys",
        "description": "Returns a list of all object storage access keys for a given organization\n## Scopes\n- `object_storage`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Access keys"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage"
            ]
          },
          {
            "Authenticator": [
              "object_storage"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to return access keys for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to return access keys for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all object storage access keys for a given organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "object_storage_access_keys": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ObjectStorageAccessKey"
                      },
                      "description": "The object storage access keys for the organization"
                    }
                  },
                  "required": [
                    "pagination",
                    "object_storage_access_keys"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/object_storage/access_keys/access_key/generate_credentials": {
      "post": {
        "operationId": "post:object_storage_access_key_generate_credentials",
        "summary": "Generate object storage S3 access key credentials",
        "description": "Returns new S3 credentials for an object storage access key. Existing credentials cannot be retrieved. Credentials may take a few minutes to become active.\n## Scopes\n- `object_storage`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Access keys"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage"
            ]
          },
          {
            "Authenticator": [
              "object_storage"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "access_key": {
                    "$ref": "#/components/schemas/ObjectStorageAccessKeyLookup"
                  }
                },
                "required": [
                  "access_key"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns new S3 credentials for an object storage access key. Existing credentials cannot be retrieved. Credentials may take a few minutes to become active.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "object_storage_access_key": {
                      "description": "The object storage access key with newly generated credentials",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/ObjectStorageAccessKey"
                        }
                      ]
                    }
                  },
                  "required": [
                    "object_storage_access_key"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageAccessKeyNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/TaskQueueingErrorResponse"
          },
          "422": {
            "$ref": "#/components/responses/ObjectStorageProvisioningErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/object_storage/access_keys/access_key": {
      "get": {
        "operationId": "get:object_storage_access_key",
        "summary": "Get object storage access key details",
        "description": "Returns object storage access key details.\n## Scopes\n- `object_storage`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Access keys"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage"
            ]
          },
          {
            "Authenticator": [
              "object_storage"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "access_key[id]",
            "schema": {
              "type": "string"
            },
            "description": "The object storage access key to find."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns object storage access key details.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "object_storage_access_key": {
                      "$ref": "#/components/schemas/ObjectStorageAccessKey"
                    }
                  },
                  "required": [
                    "object_storage_access_key"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageAccessKeyNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:object_storage_access_key",
        "summary": "Update object storage access key",
        "description": "Updates an object storage access key with new properties\n## Scopes\n- `object_storage`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Access keys"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage"
            ]
          },
          {
            "Authenticator": [
              "object_storage"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "access_key": {
                    "$ref": "#/components/schemas/ObjectStorageAccessKeyLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/ObjectStorageAccessKeyArguments"
                  }
                },
                "required": [
                  "access_key",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updates an object storage access key with new properties",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "object_storage_access_key": {
                      "description": "The new properties for the object storage access key",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/ObjectStorageAccessKey"
                        }
                      ]
                    }
                  },
                  "required": [
                    "object_storage_access_key"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageAccessKeyNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/TaskQueueingErrorResponse"
          },
          "422": {
            "$ref": "#/components/responses/ObjectStorageProvisioningErrorValidationError422Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:object_storage_access_key",
        "summary": "Delete object storage access key",
        "description": "Delete an object storage access key\n## Scopes\n- `object_storage`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Access keys"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage"
            ]
          },
          {
            "Authenticator": [
              "object_storage"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "access_key": {
                    "$ref": "#/components/schemas/ObjectStorageAccessKeyLookup"
                  }
                },
                "required": [
                  "access_key"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete an object storage access key",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "success": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "success"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageAccessKeyNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          },
          "504": {
            "$ref": "#/components/responses/NetworkErrorResponse"
          }
        }
      }
    },
    "/address_lists/address_list/entries": {
      "get": {
        "operationId": "get:address_list_entries",
        "summary": "List address list entries",
        "description": "Returns a list of all address list entries for a given address list\n## Scopes\n- `address_lists`\n- `address_lists:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Address list entries"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/address_lists",
              "api.katapult.io/core/v1/address_lists:read"
            ]
          },
          {
            "Authenticator": [
              "address_lists",
              "address_lists:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "address_list[id]",
            "schema": {
              "type": "string"
            },
            "description": "The address list for which the entries should be returned."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all address list entries for a given address list",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "address_list_entries": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AddressListEntry"
                      },
                      "description": "A list of all address list entries for the given address list."
                    }
                  },
                  "required": [
                    "pagination",
                    "address_list_entries"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/AddressListNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:address_list_entries",
        "summary": "Create address list entry",
        "description": "Create a new address list entry for a given address list.\n## Scopes\n- `address_lists`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Address list entries"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/address_lists"
            ]
          },
          {
            "Authenticator": [
              "address_lists"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "address_list": {
                    "$ref": "#/components/schemas/AddressListLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/AddressListEntryArguments"
                  }
                },
                "required": [
                  "address_list",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a new address list entry for a given address list.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "address_list_entry": {
                      "description": "The address list entry.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/AddressListEntry"
                        }
                      ]
                    }
                  },
                  "required": [
                    "address_list_entry"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/AddressListNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/address_list_entries/address_list_entry": {
      "get": {
        "operationId": "get:address_list_entry",
        "summary": "Get address list entry",
        "description": "Returns details for an address list entry.\n## Scopes\n- `address_lists`\n- `address_lists:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Address list entries"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/address_lists",
              "api.katapult.io/core/v1/address_lists:read"
            ]
          },
          {
            "Authenticator": [
              "address_lists",
              "address_lists:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "address_list_entry[id]",
            "schema": {
              "type": "string"
            },
            "description": "The address list entry to return."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns details for an address list entry.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "address_list_entry": {
                      "description": "The address list entry.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/AddressListEntry"
                        }
                      ]
                    }
                  },
                  "required": [
                    "address_list_entry"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/AddressListEntryNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:address_list_entry",
        "summary": "Update address list entry",
        "description": "Update an address list entry with new properties.\n## Scopes\n- `address_lists`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Address list entries"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/address_lists"
            ]
          },
          {
            "Authenticator": [
              "address_lists"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "address_list_entry": {
                    "$ref": "#/components/schemas/AddressListEntryLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/AddressListEntryArguments"
                  }
                },
                "required": [
                  "address_list_entry",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update an address list entry with new properties.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "address_list_entry": {
                      "description": "The address list entry.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/AddressListEntry"
                        }
                      ]
                    }
                  },
                  "required": [
                    "address_list_entry"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/AddressListEntryNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:address_list_entry",
        "summary": "Delete address list entry",
        "description": "Delete an address list entry.\n## Scopes\n- `address_lists`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Address list entries"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/address_lists"
            ]
          },
          {
            "Authenticator": [
              "address_lists"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "address_list_entry": {
                    "$ref": "#/components/schemas/AddressListEntryLookup"
                  }
                },
                "required": [
                  "address_list_entry"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete an address list entry.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "address_list_entry": {
                      "description": "The address list entry that has been destroyed.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/AddressListEntry"
                        }
                      ]
                    }
                  },
                  "required": [
                    "address_list_entry"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/AddressListEntryNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/address_lists/address_list/entries/bulk": {
      "post": {
        "operationId": "post:address_list_entries_bulk",
        "summary": "Bulk change address list entries",
        "description": "Create or delete multiple address list entries for a given address list.\n## Scopes\n- `address_lists`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Address list entries"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/address_lists"
            ]
          },
          {
            "Authenticator": [
              "address_lists"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "address_list": {
                    "$ref": "#/components/schemas/AddressListLookup"
                  },
                  "add": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/AddressListEntryArguments"
                    }
                  },
                  "remove": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/AddressListEntryArguments"
                    }
                  }
                },
                "required": [
                  "address_list"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create or delete multiple address list entries for a given address list.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {

                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/AddressListNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/address_lists": {
      "get": {
        "operationId": "get:address_lists",
        "summary": "List global address lists",
        "description": "Returns a list of all global address lists.\n## Scopes\n- `address_lists`\n- `address_lists:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Address lists"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/address_lists",
              "api.katapult.io/core/v1/address_lists:read"
            ]
          },
          {
            "Authenticator": [
              "address_lists",
              "address_lists:read"
            ]
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all global address lists.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "address_lists": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetAddressLists200ResponseAddressLists"
                      },
                      "description": "A list of all global address lists."
                    }
                  },
                  "required": [
                    "pagination",
                    "address_lists"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/address_lists": {
      "get": {
        "operationId": "get:organization_address_lists",
        "summary": "List address lists",
        "description": "Returns a list of all address lists for a given organization\n## Scopes\n- `address_lists`\n- `address_lists:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Address lists"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/address_lists",
              "api.katapult.io/core/v1/address_lists:read"
            ]
          },
          {
            "Authenticator": [
              "address_lists",
              "address_lists:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization for which the address lists should be returned. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization for which the address lists should be returned. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "annotations[][key]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "in": "query",
            "name": "annotations[][value]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all address lists for a given organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "address_lists": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationAddressLists200ResponseAddressLists"
                      },
                      "description": "A list of all address lists for the given organization."
                    }
                  },
                  "required": [
                    "pagination",
                    "address_lists"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:organization_address_lists",
        "summary": "Create address list",
        "description": "Create a new address list for a given organization.\n## Scopes\n- `address_lists`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Address lists"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/address_lists"
            ]
          },
          {
            "Authenticator": [
              "address_lists"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/AddressListArguments"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "organization",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a new address list for a given organization.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "address_list": {
                      "description": "The address list.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/AddressList"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "address_list",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/address_lists/address_list": {
      "get": {
        "operationId": "get:address_list",
        "summary": "Get address list",
        "description": "Returns details for a address list.\n## Scopes\n- `address_lists`\n- `address_lists:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Address lists"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/address_lists",
              "api.katapult.io/core/v1/address_lists:read"
            ]
          },
          {
            "Authenticator": [
              "address_lists",
              "address_lists:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "address_list[id]",
            "schema": {
              "type": "string"
            },
            "description": "The address list to return."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns details for a address list.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "address_list": {
                      "description": "The address list.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/AddressList"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "address_list",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/AddressListNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:address_list",
        "summary": "Update address list",
        "description": "Update a address list with new properties.\n## Scopes\n- `address_lists`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Address lists"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/address_lists"
            ]
          },
          {
            "Authenticator": [
              "address_lists"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "address_list": {
                    "$ref": "#/components/schemas/AddressListLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/AddressListArguments"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "address_list",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update a address list with new properties.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "address_list": {
                      "description": "The address list.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/AddressList"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "address_list",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/AddressListNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:address_list",
        "summary": "Delete address list",
        "description": "Delete a address list.\n## Scopes\n- `address_lists`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Address lists"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/address_lists"
            ]
          },
          {
            "Authenticator": [
              "address_lists"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "address_list": {
                    "$ref": "#/components/schemas/AddressListLookup"
                  }
                },
                "required": [
                  "address_list"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete a address list.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "address_list": {
                      "description": "The address list that has been destroyed.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/AddressList"
                        }
                      ]
                    }
                  },
                  "required": [
                    "address_list"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/AddressListNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/object_storage/object_storage_cluster/buckets": {
      "post": {
        "operationId": "post:organization_object_storage_object_storage_cluster_buckets",
        "summary": "Create object storage bucket",
        "description": "Create a new bucket in an object storage account\n## Scopes\n- `object_storage`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Buckets"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage"
            ]
          },
          {
            "Authenticator": [
              "object_storage"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "object_storage_cluster": {
                    "$ref": "#/components/schemas/ObjectStorageClusterLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/ObjectStorageBucketArguments"
                  }
                },
                "required": [
                  "organization",
                  "object_storage_cluster",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a new bucket in an object storage account",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "object_storage_bucket": {
                      "$ref": "#/components/schemas/ObjectStorageBucket"
                    }
                  },
                  "required": [
                    "object_storage_bucket"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/ObjectStorageAccountNotProvisionedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageAccountNotFoundObjectStorageClusterNotFoundOrganizationNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/object_storage/object_storage_cluster/buckets/bucket": {
      "patch": {
        "operationId": "patch:object_storage_object_storage_cluster_bucket",
        "summary": "Update object storage bucket",
        "description": "Configure an object storage bucket with new properties\n## Scopes\n- `object_storage`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Buckets"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage"
            ]
          },
          {
            "Authenticator": [
              "object_storage"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "object_storage_cluster": {
                    "$ref": "#/components/schemas/ObjectStorageClusterLookup"
                  },
                  "bucket": {
                    "$ref": "#/components/schemas/ObjectStorageBucketLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/ObjectStorageBucketArguments"
                  }
                },
                "required": [
                  "object_storage_cluster",
                  "bucket",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Configure an object storage bucket with new properties",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "object_storage_bucket": {
                      "$ref": "#/components/schemas/ObjectStorageBucket"
                    }
                  },
                  "required": [
                    "object_storage_bucket"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageBucketNotFoundObjectStorageClusterNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "500": {
            "$ref": "#/components/responses/MultipleObjectStorageBucketsFoundResponse"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:object_storage_object_storage_cluster_bucket",
        "summary": "Delete object storage bucket",
        "description": "Delete an object storage bucket\n## Scopes\n- `object_storage`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Buckets"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage"
            ]
          },
          {
            "Authenticator": [
              "object_storage"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "object_storage_cluster": {
                    "$ref": "#/components/schemas/ObjectStorageClusterLookup"
                  },
                  "bucket": {
                    "$ref": "#/components/schemas/ObjectStorageBucketLookup"
                  }
                },
                "required": [
                  "object_storage_cluster",
                  "bucket"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete an object storage bucket",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "success": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "success"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/ObjectStorageBucketDeletionErrorPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageBucketNotFoundObjectStorageClusterNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "500": {
            "$ref": "#/components/responses/MultipleObjectStorageBucketsFoundResponse"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          },
          "504": {
            "$ref": "#/components/responses/NetworkErrorResponse"
          }
        }
      },
      "get": {
        "operationId": "get:object_storage_object_storage_cluster_bucket",
        "summary": "Get an object storage bucket",
        "description": "Returns object storage bucket details\n## Scopes\n- `object_storage:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Buckets"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage:read"
            ]
          },
          {
            "Authenticator": [
              "object_storage:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "object_storage_cluster[region]",
            "schema": {
              "type": "string"
            },
            "description": "The object storage cluster region for the bucket."
          },
          {
            "in": "query",
            "name": "bucket[name]",
            "schema": {
              "type": "string"
            },
            "description": "The name of the object storage bucket."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns object storage bucket details",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "object_storage_bucket": {
                      "$ref": "#/components/schemas/ObjectStorageBucket"
                    }
                  },
                  "required": [
                    "object_storage_bucket"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageBucketNotFoundObjectStorageClusterNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "500": {
            "$ref": "#/components/responses/MultipleObjectStorageBucketsFoundResponse"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/object_storage/object_storage_cluster/buckets/bucket/revoke_presigned_urls": {
      "post": {
        "operationId": "post:object_storage_object_storage_cluster_bucket_revoke_presigned_urls",
        "summary": "Revoke object storage bucket presigned URLs",
        "description": "Revoke presigned URLs for all objects within an object storage bucket\n## Scopes\n- `object_storage`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Buckets"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage"
            ]
          },
          {
            "Authenticator": [
              "object_storage"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "object_storage_cluster": {
                    "$ref": "#/components/schemas/ObjectStorageClusterLookup"
                  },
                  "bucket": {
                    "$ref": "#/components/schemas/ObjectStorageBucketLookup"
                  }
                },
                "required": [
                  "object_storage_cluster",
                  "bucket"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Revoke presigned URLs for all objects within an object storage bucket",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "success": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "success"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageBucketNotFoundObjectStorageClusterNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "500": {
            "$ref": "#/components/responses/MultipleObjectStorageBucketsFoundResponse"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          },
          "504": {
            "$ref": "#/components/responses/NetworkErrorResponse"
          }
        }
      }
    },
    "/object_storage/object_storage_cluster/buckets/bucket/object": {
      "get": {
        "operationId": "get:object_storage_object_storage_cluster_bucket_object",
        "summary": "Get an object storage object",
        "description": "Returns object storage object details\n## Scopes\n- `object_storage:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Buckets"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage:read"
            ]
          },
          {
            "Authenticator": [
              "object_storage:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "object_storage_cluster[region]",
            "schema": {
              "type": "string"
            },
            "description": "The object storage cluster region for the bucket."
          },
          {
            "in": "query",
            "name": "bucket[name]",
            "schema": {
              "type": "string"
            },
            "description": "The name of the object storage bucket."
          },
          {
            "name": "path",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "The name or path for the object"
            },
            "description": "The name or path for the object",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Returns object storage object details",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "object_details": {
                      "$ref": "#/components/schemas/ObjectStorageObject"
                    }
                  },
                  "required": [
                    "object_details"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectNotFoundObjectStorageBucketNotFoundObjectStorageClusterNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "500": {
            "$ref": "#/components/responses/MultipleObjectStorageBucketsFoundResponse"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          },
          "504": {
            "$ref": "#/components/responses/NetworkErrorResponse"
          }
        }
      }
    },
    "/object_storage/object_storage_cluster/buckets/bucket/presigned_url": {
      "post": {
        "operationId": "post:object_storage_object_storage_cluster_bucket_presigned_url",
        "summary": "Create a presigned url for an object storage object",
        "description": "Returns temporary url to download the object storage object\n## Scopes\n- `object_storage`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Buckets"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage"
            ]
          },
          {
            "Authenticator": [
              "object_storage"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "object_storage_cluster": {
                    "$ref": "#/components/schemas/ObjectStorageClusterLookup"
                  },
                  "bucket": {
                    "$ref": "#/components/schemas/ObjectStorageBucketLookup"
                  },
                  "path": {
                    "type": "string",
                    "description": "The name or path for the object"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/ObjectStorageObjectPresignedURLArguments"
                  }
                },
                "required": [
                  "object_storage_cluster",
                  "bucket",
                  "path",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns temporary url to download the object storage object",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "url": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "url"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageBucketNotFoundObjectStorageClusterNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "500": {
            "$ref": "#/components/responses/MultipleObjectStorageBucketsFoundResponse"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          },
          "504": {
            "$ref": "#/components/responses/NetworkErrorResponse"
          }
        }
      }
    },
    "/organizations/organization/virtual_machines/build": {
      "post": {
        "operationId": "post:organization_virtual_machines_build",
        "summary": "Build virtual machine",
        "description": "Builds a new virtual machine based on the arguments provided to this endpoint. Virtual machines will be built in the background. This task will return an task object that will allow you to monitor the build process using the appropriate API action. This action only offers a small subset of the full functionality needed when provisioning virtual machines - see the `build_from_spec` action for a full advanced virtual machine creation method.\n## Scopes\n- `virtual_machines`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Build"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "zone": {
                    "$ref": "#/components/schemas/ZoneLookup"
                  },
                  "data_center": {
                    "$ref": "#/components/schemas/DataCenterLookup"
                  },
                  "package": {
                    "$ref": "#/components/schemas/VirtualMachinePackageLookup"
                  },
                  "disk_template": {
                    "$ref": "#/components/schemas/DiskTemplateLookup"
                  },
                  "disk_template_options": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  },
                  "disks": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/VirtualMachineBuildDiskArguments"
                    }
                  },
                  "network": {
                    "$ref": "#/components/schemas/NetworkLookup"
                  },
                  "hostname": {
                    "type": "string"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  },
                  "cloud_init": {
                    "$ref": "#/components/schemas/CloudInitArguments"
                  }
                },
                "required": [
                  "organization",
                  "package"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Builds a new virtual machine based on the arguments provided to this endpoint. Virtual machines will be built in the background. This task will return an task object that will allow you to monitor the build process using the appropriate API action. This action only offers a small subset of the full functionality needed when provisioning virtual machines - see the `build_from_spec` action for a full advanced virtual machine creation method.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "task": {
                      "$ref": "#/components/schemas/PostOrganizationVirtualMachinesBuild201ResponseTask"
                    },
                    "build": {
                      "description": "Deprecated, please use \"virtual_machine_build\" instead",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostOrganizationVirtualMachinesBuild201ResponseBuild"
                        }
                      ]
                    },
                    "virtual_machine_build": {
                      "$ref": "#/components/schemas/PostOrganizationVirtualMachinesBuild201ResponseVirtualMachineBuild"
                    },
                    "hostname": {
                      "type": "string"
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "task",
                    "build",
                    "virtual_machine_build",
                    "hostname",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedPermissionDeniedResourceCreationRestricted403Res"
          },
          "404": {
            "$ref": "#/components/responses/DataCenterNotFoundVirtualMachinePackageNotFoundZoneNotFound404Res"
          },
          "422": {
            "$ref": "#/components/responses/LocationRequiredOneSystemDiskRequiredValidationError422Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/virtual_machines/build_from_spec": {
      "post": {
        "operationId": "post:organization_virtual_machines_build_from_spec",
        "summary": "Build virtual machine (from spec)",
        "description": "Builds a new virtual machine by receiving a virtual machine spec document\n## Scopes\n- `virtual_machines`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Build"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "xml": {
                    "type": "string"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "organization",
                  "xml"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Builds a new virtual machine by receiving a virtual machine spec document",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "task": {
                      "$ref": "#/components/schemas/PostOrganizationVirtualMachinesBuildFromSpec201ResponseTask"
                    },
                    "build": {
                      "description": "Deprecated, please use \"virtual_machine_build\" instead",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostOrganizationVirtualMachinesBuildFromSpec201ResponseBuild"
                        }
                      ]
                    },
                    "virtual_machine_build": {
                      "$ref": "#/components/schemas/PostOrganizationVirtualMachinesBuildFromSpec201ResponseVirtualMachineBuild"
                    },
                    "hostname": {
                      "type": "string"
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "task",
                    "build",
                    "virtual_machine_build",
                    "hostname",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidSpecXML400Res"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/builds/virtual_machine_build": {
      "get": {
        "operationId": "get:virtual_machines_builds_virtual_machine_build",
        "summary": "Get virtual machine build",
        "description": "Return virtual machine build information\n## Scopes\n- `virtual_machines`\n- `virtual_machines:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Build"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:read"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "virtual_machine_build[id]",
            "schema": {
              "type": "string"
            },
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Return virtual machine build information",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_build": {
                      "$ref": "#/components/schemas/GetVirtualMachinesBuildsVirtualMachineBuild200ResponseVirtualMachineBuild"
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "virtual_machine_build",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineBuildNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/certificates": {
      "get": {
        "operationId": "get:organization_certificates",
        "summary": "List certificates",
        "description": "Provides a full list of certificates\n## Scopes\n- `certificates`\n- `certificates:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Certificates"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/certificates",
              "api.katapult.io/core/v1/certificates:read"
            ]
          },
          {
            "Authenticator": [
              "certificates",
              "certificates:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Provides a full list of certificates",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "certificates": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationCertificates200ResponseCertificates"
                      }
                    }
                  },
                  "required": [
                    "pagination",
                    "certificates"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/certificates/certificate": {
      "get": {
        "operationId": "get:certificate",
        "summary": "Get certificate",
        "description": "Return details for a specific certificate\n## Scopes\n- `certificates`\n- `certificates:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Certificates"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/certificates",
              "api.katapult.io/core/v1/certificates:read"
            ]
          },
          {
            "Authenticator": [
              "certificates",
              "certificates:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "certificate[id]",
            "schema": {
              "type": "string"
            },
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Return details for a specific certificate",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "certificate": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Certificate"
                      }
                    }
                  },
                  "required": [
                    "certificate"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/CertificateNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/virtual_machine/console_sessions": {
      "post": {
        "operationId": "post:virtual_machine_console_sessions",
        "summary": "Create console session",
        "description": "Creates a new console session which can be opened in a browser\n## Scopes\n- `virtual_machines`\n- `virtual_machines:console`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Console"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:console"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:console"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine": {
                    "$ref": "#/components/schemas/VirtualMachineLookup"
                  }
                },
                "required": [
                  "virtual_machine"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Creates a new console session which can be opened in a browser",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "console_session": {
                      "$ref": "#/components/schemas/PostVirtualMachineConsoleSessions201ResponseConsoleSession"
                    }
                  },
                  "required": [
                    "console_session"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashVirtualMachineMustBeStarted406Res"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/container_registry/repositories": {
      "get": {
        "operationId": "get:organization_container_registry_repositories",
        "summary": "List container registry repositories",
        "description": "Returns a list of all container registry repositories for a given organization\n## Scopes\n- `container_registry`\n- `container_registry:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Container registry"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/container_registry",
              "api.katapult.io/core/v1/container_registry:read"
            ]
          },
          {
            "Authenticator": [
              "container_registry",
              "container_registry:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "region[id]",
            "schema": {
              "type": "string"
            },
            "description": "The region for which to return repositories."
          },
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization for which to return repositories. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization for which to return repositories. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all container registry repositories for a given organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "repositories": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ContainerRegistryRepository"
                      },
                      "description": "The container registry repositories for the organization"
                    }
                  },
                  "required": [
                    "pagination",
                    "repositories"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ContainerRegistryRegionNotFoundOrganizationNotFound404Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/container_registry/repositories/repository/artifacts": {
      "get": {
        "operationId": "get:container_registry_repository_artifacts",
        "summary": "List container registry artifacts",
        "description": "Returns a list of all container registry artifacts for a given repository\n## Scopes\n- `container_registry`\n- `container_registry:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Container registry"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/container_registry",
              "api.katapult.io/core/v1/container_registry:read"
            ]
          },
          {
            "Authenticator": [
              "container_registry",
              "container_registry:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "region[id]",
            "schema": {
              "type": "string"
            },
            "description": "The region in which the artifacts exists."
          },
          {
            "in": "query",
            "name": "repository[id]",
            "schema": {
              "type": "string"
            },
            "description": "The repository for which the artifacts should be returned. \n\n All 'repository[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "repository[name]",
            "schema": {
              "type": "string"
            },
            "description": "The repository for which the artifacts should be returned. \n\n All 'repository[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all container registry artifacts for a given repository",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "artifacts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ContainerRegistryArtifact"
                      },
                      "description": "The container registry artifacts for the repository"
                    }
                  },
                  "required": [
                    "pagination",
                    "artifacts"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ContainerRegistryRegionNotFoundRepositoryNotFound404Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/container_registry/artifacts/artifact": {
      "get": {
        "operationId": "get:container_registry_artifact",
        "summary": "Get container registry artifact details",
        "description": "Returns full details for a given container registry artifact\n## Scopes\n- `container_registry`\n- `container_registry:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Container registry"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/container_registry",
              "api.katapult.io/core/v1/container_registry:read"
            ]
          },
          {
            "Authenticator": [
              "container_registry",
              "container_registry:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "region[id]",
            "schema": {
              "type": "string"
            },
            "description": "The region in which the artifact to be returned exists."
          },
          {
            "in": "query",
            "name": "repository[id]",
            "schema": {
              "type": "string"
            },
            "description": "The repository in which the artifact to be returned exists. \n\n All 'repository[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "repository[name]",
            "schema": {
              "type": "string"
            },
            "description": "The repository in which the artifact to be returned exists. \n\n All 'repository[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "artifact[id]",
            "schema": {
              "type": "string"
            },
            "description": "The artifact to be returned. \n\n All 'artifact[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "artifact[digest]",
            "schema": {
              "type": "string"
            },
            "description": "The artifact to be returned. \n\n All 'artifact[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "artifact[tag]",
            "schema": {
              "type": "string"
            },
            "description": "The artifact to be returned. \n\n All 'artifact[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns full details for a given container registry artifact",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "artifact": {
                      "description": "The container registry artifact",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/ContainerRegistryArtifact"
                        }
                      ]
                    },
                    "blobs": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ContainerRegistryBlob"
                      },
                      "description": "The blobs for the artifact"
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ContainerRegistryTag"
                      },
                      "description": "The tags for the artifact"
                    }
                  },
                  "required": [
                    "artifact",
                    "blobs",
                    "tags"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ArtifactNotFoundContainerRegistryRegionNotFoundRepositoryNotFound404Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:container_registry_artifact",
        "summary": "Delete a container registry artifact",
        "description": "Deletes a container registry artifact\n## Scopes\n- `container_registry`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Container registry"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/container_registry"
            ]
          },
          {
            "Authenticator": [
              "container_registry"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "region": {
                    "$ref": "#/components/schemas/ContainerRegistryRegionLookup"
                  },
                  "repository": {
                    "$ref": "#/components/schemas/ContainerRegistryRepositoryLookup"
                  },
                  "artifact": {
                    "$ref": "#/components/schemas/ContainerRegistryArtifactLookup"
                  }
                },
                "required": [
                  "region",
                  "repository",
                  "artifact"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deletes a container registry artifact",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "artifact": {
                      "description": "The deleted artifact",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/ContainerRegistryArtifact"
                        }
                      ]
                    }
                  },
                  "required": [
                    "artifact"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ArtifactNotFoundContainerRegistryRegionNotFoundRepositoryNotFound404Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/container_registry/repositories/repository": {
      "delete": {
        "operationId": "delete:container_registry_repository",
        "summary": "Delete container registry repository",
        "description": "Deletes a container registry repository, along with all its artifacts\n## Scopes\n- `container_registry`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Container registry"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/container_registry"
            ]
          },
          {
            "Authenticator": [
              "container_registry"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "region": {
                    "$ref": "#/components/schemas/ContainerRegistryRegionLookup"
                  },
                  "repository": {
                    "$ref": "#/components/schemas/ContainerRegistryRepositoryLookup"
                  }
                },
                "required": [
                  "region",
                  "repository"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deletes a container registry repository, along with all its artifacts",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "repository": {
                      "description": "The repository being deleted",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/ContainerRegistryRepository"
                        }
                      ]
                    },
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  },
                  "required": [
                    "repository",
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ContainerRegistryRegionNotFoundRepositoryNotFound404Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/countries": {
      "get": {
        "operationId": "get:countries",
        "summary": "List countries",
        "description": "Return a list of all countries available in Katapult",
        "tags": [
          "Countries"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of all countries available in Katapult",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "countries": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetCountries200ResponseCountries"
                      },
                      "description": "The list of countries"
                    }
                  },
                  "required": [
                    "pagination",
                    "countries"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/countries/country": {
      "get": {
        "operationId": "get:country",
        "summary": "Get country",
        "description": "Return details for a specific country",
        "tags": [
          "Countries"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "country[id]",
            "schema": {
              "type": "string"
            },
            "description": "The country to return. \n\n All 'country[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "country[iso_code2]",
            "schema": {
              "type": "string"
            },
            "description": "The country to return. \n\n All 'country[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "country[iso_code3]",
            "schema": {
              "type": "string"
            },
            "description": "The country to return. \n\n All 'country[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Return details for a specific country",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "country": {
                      "description": "The country details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/Country"
                        }
                      ]
                    }
                  },
                  "required": [
                    "country"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/CountryNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/countries/country/country_states": {
      "get": {
        "operationId": "get:country_country_states",
        "summary": "List country states",
        "description": "Return a list of all country states for a specific country",
        "tags": [
          "Country states"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "country[id]",
            "schema": {
              "type": "string"
            },
            "description": "The country to return states for. \n\n All 'country[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "country[iso_code2]",
            "schema": {
              "type": "string"
            },
            "description": "The country to return states for. \n\n All 'country[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "country[iso_code3]",
            "schema": {
              "type": "string"
            },
            "description": "The country to return states for. \n\n All 'country[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of all country states for a specific country",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "country_states": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetCountryCountryStates200ResponseCountryStates"
                      },
                      "description": "The list of country states for the given country"
                    }
                  },
                  "required": [
                    "pagination",
                    "country_states"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/CountryNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/country_states/country_state": {
      "get": {
        "operationId": "get:country_state",
        "summary": "Get country state",
        "description": "Return details for a specific country state",
        "tags": [
          "Country states"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "country_state[id]",
            "schema": {
              "type": "string"
            },
            "description": "The country state to return."
          }
        ],
        "responses": {
          "200": {
            "description": "Return details for a specific country state",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "country_state": {
                      "description": "The country state details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/CountryState"
                        }
                      ]
                    }
                  },
                  "required": [
                    "country_state"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/CountryStateNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/currencies": {
      "get": {
        "operationId": "get:currencies",
        "summary": "List currencies",
        "description": "Return a list of all currencies available in Katapult",
        "tags": [
          "Currencies"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of all currencies available in Katapult",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "currencies": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetCurrencies200ResponseCurrencies"
                      },
                      "description": "The list of currencies"
                    }
                  },
                  "required": [
                    "pagination",
                    "currencies"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/currencies/currency": {
      "get": {
        "operationId": "get:currency",
        "summary": "Get currency",
        "description": "Return details for a specific currency",
        "tags": [
          "Currencies"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "currency[id]",
            "schema": {
              "type": "string"
            },
            "description": "The currency to return. \n\n All 'currency[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "currency[iso_code]",
            "schema": {
              "type": "string"
            },
            "description": "The currency to return. \n\n All 'currency[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Return details for a specific currency",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "currency": {
                      "description": "The currency details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/Currency"
                        }
                      ]
                    }
                  },
                  "required": [
                    "currency"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/CurrencyNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/dns_zones": {
      "get": {
        "operationId": "get:organization_dns_zones",
        "summary": "List DNS zones",
        "description": "Return a list of all DNS zones\n## Scopes\n- `dns`\n- `dns:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "DNS zones"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/dns",
              "api.katapult.io/core/v1/dns:read"
            ]
          },
          {
            "Authenticator": [
              "dns",
              "dns:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of all DNS zones",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "dns_zones": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/DNSZone"
                      },
                      "description": "The DNS zones for the provided organization"
                    }
                  },
                  "required": [
                    "pagination",
                    "dns_zones"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:organization_dns_zones",
        "summary": "Create DNS zone",
        "description": "Create a new DNS zone within an existing organization\n## Scopes\n- `dns`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "DNS zones"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/dns"
            ]
          },
          {
            "Authenticator": [
              "dns"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/DNSZoneArguments"
                  },
                  "verified": {
                    "type": "boolean",
                    "description": "Creates a zone without requiring any verification to be performed. Internal use only (this\nrequires the 'dns_zones:create:verified' capability).\n"
                  }
                },
                "required": [
                  "organization",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a new DNS zone within an existing organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "dns_zone": {
                      "description": "The new DNS zone that has been created",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DNSZone"
                        }
                      ]
                    }
                  },
                  "required": [
                    "dns_zone"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedPermissionDeniedResourceCreationRestricted403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/dns_zones/nameservers": {
      "get": {
        "operationId": "get:organization_dns_zones_nameservers",
        "summary": "List nameservers",
        "description": "Return a list of nameservers that should be used for DNS zones within a given organization\n## Scopes\n- `dns`\n- `dns:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "DNS zones"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/dns",
              "api.katapult.io/core/v1/dns:read"
            ]
          },
          {
            "Authenticator": [
              "dns",
              "dns:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of nameservers that should be used for DNS zones within a given organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "nameservers": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "nameservers"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/dns_zones/dns_zone": {
      "get": {
        "operationId": "get:dns_zone",
        "summary": "Get DNS zone",
        "description": "Return details for a specific DNS zone\n## Scopes\n- `dns`\n- `dns:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "DNS zones"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/dns",
              "api.katapult.io/core/v1/dns:read"
            ]
          },
          {
            "Authenticator": [
              "dns",
              "dns:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "dns_zone[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'dns_zone[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "dns_zone[name]",
            "schema": {
              "type": "string"
            },
            "description": "All 'dns_zone[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Return details for a specific DNS zone",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "dns_zone": {
                      "description": "The DNS zones for the provided organization",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DNSZone"
                        }
                      ]
                    }
                  },
                  "required": [
                    "dns_zone"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DNSZoneNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:dns_zone",
        "summary": "Update DNS zone",
        "description": "Update properties for a DNS zone\n## Scopes\n- `dns`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "DNS zones"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/dns"
            ]
          },
          {
            "Authenticator": [
              "dns"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "dns_zone": {
                    "$ref": "#/components/schemas/DNSZoneLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/DNSZoneArguments"
                  }
                },
                "required": [
                  "dns_zone",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update properties for a DNS zone",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "dns_zone": {
                      "description": "The DNS zones for the provided organization",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DNSZone"
                        }
                      ]
                    }
                  },
                  "required": [
                    "dns_zone"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DNSZoneNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:dns_zone",
        "summary": "Delete DNS zone",
        "description": "Delete a DNS zone\n## Scopes\n- `dns`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "DNS zones"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/dns"
            ]
          },
          {
            "Authenticator": [
              "dns"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "dns_zone": {
                    "$ref": "#/components/schemas/DNSZoneLookup"
                  }
                },
                "required": [
                  "dns_zone"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete a DNS zone",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "deleted": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "deleted"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DNSZoneNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/dns_zones/dns_zone/verify": {
      "post": {
        "operationId": "post:dns_zone_verify",
        "summary": "Verify DNS zone",
        "description": "Attempt to verify either the nameservers or root TXT record for a given DNS zone\n## Scopes\n- `dns`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "DNS zones"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/dns"
            ]
          },
          {
            "Authenticator": [
              "dns"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "dns_zone": {
                    "$ref": "#/components/schemas/DNSZoneLookup"
                  }
                },
                "required": [
                  "dns_zone"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attempt to verify either the nameservers or root TXT record for a given DNS zone",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "dns_zone": {
                      "description": "The DNS zones for the provided organization",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DNSZone"
                        }
                      ]
                    }
                  },
                  "required": [
                    "dns_zone"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DNSZoneNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/DNSZoneNotVerifiedResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/data_centers": {
      "get": {
        "operationId": "get:data_centers",
        "summary": "List data centers",
        "description": "Provides a full list of all data centers",
        "tags": [
          "Data centers"
        ],
        "parameters": [

        ],
        "responses": {
          "200": {
            "description": "Provides a full list of all data centers",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data_centers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetDataCenters200ResponseDataCenters"
                      }
                    }
                  },
                  "required": [
                    "data_centers"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/data_centers/data_center": {
      "get": {
        "operationId": "get:data_center",
        "summary": "Get data center",
        "description": "Provide details for a specific data center",
        "tags": [
          "Data centers"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "data_center[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'data_center[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "data_center[permalink]",
            "schema": {
              "type": "string"
            },
            "description": "All 'data_center[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Provide details for a specific data center",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data_center": {
                      "$ref": "#/components/schemas/GetDataCenter200ResponseDataCenter"
                    }
                  },
                  "required": [
                    "data_center"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DataCenterNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/data_centers/data_center/default_network": {
      "get": {
        "operationId": "get:data_center_default_network",
        "summary": "Get default network of data center",
        "description": "Provide details of default network for a data center",
        "tags": [
          "Data centers"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "data_center[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'data_center[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "data_center[permalink]",
            "schema": {
              "type": "string"
            },
            "description": "All 'data_center[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Provide details of default network for a data center",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "network": {
                      "description": "The details for the requested network",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/GetDataCenterDefaultNetwork200ResponseNetwork"
                        }
                      ]
                    }
                  },
                  "required": [
                    "network"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DataCenterNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/disk_io_profiles": {
      "get": {
        "operationId": "get:organization_disk_io_profiles",
        "summary": "List disk IO profiles",
        "description": "Return a list of all disk IO profiles available to this organization",
        "tags": [
          "Disk IO profiles"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to find disk IO profiles for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to find disk IO profiles for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of all disk IO profiles available to this organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "disk_io_profiles": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/DiskIOProfile"
                      },
                      "description": "The list of disk IO profiles"
                    }
                  },
                  "required": [
                    "pagination",
                    "disk_io_profiles"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/disk_backup_policies": {
      "get": {
        "operationId": "get:organization_disk_backup_policies",
        "summary": "List disk backup policies",
        "description": "Returns a list of all disk backup policies for a given organization\n## Scopes\n- `disk_backup_policies`\n- `disk_backup_policies:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk backup policies"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_backup_policies",
              "api.katapult.io/core/v1/disk_backup_policies:read"
            ]
          },
          {
            "Authenticator": [
              "disk_backup_policies",
              "disk_backup_policies:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to return disk backup policies for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to return disk backup policies for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all disk backup policies for a given organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "disk_backup_policies": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationDiskBackupPolicies200ResponseDiskBackupPolicies"
                      },
                      "description": "The disk backup policies for the provided organization"
                    }
                  },
                  "required": [
                    "pagination",
                    "disk_backup_policies"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/virtual_machine/disk_backup_policies": {
      "get": {
        "operationId": "get:virtual_machine_disk_backup_policies",
        "summary": "List disk backup policies for virtual machine",
        "description": "Returns a list of all disk backup policies for a given virtual machine\n## Scopes\n- `disk_backup_policies`\n- `disk_backup_policies:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk backup policies"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_backup_policies",
              "api.katapult.io/core/v1/disk_backup_policies:read"
            ]
          },
          {
            "Authenticator": [
              "disk_backup_policies",
              "disk_backup_policies:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "virtual_machine[id]",
            "schema": {
              "type": "string"
            },
            "description": "The virtual machine to return disk backup policies for. \n\n All 'virtual_machine[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "virtual_machine[fqdn]",
            "schema": {
              "type": "string"
            },
            "description": "The virtual machine to return disk backup policies for. \n\n All 'virtual_machine[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "include_disks",
            "in": "query",
            "schema": {
              "type": "boolean",
              "description": "If true, the returned list will include backup policies owned by disks assigned to this virtual machine in addition to those that belong to the whole virtual machine"
            },
            "description": "If true, the returned list will include backup policies owned by disks assigned to this virtual machine in addition to those that belong to the whole virtual machine"
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all disk backup policies for a given virtual machine",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "disk_backup_policies": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetVirtualMachineDiskBackupPolicies200ResponseDiskBackupPolicies"
                      },
                      "description": "The disk backup policies for the provided virtual machine"
                    }
                  },
                  "required": [
                    "pagination",
                    "disk_backup_policies"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:virtual_machine_disk_backup_policies",
        "summary": "Create disk backup policy for Virtual Machine",
        "description": "Creates a new disk backup policy for a virtual machine\n## Scopes\n- `disk_backup_policies`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk backup policies"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_backup_policies"
            ]
          },
          {
            "Authenticator": [
              "disk_backup_policies"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine": {
                    "$ref": "#/components/schemas/VirtualMachineLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/DiskBackupPolicyArguments"
                  }
                },
                "required": [
                  "virtual_machine",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Creates a new disk backup policy for a virtual machine",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk_backup_policy": {
                      "description": "The new disk backup policy that has been created",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostVirtualMachineDiskBackupPolicies200ResponseDiskBackupPolicy"
                        }
                      ]
                    }
                  },
                  "required": [
                    "disk_backup_policy"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disks/disk/disk_backup_policies": {
      "get": {
        "operationId": "get:disk_disk_backup_policies",
        "summary": "List disk backup policies for disk",
        "description": "Returns a list of all disk backup policies for a given disk\n## Scopes\n- `disk_backup_policies`\n- `disk_backup_policies:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk backup policies"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_backup_policies",
              "api.katapult.io/core/v1/disk_backup_policies:read"
            ]
          },
          {
            "Authenticator": [
              "disk_backup_policies",
              "disk_backup_policies:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "disk[id]",
            "schema": {
              "type": "string"
            },
            "description": "The disk to return disk backup policies for."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all disk backup policies for a given disk",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "disk_backup_policies": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetDiskDiskBackupPolicies200ResponseDiskBackupPolicies"
                      },
                      "description": "The disk backup policies for the provided disk"
                    }
                  },
                  "required": [
                    "pagination",
                    "disk_backup_policies"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DiskNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:disk_disk_backup_policies",
        "summary": "Create disk backup policy for disk",
        "description": "Creates a new disk backup policy for a disk\n## Scopes\n- `disk_backup_policies`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk backup policies"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_backup_policies"
            ]
          },
          {
            "Authenticator": [
              "disk_backup_policies"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "disk": {
                    "$ref": "#/components/schemas/DiskLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/DiskBackupPolicyArguments"
                  }
                },
                "required": [
                  "disk",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Creates a new disk backup policy for a disk",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk_backup_policy": {
                      "description": "The new disk backup policy that has been created",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostDiskDiskBackupPolicies200ResponseDiskBackupPolicy"
                        }
                      ]
                    }
                  },
                  "required": [
                    "disk_backup_policy"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DiskNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disk_backup_policies/disk_backup_policy": {
      "get": {
        "operationId": "get:disk_backup_policy",
        "summary": "Get disk backup policy",
        "description": "Returns information about a specific disk backup policy\n## Scopes\n- `disk_backup_policies`\n- `disk_backup_policies:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk backup policies"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_backup_policies",
              "api.katapult.io/core/v1/disk_backup_policies:read"
            ]
          },
          {
            "Authenticator": [
              "disk_backup_policies",
              "disk_backup_policies:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "disk_backup_policy[id]",
            "schema": {
              "type": "string"
            },
            "description": "The disk backup policy to get information for."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns information about a specific disk backup policy",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk_backup_policy": {
                      "description": "The located disk backup policy",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/GetDiskBackupPolicy200ResponseDiskBackupPolicy"
                        }
                      ]
                    }
                  },
                  "required": [
                    "disk_backup_policy"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DiskBackupPolicyNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:disk_backup_policy",
        "summary": "Delete disk backup policy",
        "description": "Deletes a disk backup policy and moves it to the trash\n## Scopes\n- `disk_backup_policies`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk backup policies"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_backup_policies"
            ]
          },
          {
            "Authenticator": [
              "disk_backup_policies"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "disk_backup_policy": {
                    "$ref": "#/components/schemas/DiskBackupPolicyLookup"
                  }
                },
                "required": [
                  "disk_backup_policy"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deletes a disk backup policy and moves it to the trash",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk_backup_policy": {
                      "description": "The disk backup policy that has been destroyed",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DeleteDiskBackupPolicy200ResponseDiskBackupPolicy"
                        }
                      ]
                    }
                  },
                  "required": [
                    "disk_backup_policy"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DiskBackupPolicyNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:disk_backup_policy",
        "summary": "Update a disk backup policy",
        "description": "Updates the disk backup policy with the provided details\n## Scopes\n- `disk_backup_policies`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk backup policies"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_backup_policies"
            ]
          },
          {
            "Authenticator": [
              "disk_backup_policies"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "disk_backup_policy": {
                    "$ref": "#/components/schemas/DiskBackupPolicyLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/DiskBackupPolicyArguments"
                  }
                },
                "required": [
                  "disk_backup_policy",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updates the disk backup policy with the provided details",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk_backup_policy": {
                      "description": "The disk backup policy that has been updated",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PatchDiskBackupPolicy200ResponseDiskBackupPolicy"
                        }
                      ]
                    }
                  },
                  "required": [
                    "disk_backup_policy"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DiskBackupPolicyNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disk_backup_policies/disk_backup_policy/schedule": {
      "delete": {
        "operationId": "delete:disk_backup_policy_schedule",
        "summary": "Schedule delete disk backup policy",
        "description": "Schedules a disk backup policy to be moved to the trash at a specific time. The backup policy will continue to function as normal until this time is reached.\n## Scopes\n- `disk_backup_policies`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk backup policies"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_backup_policies"
            ]
          },
          {
            "Authenticator": [
              "disk_backup_policies"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "disk_backup_policy": {
                    "$ref": "#/components/schemas/DiskBackupPolicyLookup"
                  },
                  "timestamp": {
                    "type": "integer",
                    "description": "The time the disk backup policy will be moved to the trash automatically."
                  }
                },
                "required": [
                  "disk_backup_policy",
                  "timestamp"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Schedules a disk backup policy to be moved to the trash at a specific time. The backup policy will continue to function as normal until this time is reached.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk_backup_policy": {
                      "description": "The disk backup policy that has been scheduled for deletion",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DeleteDiskBackupPolicySchedule200ResponseDiskBackupPolicy"
                        }
                      ]
                    }
                  },
                  "required": [
                    "disk_backup_policy"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidTimestamp400Res"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DiskBackupPolicyNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disk_templates/disk_template/versions": {
      "get": {
        "operationId": "get:disk_template_versions",
        "summary": "List disk template versions",
        "description": "Return a list of all disk template versions for a specific disk template\n## Scopes\n- `disk_templates`\n- `disk_templates:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk template versions"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_templates",
              "api.katapult.io/core/v1/disk_templates:read"
            ]
          },
          {
            "Authenticator": [
              "disk_templates",
              "disk_templates:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "disk_template[id]",
            "schema": {
              "type": "string"
            },
            "description": "The disk template to return the versions for. \n\n All 'disk_template[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "disk_template[permalink]",
            "schema": {
              "type": "string"
            },
            "description": "The disk template to return the versions for. \n\n All 'disk_template[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of all disk template versions for a specific disk template",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk_template": {
                      "$ref": "#/components/schemas/GetDiskTemplateVersions200ResponseDiskTemplate"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "disk_template_versions": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetDiskTemplateVersions200ResponseDiskTemplateVersions"
                      },
                      "description": "The disk template versions for the provided template"
                    }
                  },
                  "required": [
                    "disk_template",
                    "pagination",
                    "disk_template_versions"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DiskTemplateNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disk_template_versions/disk_template_version": {
      "get": {
        "operationId": "get:disk_template_version",
        "summary": "Get disk template version",
        "description": "Return details for a specific disk template version\n## Scopes\n- `disk_templates`\n- `disk_templates:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk template versions"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_templates",
              "api.katapult.io/core/v1/disk_templates:read"
            ]
          },
          {
            "Authenticator": [
              "disk_templates",
              "disk_templates:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "disk_template_version[id]",
            "schema": {
              "type": "string"
            },
            "description": "The disk template version to return."
          }
        ],
        "responses": {
          "200": {
            "description": "Return details for a specific disk template version",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk_template_version": {
                      "description": "The disk template version details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/GetDiskTemplateVersion200ResponseDiskTemplateVersion"
                        }
                      ]
                    }
                  },
                  "required": [
                    "disk_template_version"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DiskTemplateVersionNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disk_template_versions/disk_template_version/spec": {
      "get": {
        "operationId": "get:disk_template_version_spec",
        "summary": "Get disk template version spec",
        "description": "Return details provided by this template's specification\n## Scopes\n- `disk_templates`\n- `disk_templates:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk template versions"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_templates",
              "api.katapult.io/core/v1/disk_templates:read"
            ]
          },
          {
            "Authenticator": [
              "disk_templates",
              "disk_templates:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "disk_template_version[id]",
            "schema": {
              "type": "string"
            },
            "description": "The disk template version to return."
          }
        ],
        "responses": {
          "200": {
            "description": "Return details provided by this template's specification",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk_template_version": {
                      "description": "The disk template version details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/GetDiskTemplateVersionSpec200ResponseDiskTemplateVersion"
                        }
                      ]
                    },
                    "spec": {
                      "$ref": "#/components/schemas/TemplateSpec"
                    }
                  },
                  "required": [
                    "disk_template_version",
                    "spec"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DiskTemplateVersionNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/disk_templates": {
      "get": {
        "operationId": "get:organization_disk_templates",
        "summary": "List disk templates",
        "description": "Return a list of all disk templates owned by an organization\n## Scopes\n- `disk_templates`\n- `disk_templates:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk templates"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_templates",
              "api.katapult.io/core/v1/disk_templates:read"
            ]
          },
          {
            "Authenticator": [
              "disk_templates",
              "disk_templates:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to find disk templates for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to find disk templates for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "include_universal",
            "in": "query",
            "schema": {
              "type": "boolean",
              "description": "Whether or not to include universal templates"
            },
            "description": "Whether or not to include universal templates"
          },
          {
            "in": "query",
            "name": "operating_system[id]",
            "schema": {
              "type": "string"
            },
            "description": "An operating system to use to filter disk templates."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of all disk templates owned by an organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "disk_templates": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationDiskTemplates200ResponseDiskTemplates"
                      },
                      "description": "The list of disk templates"
                    }
                  },
                  "required": [
                    "pagination",
                    "disk_templates"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OperatingSystemNotFoundOrganizationNotFound404Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disk_templates/disk_template": {
      "get": {
        "operationId": "get:disk_template",
        "summary": "Get disk template",
        "description": "Return details for a specific disk template\n## Scopes\n- `disk_templates`\n- `disk_templates:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disk templates"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disk_templates",
              "api.katapult.io/core/v1/disk_templates:read"
            ]
          },
          {
            "Authenticator": [
              "disk_templates",
              "disk_templates:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "disk_template[id]",
            "schema": {
              "type": "string"
            },
            "description": "The disk template to return. \n\n All 'disk_template[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "disk_template[permalink]",
            "schema": {
              "type": "string"
            },
            "description": "The disk template to return. \n\n All 'disk_template[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Return details for a specific disk template",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk_template": {
                      "description": "The disk template details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/GetDiskTemplate200ResponseDiskTemplate"
                        }
                      ]
                    }
                  },
                  "required": [
                    "disk_template"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DiskTemplateNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/disks": {
      "get": {
        "operationId": "get:organization_disks",
        "summary": "List disks",
        "description": "Return a list of all disks owned by an organization\n## Scopes\n- `disks`\n- `disks:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disks",
              "api.katapult.io/core/v1/disks:read"
            ]
          },
          {
            "Authenticator": [
              "disks",
              "disks:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to find disks for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to find disks for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "annotations[][key]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "in": "query",
            "name": "annotations[][value]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of all disks owned by an organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "disk": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationDisks200ResponseDisk"
                      },
                      "description": "The list of disks"
                    }
                  },
                  "required": [
                    "pagination",
                    "disk"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:organization_disks",
        "summary": "Create disk",
        "description": "Create a new disk for a given organization.\n## Scopes\n- `disks`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disks"
            ]
          },
          {
            "Authenticator": [
              "disks"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/DiskArguments"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "organization",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a new disk for a given organization.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk": {
                      "description": "The disk that has been created.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostOrganizationDisks201ResponseDisk"
                        }
                      ]
                    },
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      },
                      "description": "Annotations for this disk"
                    }
                  },
                  "required": [
                    "disk",
                    "task",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/TaskQueueingErrorResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disks/disk": {
      "get": {
        "operationId": "get:disk",
        "summary": "Get disk",
        "description": "Return details for a specific disk\n## Scopes\n- `disks`\n- `disks:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disks",
              "api.katapult.io/core/v1/disks:read"
            ]
          },
          {
            "Authenticator": [
              "disks",
              "disks:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "disk[id]",
            "schema": {
              "type": "string"
            },
            "description": "The disk to return."
          }
        ],
        "responses": {
          "200": {
            "description": "Return details for a specific disk",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk": {
                      "description": "The disk details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/GetDisk200ResponseDisk"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "disk",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DiskNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:disk",
        "summary": "Update disk",
        "description": "Update a disk for a given organization.\n## Scopes\n- `disks`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disks"
            ]
          },
          {
            "Authenticator": [
              "disks"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "disk": {
                    "$ref": "#/components/schemas/DiskLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/DiskArguments"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "disk",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update a disk for a given organization.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk": {
                      "description": "The disk that has been updated.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PatchDisk200ResponseDisk"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      },
                      "description": "Annotations for this disk"
                    }
                  },
                  "required": [
                    "disk",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DiskNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/UnassignedDiskValidationError422Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:disk",
        "summary": "Delete disk",
        "description": "Deletes a disk and moves it to the trash\n## Scopes\n- `disks`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disks"
            ]
          },
          {
            "Authenticator": [
              "disks"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "disk": {
                    "$ref": "#/components/schemas/DiskLookup"
                  }
                },
                "required": [
                  "disk"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deletes a disk and moves it to the trash",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk": {
                      "description": "The disk that has been move to the trash.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DeleteDisk200ResponseDisk"
                        }
                      ]
                    },
                    "trash_object": {
                      "$ref": "#/components/schemas/TrashObject"
                    }
                  },
                  "required": [
                    "disk",
                    "trash_object"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DiskNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disks/disk/assign": {
      "post": {
        "operationId": "post:disk_assign",
        "summary": "Assign disk to virtual machine",
        "description": "Assign a disk to a virtual machine.\n## Scopes\n- `disks`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disks"
            ]
          },
          {
            "Authenticator": [
              "disks"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "disk": {
                    "$ref": "#/components/schemas/DiskLookup"
                  },
                  "virtual_machine": {
                    "$ref": "#/components/schemas/VirtualMachineLookup"
                  }
                },
                "required": [
                  "disk",
                  "virtual_machine"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Assign a disk to a virtual machine.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk": {
                      "description": "The disk that has been assigned to a virtual machine.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostDiskAssign200ResponseDisk"
                        }
                      ]
                    }
                  },
                  "required": [
                    "disk"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DiskNotFoundVirtualMachineNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/UnableToAssignResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disks/disk/unassign": {
      "post": {
        "operationId": "post:disk_unassign",
        "summary": "Unassign disk from virtual machine",
        "description": "Unassign a disk from a virtual machine.\n## Scopes\n- `disks`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disks"
            ]
          },
          {
            "Authenticator": [
              "disks"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "disk": {
                    "$ref": "#/components/schemas/DiskLookup"
                  }
                },
                "required": [
                  "disk"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Unassign a disk from a virtual machine.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk": {
                      "description": "The disk that has been unassigned from a virtual machine.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostDiskUnassign200ResponseDisk"
                        }
                      ]
                    }
                  },
                  "required": [
                    "disk"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DiskNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/UnableToUnassignResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disks/disk/attach": {
      "post": {
        "operationId": "post:disk_attach",
        "summary": "Attach disk to virtual machine",
        "description": "Attach a disk to its virtual machine.\n## Scopes\n- `disks`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disks"
            ]
          },
          {
            "Authenticator": [
              "disks"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "disk": {
                    "$ref": "#/components/schemas/DiskLookup"
                  }
                },
                "required": [
                  "disk"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attach a disk to its virtual machine.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk": {
                      "description": "The disk that will be attached to its virtual machine.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostDiskAttach200ResponseDisk"
                        }
                      ]
                    },
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  },
                  "required": [
                    "disk",
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DiskNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashTaskQueueingError406Res"
          },
          "422": {
            "$ref": "#/components/responses/UnassignedDiskResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disks/disk/detach": {
      "post": {
        "operationId": "post:disk_detach",
        "summary": "Detach disk from virtual machine",
        "description": "Detach a disk from its virtual machine.\n## Scopes\n- `disks`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disks"
            ]
          },
          {
            "Authenticator": [
              "disks"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "disk": {
                    "$ref": "#/components/schemas/DiskLookup"
                  }
                },
                "required": [
                  "disk"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Detach a disk from its virtual machine.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk": {
                      "description": "The disk that will be detached from its virtual machine.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostDiskDetach200ResponseDisk"
                        }
                      ]
                    },
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  },
                  "required": [
                    "disk",
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DiskNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashTaskQueueingError406Res"
          },
          "422": {
            "$ref": "#/components/responses/UnassignedDiskResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disks/disk/resize": {
      "put": {
        "operationId": "put:disk_resize",
        "summary": "Resize disk",
        "description": "Resize a disk.\n## Scopes\n- `disks`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disks"
            ]
          },
          {
            "Authenticator": [
              "disks"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "disk": {
                    "$ref": "#/components/schemas/DiskLookup"
                  },
                  "size_in_gb": {
                    "type": "integer"
                  },
                  "resize_method": {
                    "$ref": "#/components/schemas/ResizeMethodEnum"
                  }
                },
                "required": [
                  "disk",
                  "size_in_gb"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resize a disk.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk": {
                      "description": "The disk that has been resized.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PutDiskResize200ResponseDisk"
                        }
                      ]
                    },
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  },
                  "required": [
                    "disk",
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DiskNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashTaskQueueingError406Res"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/disks/disk/io_profile": {
      "put": {
        "operationId": "put:disk_io_profile",
        "summary": "Change disk IO profile",
        "description": "Change disk IO profile.\n## Scopes\n- `disks`\n- `disks:io_profile`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disks",
              "api.katapult.io/core/v1/disks:io_profile"
            ]
          },
          {
            "Authenticator": [
              "disks",
              "disks:io_profile"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "disk": {
                    "$ref": "#/components/schemas/DiskLookup"
                  },
                  "io_profile": {
                    "$ref": "#/components/schemas/DiskIOProfileLookup"
                  }
                },
                "required": [
                  "disk",
                  "io_profile"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Change disk IO profile.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "disk": {
                      "description": "The disk that has been updated.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PutDiskIOProfile200ResponseDisk"
                        }
                      ]
                    },
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  },
                  "required": [
                    "disk",
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DiskIOProfileNotFoundDiskNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashTaskQueueingError406Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/virtual_machine/disks": {
      "get": {
        "operationId": "get:virtual_machine_disks",
        "summary": "List virtual machine disks",
        "description": "Return a list of all disks for a given virtual machine\n## Scopes\n- `disks`\n- `disks:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Disks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/disks",
              "api.katapult.io/core/v1/disks:read"
            ]
          },
          {
            "Authenticator": [
              "disks",
              "disks:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "virtual_machine[id]",
            "schema": {
              "type": "string"
            },
            "description": "The virtual machine to find disks for. \n\n All 'virtual_machine[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "virtual_machine[fqdn]",
            "schema": {
              "type": "string"
            },
            "description": "The virtual machine to find disks for. \n\n All 'virtual_machine[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of all disks for a given virtual machine",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "disks": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetVirtualMachineDisks200ResponseDisks"
                      },
                      "description": "The list of disks"
                    }
                  },
                  "required": [
                    "pagination",
                    "disks"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/file_storage_volumes": {
      "get": {
        "operationId": "get:organization_file_storage_volumes",
        "summary": "List file storage volumes",
        "description": "Returns a list of all file storage volumes for a given organization\n## Scopes\n- `file_storage_volumes`\n- `file_storage_volumes:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "File storage volumes"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/file_storage_volumes",
              "api.katapult.io/core/v1/file_storage_volumes:read"
            ]
          },
          {
            "Authenticator": [
              "file_storage_volumes",
              "file_storage_volumes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to return all file storage volumes for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to return all file storage volumes for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "annotations[][key]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "in": "query",
            "name": "annotations[][value]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all file storage volumes for a given organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "file_storage_volumes": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationFileStorageVolumes200ResponseFileStorageVolumes"
                      },
                      "description": "A list of all file storage volumes for the given organization."
                    }
                  },
                  "required": [
                    "pagination",
                    "file_storage_volumes"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:organization_file_storage_volumes",
        "summary": "Create file storage volume",
        "description": "Create a new file storage volume for a given organization.\n## Scopes\n- `file_storage_volumes`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "File storage volumes"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/file_storage_volumes"
            ]
          },
          {
            "Authenticator": [
              "file_storage_volumes"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/FileStorageVolumeArguments"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "organization",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a new file storage volume for a given organization.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "file_storage_volume": {
                      "description": "The file storage volume.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostOrganizationFileStorageVolumes201ResponseFileStorageVolume"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "file_storage_volume",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedPermissionDeniedResourceCreationRestricted403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/file_storage_volumes/file_storage_volume": {
      "get": {
        "operationId": "get:file_storage_volume",
        "summary": "Get file storage volume",
        "description": "Returns details for a file storage volume.\n## Scopes\n- `file_storage_volumes`\n- `file_storage_volumes:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "File storage volumes"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/file_storage_volumes",
              "api.katapult.io/core/v1/file_storage_volumes:read"
            ]
          },
          {
            "Authenticator": [
              "file_storage_volumes",
              "file_storage_volumes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "file_storage_volume[id]",
            "schema": {
              "type": "string"
            },
            "description": "The file storage volume to return."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns details for a file storage volume.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "file_storage_volume": {
                      "description": "The file storage volume.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/GetFileStorageVolume200ResponseFileStorageVolume"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "file_storage_volume",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/FileStorageVolumeNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:file_storage_volume",
        "summary": "Update file storage volume",
        "description": "Update a file storage volume with new properties.\n## Scopes\n- `file_storage_volumes`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "File storage volumes"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/file_storage_volumes"
            ]
          },
          {
            "Authenticator": [
              "file_storage_volumes"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "file_storage_volume": {
                    "$ref": "#/components/schemas/FileStorageVolumeLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/FileStorageVolumeArguments"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "file_storage_volume",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update a file storage volume with new properties.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "file_storage_volume": {
                      "description": "The file storage volume.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PatchFileStorageVolume200ResponseFileStorageVolume"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "file_storage_volume",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/FileStorageVolumeNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:file_storage_volume",
        "summary": "Delete file storage volume",
        "description": "Delete a file storage volume.\n## Scopes\n- `file_storage_volumes`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "File storage volumes"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/file_storage_volumes"
            ]
          },
          {
            "Authenticator": [
              "file_storage_volumes"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "file_storage_volume": {
                    "$ref": "#/components/schemas/FileStorageVolumeLookup"
                  }
                },
                "required": [
                  "file_storage_volume"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete a file storage volume.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "trash_object": {
                      "$ref": "#/components/schemas/TrashObject"
                    },
                    "file_storage_volume": {
                      "description": "The file storage volume that has been destroyed.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DeleteFileStorageVolume200ResponseFileStorageVolume"
                        }
                      ]
                    }
                  },
                  "required": [
                    "trash_object",
                    "file_storage_volume"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/FileStorageVolumeNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/gpu_types": {
      "get": {
        "operationId": "get:gpu_types",
        "summary": "List GPU types",
        "description": "Provides a full list of all GPU types",
        "tags": [
          "GPU types"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Provides a full list of all GPU types",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "gpu_types": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetGPUTypes200ResponseGPUTypes"
                      }
                    }
                  },
                  "required": [
                    "pagination",
                    "gpu_types"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/gpu_types/gpu_type": {
      "get": {
        "operationId": "get:gpu_type",
        "summary": "Get GPU type",
        "description": "Provide details for a specific GPU type",
        "tags": [
          "GPU types"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "gpu_type[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'gpu_type[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "gpu_type[permalink]",
            "schema": {
              "type": "string"
            },
            "description": "All 'gpu_type[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Provide details for a specific GPU type",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "gpu_type": {
                      "$ref": "#/components/schemas/GetGPUType200ResponseGPUType"
                    }
                  },
                  "required": [
                    "gpu_type"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/GPUTypeNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/data_centers/data_center/gpu_types": {
      "get": {
        "operationId": "get:data_center_gpu_types",
        "summary": "List GPU types for Data Center",
        "description": "Provides a list of all GPU types available in a given data center",
        "tags": [
          "GPU types"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "data_center[id]",
            "schema": {
              "type": "string"
            },
            "description": "The data center to list GPU types for. \n\n All 'data_center[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "data_center[permalink]",
            "schema": {
              "type": "string"
            },
            "description": "The data center to list GPU types for. \n\n All 'data_center[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Provides a list of all GPU types available in a given data center",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "gpu_types": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetDataCenterGPUTypes200ResponseGPUTypes"
                      }
                    }
                  },
                  "required": [
                    "pagination",
                    "gpu_types"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DataCenterNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/ip_addresses": {
      "get": {
        "operationId": "get:organization_ip_addresses",
        "summary": "List IP addresses",
        "description": "Returns a list of all IP addresses belonging to an organization\n## Scopes\n- `ip_addresses`\n- `ip_addresses:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "IP addresses"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/ip_addresses",
              "api.katapult.io/core/v1/ip_addresses:read"
            ]
          },
          {
            "Authenticator": [
              "ip_addresses",
              "ip_addresses:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to use when looking up IP addresses. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to use when looking up IP addresses. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "allocated",
            "in": "query",
            "schema": {
              "type": "boolean",
              "description": "If true, only return allocated IP addresss. If false, only return unallocated IP addresses."
            },
            "description": "If true, only return allocated IP addresss. If false, only return unallocated IP addresses."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all IP addresses belonging to an organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "ip_addresses": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationIPAddresses200ResponseIPAddresses"
                      },
                      "description": "The IP addresses belonging to this organization"
                    }
                  },
                  "required": [
                    "pagination",
                    "ip_addresses"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:organization_ip_addresses",
        "summary": "Create IP Address",
        "description": "Creates a new IP address on this organization\n## Scopes\n- `ip_addresses`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "IP addresses"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/ip_addresses"
            ]
          },
          {
            "Authenticator": [
              "ip_addresses"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "network": {
                    "$ref": "#/components/schemas/NetworkLookup"
                  },
                  "version": {
                    "$ref": "#/components/schemas/IPAddressVersionEnum"
                  },
                  "vip": {
                    "type": "boolean",
                    "description": "Whether or not to set this address as a VIP"
                  },
                  "label": {
                    "type": "string",
                    "description": "The label to give this address if setting it as a VIP"
                  }
                },
                "required": [
                  "organization",
                  "network",
                  "version"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Creates a new IP address on this organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "ip_address": {
                      "description": "The newly allocated IP address",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/IPAddress"
                        }
                      ]
                    }
                  },
                  "required": [
                    "ip_address"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/NetworkNotFoundOrganizationNotFound404Res"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/NoAvailableAddresses503Res"
          }
        }
      }
    },
    "/ip_addresses/ip_address": {
      "get": {
        "operationId": "get:ip_address",
        "summary": "Get IP address",
        "description": "Returns information about a specific IP address\n## Scopes\n- `ip_addresses`\n- `ip_addresses:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "IP addresses"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/ip_addresses",
              "api.katapult.io/core/v1/ip_addresses:read"
            ]
          },
          {
            "Authenticator": [
              "ip_addresses",
              "ip_addresses:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "ip_address[id]",
            "schema": {
              "type": "string"
            },
            "description": "The IP address to find. \n\n All 'ip_address[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "ip_address[address]",
            "schema": {
              "type": "string"
            },
            "description": "The IP address to find. \n\n All 'ip_address[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns information about a specific IP address",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "ip_address": {
                      "description": "The IP address that has been located",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/IPAddress"
                        }
                      ]
                    },
                    "allocation": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/GetIPAddress200ResponseAllocation"
                        }
                      ],
                      "description": "The resource this address is allocated to",
                      "nullable": true
                    }
                  },
                  "required": [
                    "ip_address",
                    "allocation"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/IPAddressNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:ip_address",
        "summary": "Update IP address",
        "description": "Updates the details on an IP address\n## Scopes\n- `ip_addresses`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "IP addresses"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/ip_addresses"
            ]
          },
          {
            "Authenticator": [
              "ip_addresses"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "ip_address": {
                    "$ref": "#/components/schemas/IPAddressLookup"
                  },
                  "vip": {
                    "type": "boolean",
                    "description": "Whether or not to set this address as a VIP"
                  },
                  "label": {
                    "type": "string",
                    "description": "The label to give this address if setting it as a VIP"
                  },
                  "reverse_dns": {
                    "type": "string",
                    "description": "The reverse DNS to set for this IP address"
                  }
                },
                "required": [
                  "ip_address"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updates the details on an IP address",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "ip_address": {
                      "description": "The IP address that has been updated",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/IPAddress"
                        }
                      ]
                    }
                  },
                  "required": [
                    "ip_address"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/IPAddressNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:ip_address",
        "summary": "Release an IP address",
        "description": "Release an IP address from its organization\n## Scopes\n- `ip_addresses`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "IP addresses"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/ip_addresses"
            ]
          },
          {
            "Authenticator": [
              "ip_addresses"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "ip_address": {
                    "$ref": "#/components/schemas/IPAddressLookup"
                  }
                },
                "required": [
                  "ip_address"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Release an IP address from its organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {

                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/IPAddressNotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ResourceDoesNotSupportUnallocationResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/ip_addresses/ip_address/unallocate": {
      "post": {
        "operationId": "post:ip_address_unallocate",
        "summary": "Unallocate an IP address",
        "description": "Unallocate an IP address from its resource\n## Scopes\n- `ip_addresses`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "IP addresses"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/ip_addresses"
            ]
          },
          {
            "Authenticator": [
              "ip_addresses"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "ip_address": {
                    "$ref": "#/components/schemas/IPAddressLookup"
                  }
                },
                "required": [
                  "ip_address"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Unallocate an IP address from its resource",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {

                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/IPAddressNotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ResourceDoesNotSupportUnallocationResponse"
          },
          "422": {
            "$ref": "#/components/responses/NoAllocationResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/load_balancers/load_balancer/rules": {
      "get": {
        "operationId": "get:load_balancer_rules",
        "summary": "List load balancer rules",
        "description": "Returns a list of all rules for a given load balancer\n## Scopes\n- `load_balancers`\n- `load_balancers:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Load balancer rules"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/load_balancers",
              "api.katapult.io/core/v1/load_balancers:read"
            ]
          },
          {
            "Authenticator": [
              "load_balancers",
              "load_balancers:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "load_balancer[id]",
            "schema": {
              "type": "string"
            },
            "description": "The load balancer to return all load rules for. \n\n All 'load_balancer[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "load_balancer[api_reference]",
            "schema": {
              "type": "string"
            },
            "description": "The load balancer to return all load rules for. \n\n All 'load_balancer[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all rules for a given load balancer",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "load_balancer_rules": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetLoadBalancerRules200ResponseLoadBalancerRules"
                      },
                      "description": "The load balancer rules for this load balancer"
                    }
                  },
                  "required": [
                    "pagination",
                    "load_balancer_rules"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/LoadBalancerNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:load_balancer_rules",
        "summary": "Create load balancer rule",
        "description": "Create a new load balancer rule\n## Scopes\n- `load_balancers`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Load balancer rules"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/load_balancers"
            ]
          },
          {
            "Authenticator": [
              "load_balancers"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "load_balancer": {
                    "$ref": "#/components/schemas/LoadBalancerLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/LoadBalancerRuleArguments"
                  }
                },
                "required": [
                  "load_balancer",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create a new load balancer rule",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "load_balancer_rule": {
                      "description": "The load balancer rule that has been created",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostLoadBalancerRules200ResponseLoadBalancerRule"
                        }
                      ]
                    }
                  },
                  "required": [
                    "load_balancer_rule"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/LoadBalancerNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/load_balancers/rules/load_balancer_rule": {
      "get": {
        "operationId": "get:load_balancers_rules_load_balancer_rule",
        "summary": "Get load balancer rule",
        "description": "Returns details about a load balancer rule\n## Scopes\n- `load_balancers`\n- `load_balancers:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Load balancer rules"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/load_balancers",
              "api.katapult.io/core/v1/load_balancers:read"
            ]
          },
          {
            "Authenticator": [
              "load_balancers",
              "load_balancers:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "load_balancer_rule[id]",
            "schema": {
              "type": "string"
            },
            "description": "The load balancer rule to return the details for."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns details about a load balancer rule",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "load_balancer_rule": {
                      "description": "The resolved load balancer rule",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/GetLoadBalancersRulesLoadBalancerRule200ResponseLoadBalancerRule"
                        }
                      ]
                    }
                  },
                  "required": [
                    "load_balancer_rule"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/LoadBalancerRuleNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:load_balancers_rules_load_balancer_rule",
        "summary": "Update load balancer rule",
        "description": "Updates a load balancer rule with new properties\n## Scopes\n- `load_balancers`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Load balancer rules"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/load_balancers"
            ]
          },
          {
            "Authenticator": [
              "load_balancers"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "load_balancer_rule": {
                    "$ref": "#/components/schemas/LoadBalancerRuleLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/LoadBalancerRuleArguments"
                  }
                },
                "required": [
                  "load_balancer_rule",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updates a load balancer rule with new properties",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "load_balancer_rule": {
                      "description": "The load balancer that has been updated",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PatchLoadBalancersRulesLoadBalancerRule200ResponseLoadBalancerRule"
                        }
                      ]
                    }
                  },
                  "required": [
                    "load_balancer_rule"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/LoadBalancerRuleNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:load_balancers_rules_load_balancer_rule",
        "summary": "Delete load balancer rule",
        "description": "Delete a load balancer rule\n## Scopes\n- `load_balancers`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Load balancer rules"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/load_balancers"
            ]
          },
          {
            "Authenticator": [
              "load_balancers"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "load_balancer_rule": {
                    "$ref": "#/components/schemas/LoadBalancerRuleLookup"
                  }
                },
                "required": [
                  "load_balancer_rule"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete a load balancer rule",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "load_balancer_rule": {
                      "description": "The load balancer rule that has been destroyed",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DeleteLoadBalancersRulesLoadBalancerRule200ResponseLoadBalancerRule"
                        }
                      ]
                    }
                  },
                  "required": [
                    "load_balancer_rule"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/LoadBalancerRuleNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/load_balancers": {
      "get": {
        "operationId": "get:organization_load_balancers",
        "summary": "List load balancers",
        "description": "Returns a list of all load balancers for a given organization\n## Scopes\n- `load_balancers`\n- `load_balancers:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Load balancers"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/load_balancers",
              "api.katapult.io/core/v1/load_balancers:read"
            ]
          },
          {
            "Authenticator": [
              "load_balancers",
              "load_balancers:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to return all load balancers for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to return all load balancers for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "annotations[][key]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "in": "query",
            "name": "annotations[][value]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all load balancers for a given organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "load_balancers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationLoadBalancers200ResponseLoadBalancers"
                      },
                      "description": "The load balancers owned by this organization"
                    }
                  },
                  "required": [
                    "pagination",
                    "load_balancers"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:organization_load_balancers",
        "summary": "Create load balancer",
        "description": "Create a new load balancer for a given organization\n## Scopes\n- `load_balancers`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Load balancers"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/load_balancers"
            ]
          },
          {
            "Authenticator": [
              "load_balancers"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/LoadBalancerArguments"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "organization",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a new load balancer for a given organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "load_balancer": {
                      "description": "The load balancer that has been created",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostOrganizationLoadBalancers201ResponseLoadBalancer"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "load_balancer",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedPermissionDeniedResourceCreationRestricted403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/load_balancers/load_balancer": {
      "get": {
        "operationId": "get:load_balancer",
        "summary": "Get load balancer",
        "description": "Returns details about a load balancer\n## Scopes\n- `load_balancers`\n- `load_balancers:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Load balancers"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/load_balancers",
              "api.katapult.io/core/v1/load_balancers:read"
            ]
          },
          {
            "Authenticator": [
              "load_balancers",
              "load_balancers:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "load_balancer[id]",
            "schema": {
              "type": "string"
            },
            "description": "The load balancer to return the details for. \n\n All 'load_balancer[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "load_balancer[api_reference]",
            "schema": {
              "type": "string"
            },
            "description": "The load balancer to return the details for. \n\n All 'load_balancer[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns details about a load balancer",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "load_balancer": {
                      "description": "The load balancer",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/GetLoadBalancer200ResponseLoadBalancer"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "load_balancer",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/LoadBalancerNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:load_balancer",
        "summary": "Update load balancer",
        "description": "Updates a load balancer with new properties\n## Scopes\n- `load_balancers`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Load balancers"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/load_balancers"
            ]
          },
          {
            "Authenticator": [
              "load_balancers"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "load_balancer": {
                    "$ref": "#/components/schemas/LoadBalancerLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/LoadBalancerArguments"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "load_balancer",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updates a load balancer with new properties",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "load_balancer": {
                      "description": "The load balancer that has been updated",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PatchLoadBalancer200ResponseLoadBalancer"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "load_balancer",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/LoadBalancerNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:load_balancer",
        "summary": "Delete load balancer",
        "description": "Delete a load balancer\n## Scopes\n- `load_balancers`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Load balancers"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/load_balancers"
            ]
          },
          {
            "Authenticator": [
              "load_balancers"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "load_balancer": {
                    "$ref": "#/components/schemas/LoadBalancerLookup"
                  }
                },
                "required": [
                  "load_balancer"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete a load balancer",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "load_balancer": {
                      "description": "The load balancer that has been destroyed",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DeleteLoadBalancer200ResponseLoadBalancer"
                        }
                      ]
                    }
                  },
                  "required": [
                    "load_balancer"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/LoadBalancerNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/managed": {
      "get": {
        "operationId": "get:organization_managed",
        "summary": "List managed organizations",
        "description": "List all managed organizations owned by the given organization\n## Scopes\n- `managed_organizations`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Managed organizations"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/managed_organizations"
            ]
          },
          {
            "Authenticator": [
              "managed_organizations"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "annotations[][key]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "in": "query",
            "name": "annotations[][value]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "List all managed organizations owned by the given organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "organizations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationManaged200ResponseOrganizations"
                      }
                    }
                  },
                  "required": [
                    "pagination",
                    "organizations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:organization_managed",
        "summary": "Create managed organization",
        "description": "Create a new managed organization within an existing organization\n## Scopes\n- `managed_organizations`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Managed organizations"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/managed_organizations"
            ]
          },
          {
            "Authenticator": [
              "managed_organizations"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "name": {
                    "type": "string"
                  },
                  "sub_domain": {
                    "type": "string"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "organization",
                  "name",
                  "sub_domain"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a new managed organization within an existing organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "organization": {
                      "$ref": "#/components/schemas/Organization"
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "organization",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/OrganizationLimitReachedValidationError422Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/managed_organizations/organization": {
      "patch": {
        "operationId": "patch:organization",
        "summary": "Update managed organizations",
        "description": "Update properties for a managed organization\n## Scopes\n- `managed_organizations:update`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Managed organizations"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/managed_organizations:update"
            ]
          },
          {
            "Authenticator": [
              "managed_organizations:update"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "name": {
                    "type": "string"
                  },
                  "sub_domain": {
                    "type": "string"
                  }
                },
                "required": [
                  "organization"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update properties for a managed organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "organization": {
                      "$ref": "#/components/schemas/Organization"
                    }
                  },
                  "required": [
                    "organization"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/ManagedOrganizationRequiredResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:organization",
        "summary": "Delete managed organization",
        "description": "Delete a managed organization. All resources must be removed first.\n## Scopes\n- `managed_organizations:delete`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Managed organizations"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/managed_organizations:delete"
            ]
          },
          {
            "Authenticator": [
              "managed_organizations:delete"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  }
                },
                "required": [
                  "organization"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete a managed organization. All resources must be removed first.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "success": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "success"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/DeletionStepsNotSatisfiedManagedOrganizationRequired409Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "500": {
            "$ref": "#/components/responses/DeletionFailedResponse"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/network_speed_profiles": {
      "get": {
        "operationId": "get:organization_network_speed_profiles",
        "summary": "List network speed profiles",
        "description": "Returns a list of all network speed profiles available to an organization",
        "tags": [
          "Network speed profiles"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to use when looking up network speed profiles. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to use when looking up network speed profiles. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all network speed profiles available to an organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "network_speed_profiles": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/NetworkSpeedProfile"
                      },
                      "description": "The network speed profiles available to this organization"
                    }
                  },
                  "required": [
                    "pagination",
                    "network_speed_profiles"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/available_networks": {
      "get": {
        "operationId": "get:organization_available_networks",
        "summary": "List networks",
        "description": "Returns a list of all networks available for an organization",
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all networks available for an organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "networks": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationAvailableNetworks200ResponseNetworks"
                      }
                    },
                    "virtual_networks": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationAvailableNetworks200ResponseVirtualNetworks"
                      }
                    }
                  },
                  "required": [
                    "networks",
                    "virtual_networks"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/networks/network": {
      "get": {
        "operationId": "get:network",
        "summary": "Get Network",
        "description": "Returns details for a specific network",
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "network[id]",
            "schema": {
              "type": "string"
            },
            "description": "The network to return. \n\n All 'network[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "network[permalink]",
            "schema": {
              "type": "string"
            },
            "description": "The network to return. \n\n All 'network[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns details for a specific network",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "network": {
                      "description": "The details for the requested network",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/Network"
                        }
                      ]
                    }
                  },
                  "required": [
                    "network"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/NetworkNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/object_storage/object_storage_cluster": {
      "post": {
        "operationId": "post:organization_object_storage_object_storage_cluster",
        "summary": "Create object storage account",
        "description": "Create a new object storage account for an organization. Provisioning will be started in the background and can be monitored via the GET account endpoint.\n## Scopes\n- `object_storage`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Object storage"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage"
            ]
          },
          {
            "Authenticator": [
              "object_storage"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "object_storage_cluster": {
                    "$ref": "#/components/schemas/ObjectStorageClusterLookup"
                  }
                },
                "required": [
                  "organization",
                  "object_storage_cluster"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a new object storage account for an organization. Provisioning will be started in the background and can be monitored via the GET account endpoint.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "object_storage_account": {
                      "description": "The object storage account that was created",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/ObjectStorageAccount"
                        }
                      ]
                    }
                  },
                  "required": [
                    "object_storage_account"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageClusterNotFoundOrganizationNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashTaskQueueingError406Res"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "get": {
        "operationId": "get:organization_object_storage_object_storage_cluster",
        "summary": "Get object storage account details",
        "description": "Returns object storage account details\n## Scopes\n- `object_storage:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Object storage"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage:read"
            ]
          },
          {
            "Authenticator": [
              "object_storage:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization that owns the object storage account. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization that owns the object storage account. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "object_storage_cluster[region]",
            "schema": {
              "type": "string"
            },
            "description": "The object storage cluster region."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns object storage account details",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "object_storage_account": {
                      "$ref": "#/components/schemas/ObjectStorageAccount"
                    }
                  },
                  "required": [
                    "object_storage_account"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/ObjectStorageAccountNotProvisionedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageAccountNotFoundObjectStorageClusterNotFoundOrganizationNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:organization_object_storage_object_storage_cluster",
        "summary": "Move object storage to trash",
        "description": "Move object storage into the trash\n## Scopes\n- `object_storage`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Object storage"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/object_storage"
            ]
          },
          {
            "Authenticator": [
              "object_storage"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "object_storage_cluster": {
                    "$ref": "#/components/schemas/ObjectStorageClusterLookup"
                  }
                },
                "required": [
                  "organization",
                  "object_storage_cluster"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Move object storage into the trash",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "trash_object": {
                      "$ref": "#/components/schemas/DeleteOrganizationObjectStorageObjectStorageCluster200ResponseTrashObject"
                    },
                    "object_storage_account": {
                      "$ref": "#/components/schemas/ObjectStorageAccount"
                    }
                  },
                  "required": [
                    "trash_object",
                    "object_storage_account"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/ObjectStorageAccountNotProvisionedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/ObjectStorageAccountNotFoundObjectStorageClusterNotFoundOrganizationNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/operating_systems": {
      "get": {
        "operationId": "get:operating_systems",
        "summary": "List operating systems",
        "description": "Return a list of all operating systems",
        "tags": [
          "Operating systems"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of all operating systems",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "operating_systems": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOperatingSystems200ResponseOperatingSystems"
                      },
                      "description": "The list of available operating systems"
                    }
                  },
                  "required": [
                    "pagination",
                    "operating_systems"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/operating_systems/operating_system": {
      "get": {
        "operationId": "get:operating_system",
        "summary": "Get operating system",
        "description": "Return details for a specific operating system",
        "tags": [
          "Operating systems"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "operating_system[id]",
            "schema": {
              "type": "string"
            },
            "description": "The operating system to return."
          }
        ],
        "responses": {
          "200": {
            "description": "Return details for a specific operating system",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "operating_system": {
                      "description": "The operating system details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/OperatingSystem"
                        }
                      ]
                    }
                  },
                  "required": [
                    "operating_system"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/OperatingSystemNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/users_with_access": {
      "get": {
        "operationId": "get:organization_users_with_access",
        "summary": "List organization users",
        "description": "This will return a simple list of users with any access to this organization. This\nendpoint is available to all users with access to the organization therefore allows\nthem to see a small amount of information about their peers. This is useful when\ncombined with other API actions that require the ID of a fellow user (such as when\ndetermining which users to assign a virtual machine).\n\n## Scopes\n- `organizations:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Organization users"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/organizations:read"
            ]
          },
          {
            "Authenticator": [
              "organizations:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "This will return a simple list of users with any access to this organization. This\nendpoint is available to all users with access to the organization therefore allows\nthem to see a small amount of information about their peers. This is useful when\ncombined with other API actions that require the ID of a fellow user (such as when\ndetermining which users to assign a virtual machine).\n",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "users": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationUsersWithAccess200ResponseUsers"
                      }
                    }
                  },
                  "required": [
                    "pagination",
                    "users"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations": {
      "get": {
        "operationId": "get:organizations",
        "summary": "List organizations",
        "description": "This will return a list of all organizations the authenticated identity has access to\n## Scopes\n- `organizations:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Organizations"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/organizations:read"
            ]
          },
          {
            "Authenticator": [
              "organizations:read"
            ]
          }
        ],
        "parameters": [

        ],
        "responses": {
          "200": {
            "description": "This will return a list of all organizations the authenticated identity has access to",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "organizations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizations200ResponseOrganizations"
                      }
                    }
                  },
                  "required": [
                    "organizations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization": {
      "get": {
        "operationId": "get:organization",
        "summary": "Get organization",
        "description": "Returns information about a specific organization\n## Scopes\n- `organizations:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Organizations"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/organizations:read"
            ]
          },
          {
            "Authenticator": [
              "organizations:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns information about a specific organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "organization": {
                      "$ref": "#/components/schemas/Organization"
                    }
                  },
                  "required": [
                    "organization"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/policy": {
      "get": {
        "operationId": "get:organization_policy",
        "summary": "Get organization limits and usage",
        "description": "Returns the computed policy limits for a organization\n## Scopes\n- `organizations:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Organizations"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/organizations:read"
            ]
          },
          {
            "Authenticator": [
              "organizations:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the computed policy limits for a organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "policy_type": {
                      "$ref": "#/components/schemas/PolicyType"
                    },
                    "policy_name": {
                      "type": "string",
                      "nullable": true
                    },
                    "limits": {
                      "$ref": "#/components/schemas/PolicyLimits"
                    },
                    "features": {
                      "$ref": "#/components/schemas/PolicyFeatures"
                    },
                    "reasons_for_disallowing_resource_creation": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "policy_type",
                    "policy_name",
                    "limits",
                    "features",
                    "reasons_for_disallowing_resource_creation"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PolicyNotAvailableForManagedOrganizations400Res"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/policy_limits": {
      "get": {
        "operationId": "get:organization_policy_limits",
        "summary": "Get organization policy limits",
        "description": "Returns the computed policy limits for a organization\n## Scopes\n- `organizations:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Organizations"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/organizations:read"
            ]
          },
          {
            "Authenticator": [
              "organizations:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the computed policy limits for a organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "policy_limits": {
                      "$ref": "#/components/schemas/OrganizationPolicy"
                    }
                  },
                  "required": [
                    "policy_limits"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/prices": {
      "get": {
        "operationId": "get:organization_prices",
        "summary": "Get organization prices",
        "description": "Returns the active prices for an organization\n## Scopes\n- `organizations:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Organizations"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/organizations:read"
            ]
          },
          {
            "Authenticator": [
              "organizations:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the active prices for an organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "currency": {
                      "$ref": "#/components/schemas/Currency"
                    },
                    "prices": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PriceResourceWithSinglePriceVariant"
                      },
                      "description": "The prices in the default price plan"
                    }
                  },
                  "required": [
                    "currency",
                    "prices"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PricesNotAvailableForManagedOrganizations400Res"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/deletion_steps": {
      "get": {
        "operationId": "get:organization_deletion_steps",
        "summary": "Deletion steps",
        "description": "Returns details of the steps which must be performed before an organization can be deleted\n## Scopes\n- `organizations:delete`\n- `managed_organizations:delete`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Organizations"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/organizations:delete",
              "api.katapult.io/core/v1/managed_organizations:delete"
            ]
          },
          {
            "Authenticator": [
              "organizations:delete",
              "managed_organizations:delete"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns details of the steps which must be performed before an organization can be deleted",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "steps": {
                      "$ref": "#/components/schemas/OrganizationDeletionSteps"
                    }
                  },
                  "required": [
                    "steps"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/virtual_machine/start": {
      "post": {
        "operationId": "post:virtual_machine_start",
        "summary": "Start virtual machine",
        "description": "Queues a task to start a virtual machine\n## Scopes\n- `virtual_machines`\n- `virtual_machines:power_actions`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Power functions"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:power_actions"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:power_actions"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine": {
                    "$ref": "#/components/schemas/VirtualMachineLookup"
                  }
                },
                "required": [
                  "virtual_machine"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Queues a task to start a virtual machine",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "task": {
                      "$ref": "#/components/schemas/PostVirtualMachineStart200ResponseTask"
                    }
                  },
                  "required": [
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashTaskQueueingError406Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/virtual_machine/stop": {
      "post": {
        "operationId": "post:virtual_machine_stop",
        "summary": "Stop virtual machine",
        "description": "Queues a task to stop a virtual machine\n## Scopes\n- `virtual_machines`\n- `virtual_machines:power_actions`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Power functions"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:power_actions"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:power_actions"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine": {
                    "$ref": "#/components/schemas/VirtualMachineLookup"
                  }
                },
                "required": [
                  "virtual_machine"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Queues a task to stop a virtual machine",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "task": {
                      "$ref": "#/components/schemas/PostVirtualMachineStop200ResponseTask"
                    }
                  },
                  "required": [
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashTaskQueueingError406Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/virtual_machine/shutdown": {
      "post": {
        "operationId": "post:virtual_machine_shutdown",
        "summary": "Shutdown virtual machine",
        "description": "Queues a task to shutdown a virtual machine\n## Scopes\n- `virtual_machines`\n- `virtual_machines:power_actions`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Power functions"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:power_actions"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:power_actions"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine": {
                    "$ref": "#/components/schemas/VirtualMachineLookup"
                  }
                },
                "required": [
                  "virtual_machine"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Queues a task to shutdown a virtual machine",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "task": {
                      "$ref": "#/components/schemas/PostVirtualMachineShutdown200ResponseTask"
                    }
                  },
                  "required": [
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashTaskQueueingError406Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/virtual_machine/reset": {
      "post": {
        "operationId": "post:virtual_machine_reset",
        "summary": "Reset virtual machine",
        "description": "Queues a task to reset a virtual machine\n## Scopes\n- `virtual_machines`\n- `virtual_machines:power_actions`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Power functions"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:power_actions"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:power_actions"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine": {
                    "$ref": "#/components/schemas/VirtualMachineLookup"
                  }
                },
                "required": [
                  "virtual_machine"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Queues a task to reset a virtual machine",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "task": {
                      "$ref": "#/components/schemas/PostVirtualMachineReset200ResponseTask"
                    }
                  },
                  "required": [
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashTaskQueueingError406Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/dns_zones/dns_zone/records": {
      "get": {
        "operationId": "get:dns_zone_records",
        "summary": "List DNS records",
        "description": "Return a list of all DNS records in a zone\n## Scopes\n- `dns`\n- `dns:read`\n- `dns:acme`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Records"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/dns",
              "api.katapult.io/core/v1/dns:read",
              "api.katapult.io/core/v1/dns:acme"
            ]
          },
          {
            "Authenticator": [
              "dns",
              "dns:read",
              "dns:acme"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "dns_zone[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'dns_zone[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "dns_zone[name]",
            "schema": {
              "type": "string"
            },
            "description": "All 'dns_zone[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of all DNS records in a zone",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "dns_records": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/DNSRecord"
                      },
                      "description": "The DNS record for the provided zone"
                    }
                  },
                  "required": [
                    "dns_records"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DNSZoneNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:dns_zone_records",
        "summary": "Create DNS record",
        "description": "Create a new DNS record\n## Scopes\n- `dns`\n- `dns:acme`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Records"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/dns",
              "api.katapult.io/core/v1/dns:acme"
            ]
          },
          {
            "Authenticator": [
              "dns",
              "dns:acme"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "dns_zone": {
                    "$ref": "#/components/schemas/DNSZoneLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/DNSRecordArguments"
                  }
                },
                "required": [
                  "dns_zone",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create a new DNS record",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "dns_record": {
                      "$ref": "#/components/schemas/DNSRecord"
                    }
                  },
                  "required": [
                    "dns_record"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DNSZoneNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/dns_records/dns_record": {
      "get": {
        "operationId": "get:dns_record",
        "summary": "Get DNS record",
        "description": "Return details for a specific DNS record\n## Scopes\n- `dns`\n- `dns:read`\n- `dns:acme`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Records"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/dns",
              "api.katapult.io/core/v1/dns:read",
              "api.katapult.io/core/v1/dns:acme"
            ]
          },
          {
            "Authenticator": [
              "dns",
              "dns:read",
              "dns:acme"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "dns_record[id]",
            "schema": {
              "type": "string"
            },
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Return details for a specific DNS record",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "dns_record": {
                      "description": "The DNS record for the provided organization",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DNSRecord"
                        }
                      ]
                    }
                  },
                  "required": [
                    "dns_record"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DNSRecordNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:dns_record",
        "summary": "Update DNS record",
        "description": "Update a DNS record properties\n## Scopes\n- `dns`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Records"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/dns"
            ]
          },
          {
            "Authenticator": [
              "dns"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "dns_record": {
                    "$ref": "#/components/schemas/DNSRecordLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/DNSRecordArguments"
                  }
                },
                "required": [
                  "dns_record",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update a DNS record properties",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "dns_record": {
                      "description": "The DNS record that has been updated",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DNSRecord"
                        }
                      ]
                    }
                  },
                  "required": [
                    "dns_record"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DNSRecordNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:dns_record",
        "summary": "Delete DNS record",
        "description": "Delete a DNS record\n## Scopes\n- `dns`\n- `dns:acme`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Records"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/dns",
              "api.katapult.io/core/v1/dns:acme"
            ]
          },
          {
            "Authenticator": [
              "dns",
              "dns:acme"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "dns_record": {
                    "$ref": "#/components/schemas/DNSRecordLookup"
                  }
                },
                "required": [
                  "dns_record"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete a DNS record",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "deleted": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "deleted"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/DNSRecordNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/ssh_keys": {
      "get": {
        "operationId": "get:organization_ssh_keys",
        "summary": "List organization SSH keys",
        "description": "Returns a list of all SSH keys for an organization",
        "tags": [
          "SSH keys"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to list SSH keys for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to list SSH keys for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all SSH keys for an organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "ssh_keys": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AuthSSHKey"
                      }
                    }
                  },
                  "required": [
                    "pagination",
                    "ssh_keys"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:organization_ssh_keys",
        "summary": "Add organization SSH key",
        "description": "Add an SSH key to an organization",
        "tags": [
          "SSH keys"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "ssh_key": {
                    "$ref": "#/components/schemas/AuthSSHKeyProperties"
                  }
                },
                "required": [
                  "organization",
                  "ssh_key"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Add an SSH key to an organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "ssh_key": {
                      "$ref": "#/components/schemas/AuthSSHKey"
                    }
                  },
                  "required": [
                    "ssh_key"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/ssh_keys/ssh_key": {
      "delete": {
        "operationId": "delete:ssh_key",
        "summary": "Delete SSH key",
        "description": "Delete an SSH key",
        "tags": [
          "SSH keys"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "ssh_key": {
                    "$ref": "#/components/schemas/AuthSSHKeyLookup"
                  }
                },
                "required": [
                  "ssh_key"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete an SSH key",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "ssh_key": {
                      "$ref": "#/components/schemas/AuthSSHKey"
                    }
                  },
                  "required": [
                    "ssh_key"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/SSHKeyNotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/DeletionRestrictedResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/security_groups/security_group/rules": {
      "get": {
        "operationId": "get:security_group_rules",
        "summary": "List security group rules",
        "description": "Returns a list of all rules for a given security group\n## Scopes\n- `security_groups`\n- `security_groups:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Security group rules"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/security_groups",
              "api.katapult.io/core/v1/security_groups:read"
            ]
          },
          {
            "Authenticator": [
              "security_groups",
              "security_groups:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "security_group[id]",
            "schema": {
              "type": "string"
            },
            "description": "The security group to return all load rules for."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all rules for a given security group",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "security_group_rules": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetSecurityGroupRules200ResponseSecurityGroupRules"
                      },
                      "description": "The security group rules for this security group"
                    }
                  },
                  "required": [
                    "pagination",
                    "security_group_rules"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/SecurityGroupNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:security_group_rules",
        "summary": "Create security group rule",
        "description": "Create a new security group rule\n## Scopes\n- `security_groups`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Security group rules"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/security_groups"
            ]
          },
          {
            "Authenticator": [
              "security_groups"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "security_group": {
                    "$ref": "#/components/schemas/SecurityGroupLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/SecurityGroupRuleArguments"
                  }
                },
                "required": [
                  "security_group",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create a new security group rule",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "security_group_rule": {
                      "description": "The security group rule that has been created",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostSecurityGroupRules200ResponseSecurityGroupRule"
                        }
                      ]
                    }
                  },
                  "required": [
                    "security_group_rule"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/SecurityGroupNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/security_groups/rules/security_group_rule": {
      "get": {
        "operationId": "get:security_groups_rules_security_group_rule",
        "summary": "Get security group rule",
        "description": "Returns details about a security group rule\n## Scopes\n- `security_groups`\n- `security_groups:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Security group rules"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/security_groups",
              "api.katapult.io/core/v1/security_groups:read"
            ]
          },
          {
            "Authenticator": [
              "security_groups",
              "security_groups:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "security_group_rule[id]",
            "schema": {
              "type": "string"
            },
            "description": "The security group rule to return the details for."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns details about a security group rule",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "security_group_rule": {
                      "description": "The resolved security group rule",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/GetSecurityGroupsRulesSecurityGroupRule200ResponseSecurityGroupRule"
                        }
                      ]
                    }
                  },
                  "required": [
                    "security_group_rule"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/SecurityGroupRuleNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:security_groups_rules_security_group_rule",
        "summary": "Update security group rule",
        "description": "Updates a security group rule with new properties\n## Scopes\n- `security_groups`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Security group rules"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/security_groups"
            ]
          },
          {
            "Authenticator": [
              "security_groups"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "security_group_rule": {
                    "$ref": "#/components/schemas/SecurityGroupRuleLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/SecurityGroupRuleArguments"
                  }
                },
                "required": [
                  "security_group_rule",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updates a security group rule with new properties",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "security_group_rule": {
                      "description": "The security group that has been updated",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PatchSecurityGroupsRulesSecurityGroupRule200ResponseSecurityGroupRule"
                        }
                      ]
                    }
                  },
                  "required": [
                    "security_group_rule"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/SecurityGroupRuleNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:security_groups_rules_security_group_rule",
        "summary": "Delete security group rule",
        "description": "Delete a security group rule\n## Scopes\n- `security_groups`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Security group rules"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/security_groups"
            ]
          },
          {
            "Authenticator": [
              "security_groups"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "security_group_rule": {
                    "$ref": "#/components/schemas/SecurityGroupRuleLookup"
                  }
                },
                "required": [
                  "security_group_rule"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete a security group rule",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "security_group_rule": {
                      "description": "The security group rule that has been destroyed",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DeleteSecurityGroupsRulesSecurityGroupRule200ResponseSecurityGroupRule"
                        }
                      ]
                    }
                  },
                  "required": [
                    "security_group_rule"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/SecurityGroupRuleNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/security_groups": {
      "get": {
        "operationId": "get:organization_security_groups",
        "summary": "List security groups",
        "description": "Returns a list of all security groups for a given organization\n## Scopes\n- `security_groups`\n- `security_groups:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Security groups"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/security_groups",
              "api.katapult.io/core/v1/security_groups:read"
            ]
          },
          {
            "Authenticator": [
              "security_groups",
              "security_groups:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to return all security groups for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to return all security groups for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "annotations[][key]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "in": "query",
            "name": "annotations[][value]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all security groups for a given organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "security_groups": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SecurityGroup"
                      },
                      "description": "The security groups owned by this organization"
                    }
                  },
                  "required": [
                    "pagination",
                    "security_groups"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:organization_security_groups",
        "summary": "Create security group",
        "description": "Create a new security group for a given organization\n## Scopes\n- `security_groups`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Security groups"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/security_groups"
            ]
          },
          {
            "Authenticator": [
              "security_groups"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/SecurityGroupArguments"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "organization",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create a new security group for a given organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "security_group": {
                      "description": "The security group that has been created",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/SecurityGroup"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "security_group",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedPermissionDeniedResourceCreationRestricted403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/security_groups/security_group": {
      "get": {
        "operationId": "get:security_group",
        "summary": "Get security group",
        "description": "Returns details about a security group\n## Scopes\n- `security_groups`\n- `security_groups:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Security groups"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/security_groups",
              "api.katapult.io/core/v1/security_groups:read"
            ]
          },
          {
            "Authenticator": [
              "security_groups",
              "security_groups:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "security_group[id]",
            "schema": {
              "type": "string"
            },
            "description": "The security group to return the details for."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns details about a security group",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "security_group": {
                      "description": "The security group",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/SecurityGroup"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "security_group",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/SecurityGroupNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:security_group",
        "summary": "Update security group",
        "description": "Updates a security group with new properties\n## Scopes\n- `security_groups`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Security groups"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/security_groups"
            ]
          },
          {
            "Authenticator": [
              "security_groups"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "security_group": {
                    "$ref": "#/components/schemas/SecurityGroupLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/SecurityGroupArguments"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "security_group",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updates a security group with new properties",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "security_group": {
                      "description": "The security group that has been updated",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/SecurityGroup"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "security_group",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/SecurityGroupNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:security_group",
        "summary": "Delete security group",
        "description": "Delete a security group\n## Scopes\n- `security_group`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Security groups"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/security_group"
            ]
          },
          {
            "Authenticator": [
              "security_group"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "security_group": {
                    "$ref": "#/components/schemas/SecurityGroupLookup"
                  }
                },
                "required": [
                  "security_group"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete a security group",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "security_group": {
                      "description": "The security group that has been destroyed",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DeleteSecurityGroup200ResponseSecurityGroup"
                        }
                      ]
                    }
                  },
                  "required": [
                    "security_group"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/SecurityGroupNotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/DeletionRestrictedResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/tags": {
      "get": {
        "operationId": "get:organization_tags",
        "summary": "List tags",
        "description": "Returns a list of all tags for an organization\n## Scopes\n- `tags`\n- `tags:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Tags"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/tags",
              "api.katapult.io/core/v1/tags:read"
            ]
          },
          {
            "Authenticator": [
              "tags",
              "tags:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to list the tags for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to list the tags for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all tags for an organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationTags200ResponseTags"
                      },
                      "description": "The details for the tags on the organization"
                    }
                  },
                  "required": [
                    "pagination",
                    "tags"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:organization_tags",
        "summary": "Create a tag",
        "description": "Creates a new tag with the provided properties\n## Scopes\n- `tags`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Tags"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/tags"
            ]
          },
          {
            "Authenticator": [
              "tags"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/TagArguments"
                  }
                },
                "required": [
                  "organization",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Creates a new tag with the provided properties",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "tag": {
                      "description": "The newly created tag",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/Tag"
                        }
                      ]
                    }
                  },
                  "required": [
                    "tag"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/tags/tag": {
      "get": {
        "operationId": "get:tag",
        "summary": "Get tag",
        "description": "Returns details about a specific tag\n## Scopes\n- `tags`\n- `tags:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Tags"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/tags",
              "api.katapult.io/core/v1/tags:read"
            ]
          },
          {
            "Authenticator": [
              "tags",
              "tags:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "tag[id]",
            "schema": {
              "type": "string"
            },
            "description": "The tag to load the details for."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns details about a specific tag",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "tag": {
                      "description": "The details for the requested tag",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/Tag"
                        }
                      ]
                    }
                  },
                  "required": [
                    "tag"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/TagNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:tag",
        "summary": "Update a tag",
        "description": "Updates a tag with the provided properties\n## Scopes\n- `tags`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Tags"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/tags"
            ]
          },
          {
            "Authenticator": [
              "tags"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "tag": {
                    "$ref": "#/components/schemas/TagLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/TagArguments"
                  }
                },
                "required": [
                  "tag",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updates a tag with the provided properties",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "tag": {
                      "description": "The newly updated tag",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/Tag"
                        }
                      ]
                    }
                  },
                  "required": [
                    "tag"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/TagNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:tag",
        "summary": "Delete a tag",
        "description": "Deletes a tag\n## Scopes\n- `tags`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Tags"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/tags"
            ]
          },
          {
            "Authenticator": [
              "tags"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "tag": {
                    "$ref": "#/components/schemas/TagLookup"
                  }
                },
                "required": [
                  "tag"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deletes a tag",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "tag": {
                      "description": "The newly deleted tag",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/Tag"
                        }
                      ]
                    }
                  },
                  "required": [
                    "tag"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/TagNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/tasks/task": {
      "get": {
        "operationId": "get:task",
        "summary": "Get Task",
        "description": "Returns details about a specific task\n## Scopes\n- `tasks`\n- `tasks:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Tasks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/tasks",
              "api.katapult.io/core/v1/tasks:read"
            ]
          },
          {
            "Authenticator": [
              "tasks",
              "tasks:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "task[id]",
            "schema": {
              "type": "string"
            },
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Returns details about a specific task",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  },
                  "required": [
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/TaskNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/trash_objects": {
      "get": {
        "operationId": "get:organization_trash_objects",
        "summary": "List trash objects",
        "description": "Provides a full list of all trash objects for a specific organization\n## Scopes\n- `trash_objects:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Trash objects"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/trash_objects:read"
            ]
          },
          {
            "Authenticator": [
              "trash_objects:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to find all trash objects for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to find all trash objects for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Provides a full list of all trash objects for a specific organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "trash_objects": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TrashObject"
                      },
                      "description": "The trash objects that belong to this organization"
                    }
                  },
                  "required": [
                    "pagination",
                    "trash_objects"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/trash_objects/purge_all": {
      "post": {
        "operationId": "post:organization_trash_objects_purge_all",
        "summary": "Purge all trash objects",
        "description": "Purge all trash objects for an organization\n## Scopes\n- `trash_objects:purge`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Trash objects"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/trash_objects:purge"
            ]
          },
          {
            "Authenticator": [
              "trash_objects:purge"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  }
                },
                "required": [
                  "organization"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Purge all trash objects for an organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  },
                  "required": [
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/TaskQueueingErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/trash_objects/trash_object": {
      "get": {
        "operationId": "get:trash_object",
        "summary": "Get trash object",
        "description": "Provides information on a specific trash object\n## Scopes\n- `trash_objects:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Trash objects"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/trash_objects:read"
            ]
          },
          {
            "Authenticator": [
              "trash_objects:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "trash_object[id]",
            "schema": {
              "type": "string"
            },
            "description": "The trash object to find. \n\n All 'trash_object[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "trash_object[object_id]",
            "schema": {
              "type": "string"
            },
            "description": "The trash object to find. \n\n All 'trash_object[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Provides information on a specific trash object",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "trash_object": {
                      "description": "The requested trash object",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/TrashObject"
                        }
                      ]
                    }
                  },
                  "required": [
                    "trash_object"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/TrashObjectNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:trash_object",
        "summary": "Purge a trash object",
        "description": "Purge a specific trash object\n## Scopes\n- `trash_objects:purge`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Trash objects"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/trash_objects:purge"
            ]
          },
          {
            "Authenticator": [
              "trash_objects:purge"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "trash_object": {
                    "$ref": "#/components/schemas/TrashObjectLookup"
                  }
                },
                "required": [
                  "trash_object"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Purge a specific trash object",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  },
                  "required": [
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/TrashObjectNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/TaskQueueingErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/trash_objects/trash_object/restore": {
      "post": {
        "operationId": "post:trash_object_restore",
        "summary": "Restore a trash object",
        "description": "Restore a trashed object to its original location\n## Scopes\n- `trash_objects:restore`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Trash objects"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/trash_objects:restore"
            ]
          },
          {
            "Authenticator": [
              "trash_objects:restore"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "trash_object": {
                    "$ref": "#/components/schemas/TrashObjectLookup"
                  }
                },
                "required": [
                  "trash_object"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Restore a trashed object to its original location",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "trash_object": {
                      "description": "The requested trash object",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/TrashObject"
                        }
                      ]
                    }
                  },
                  "required": [
                    "trash_object"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/TrashObjectNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/users/current": {
      "get": {
        "operationId": "get:users_current",
        "summary": "Get current user details",
        "description": "This endpoint returns details for the currently authenticated user. If the API token used to\nauthenticate to the API is not associated with a user, this method will return an error.\n",
        "tags": [
          "Users"
        ],
        "parameters": [

        ],
        "responses": {
          "200": {
            "description": "This endpoint returns details for the currently authenticated user. If the API token used to\nauthenticate to the API is not associated with a user, this method will return an error.\n",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "user": {
                      "$ref": "#/components/schemas/User"
                    },
                    "organizations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetUsersCurrent200ResponseOrganizations"
                      }
                    },
                    "api_token_id": {
                      "type": "string",
                      "nullable": true
                    }
                  },
                  "required": [
                    "user",
                    "organizations",
                    "api_token_id"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/NoUserAssociatedWithIdentityResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/invalidate_linked_web_session": {
      "post": {
        "operationId": "post:invalidate_linked_web_session",
        "summary": "Invalidate linked web session",
        "description": "This endpoint allows you to invalidate the web session which is associated with your authenticated\nidentity. This will only work for API identities (most likely API tokens) that were generated using the first-party application\nlogin flow.\n",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {

                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "This endpoint allows you to invalidate the web session which is associated with your authenticated\nidentity. This will only work for API identities (most likely API tokens) that were generated using the first-party application\nlogin flow.\n",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "status": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/IdentityNotLinkedToWebSession400Res"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/virtual_networks": {
      "get": {
        "operationId": "get:organization_virtual_networks",
        "summary": "List virtual networks",
        "description": "Return a list of all virtual networks for an organization\n## Scopes\n- `virtual_networks`\n- `virtual_networks:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual Networks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_networks",
              "api.katapult.io/core/v1/virtual_networks:read"
            ]
          },
          {
            "Authenticator": [
              "virtual_networks",
              "virtual_networks:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization for which to return virtual networks. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization for which to return virtual networks. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of all virtual networks for an organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "virtual_networks": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/VirtualNetwork"
                      },
                      "description": "The virtual networks for the provided organization"
                    }
                  },
                  "required": [
                    "pagination",
                    "virtual_networks"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:organization_virtual_networks",
        "summary": "Create a virtual network",
        "description": "Create a new virtual network with the provided details\n## Scopes\n- `virtual_networks`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual Networks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_networks"
            ]
          },
          {
            "Authenticator": [
              "virtual_networks"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "data_center": {
                    "$ref": "#/components/schemas/DataCenterLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/VirtualNetworkArguments"
                  }
                },
                "required": [
                  "organization",
                  "data_center",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create a new virtual network with the provided details",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_network": {
                      "description": "The new virtual network details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/VirtualNetwork"
                        }
                      ]
                    }
                  },
                  "required": [
                    "virtual_network"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/DataCenterNotFoundOrganizationNotFound404Res"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_networks/virtual_network": {
      "get": {
        "operationId": "get:virtual_network",
        "summary": "Get virtual network",
        "description": "Return detailed information about a virtual network\n## Scopes\n- `virtual_networks`\n- `virtual_networks:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual Networks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_networks",
              "api.katapult.io/core/v1/virtual_networks:read"
            ]
          },
          {
            "Authenticator": [
              "virtual_networks",
              "virtual_networks:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "virtual_network[id]",
            "schema": {
              "type": "string"
            },
            "description": "The virtual network to retrieve."
          }
        ],
        "responses": {
          "200": {
            "description": "Return detailed information about a virtual network",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_network": {
                      "description": "The virtual network details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/VirtualNetwork"
                        }
                      ]
                    }
                  },
                  "required": [
                    "virtual_network"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualNetworkNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:virtual_network",
        "summary": "Update a virtual network",
        "description": "Update a virtual network with the provided details\n## Scopes\n- `virtual_networks`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual Networks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_networks"
            ]
          },
          {
            "Authenticator": [
              "virtual_networks"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_network": {
                    "$ref": "#/components/schemas/VirtualNetworkLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/VirtualNetworkArguments"
                  }
                },
                "required": [
                  "virtual_network",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update a virtual network with the provided details",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_network": {
                      "description": "The updated virtual network details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/VirtualNetwork"
                        }
                      ]
                    }
                  },
                  "required": [
                    "virtual_network"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualNetworkNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:virtual_network",
        "summary": "Delete a virtual network",
        "description": "\n## Scopes\n- `virtual_networks`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual Networks"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_networks"
            ]
          },
          {
            "Authenticator": [
              "virtual_networks"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_network": {
                    "$ref": "#/components/schemas/VirtualNetworkLookup"
                  }
                },
                "required": [
                  "virtual_network"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_network": {
                      "description": "The details for the deleted virtual network",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/VirtualNetwork"
                        }
                      ]
                    }
                  },
                  "required": [
                    "virtual_network"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualNetworkNotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/DeletionRestrictedResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/virtual_machine_groups": {
      "get": {
        "operationId": "get:organization_virtual_machine_groups",
        "summary": "List virtual machine groups",
        "description": "Return a list of all virtual machine groups for an organization\n## Scopes\n- `virtual_machine_groups`\n- `virtual_machine_groups:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine groups"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machine_groups",
              "api.katapult.io/core/v1/virtual_machine_groups:read"
            ]
          },
          {
            "Authenticator": [
              "virtual_machine_groups",
              "virtual_machine_groups:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to return groups for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "The organization to return groups for. \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of all virtual machine groups for an organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_groups": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/VirtualMachineGroup"
                      },
                      "description": "The virtual machine groups for the provided organization"
                    }
                  },
                  "required": [
                    "virtual_machine_groups"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:organization_virtual_machine_groups",
        "summary": "Create a virtual machine group",
        "description": "Create a new virtual machine group with the provided details\n## Scopes\n- `virtual_machine_groups`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine groups"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machine_groups"
            ]
          },
          {
            "Authenticator": [
              "virtual_machine_groups"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "organization": {
                    "$ref": "#/components/schemas/OrganizationLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/VirtualMachineGroupArguments"
                  }
                },
                "required": [
                  "organization",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create a new virtual machine group with the provided details",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_group": {
                      "description": "The new virtual machine group details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/VirtualMachineGroup"
                        }
                      ]
                    }
                  },
                  "required": [
                    "virtual_machine_group"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machine_groups/virtual_machine_group": {
      "get": {
        "operationId": "get:virtual_machine_group",
        "summary": "Get virtual machine group",
        "description": "Return detailed information about a virtual machine group\n## Scopes\n- `virtual_machine_groups`\n- `virtual_machine_groups:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine groups"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machine_groups",
              "api.katapult.io/core/v1/virtual_machine_groups:read"
            ]
          },
          {
            "Authenticator": [
              "virtual_machine_groups",
              "virtual_machine_groups:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "virtual_machine_group[id]",
            "schema": {
              "type": "string"
            },
            "description": "The virtual machine group to retrieve."
          }
        ],
        "responses": {
          "200": {
            "description": "Return detailed information about a virtual machine group",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_group": {
                      "description": "The virtual machine group details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/VirtualMachineGroup"
                        }
                      ]
                    }
                  },
                  "required": [
                    "virtual_machine_group"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineGroupNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:virtual_machine_group",
        "summary": "Update a virtual machine group",
        "description": "Update a virtual machine group with the provided details\n## Scopes\n- `virtual_machine_groups`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine groups"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machine_groups"
            ]
          },
          {
            "Authenticator": [
              "virtual_machine_groups"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine_group": {
                    "$ref": "#/components/schemas/VirtualMachineGroupLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/VirtualMachineGroupArguments"
                  }
                },
                "required": [
                  "virtual_machine_group",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update a virtual machine group with the provided details",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_group": {
                      "description": "The updated virtual machine group details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/VirtualMachineGroup"
                        }
                      ]
                    }
                  },
                  "required": [
                    "virtual_machine_group"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineGroupNotFoundResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:virtual_machine_group",
        "summary": "Delete a virtual machine group",
        "description": "\n## Scopes\n- `virtual_machine_groups`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine groups"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machine_groups"
            ]
          },
          {
            "Authenticator": [
              "virtual_machine_groups"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine_group": {
                    "$ref": "#/components/schemas/VirtualMachineGroupLookup"
                  }
                },
                "required": [
                  "virtual_machine_group"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_group": {
                      "description": "The details for the deleted virtual machine group",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/VirtualMachineGroup"
                        }
                      ]
                    }
                  },
                  "required": [
                    "virtual_machine_group"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineGroupNotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/DeletionRestrictedResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/virtual_machine/network_interfaces": {
      "get": {
        "operationId": "get:virtual_machine_network_interfaces",
        "summary": "List virtual machine network interfaces",
        "description": "Returns a list of virtual machine network interfaces\n## Scopes\n- `virtual_machines`\n- `virtual_machines:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine network interfaces"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:read"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "virtual_machine[id]",
            "schema": {
              "type": "string"
            },
            "description": "The virtual machine to show network interfaces for. \n\n All 'virtual_machine[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "virtual_machine[fqdn]",
            "schema": {
              "type": "string"
            },
            "description": "The virtual machine to show network interfaces for. \n\n All 'virtual_machine[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of virtual machine network interfaces",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "virtual_machine_network_interfaces": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetVirtualMachineNetworkInterfaces200ResponseVirtualMachineNetworkInterfaces"
                      },
                      "description": "The network interfaces for this virtual machine"
                    }
                  },
                  "required": [
                    "pagination",
                    "virtual_machine_network_interfaces"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "post": {
        "operationId": "post:virtual_machine_network_interfaces",
        "summary": "Create a virtual network interface",
        "description": "Create a new virtual machine network interface with the provided details\n## Scopes\n- `virtual_machines`\n- `virtual_machines:network_interfaces`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine network interfaces"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:network_interfaces"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:network_interfaces"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine": {
                    "$ref": "#/components/schemas/VirtualMachineLookup"
                  },
                  "network": {
                    "$ref": "#/components/schemas/NetworkLookup"
                  },
                  "virtual_network": {
                    "$ref": "#/components/schemas/VirtualNetworkLookup"
                  },
                  "speed_profile": {
                    "$ref": "#/components/schemas/NetworkSpeedProfileLookup"
                  }
                },
                "required": [
                  "virtual_machine",
                  "speed_profile"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create a new virtual machine network interface with the provided details",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_network_interface": {
                      "description": "The network interface details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaces200ResponseVirtualMachineNetworkInterface"
                        }
                      ]
                    }
                  },
                  "required": [
                    "virtual_machine_network_interface"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/NetworkNotFoundVirtualMachineNotFoundVirtualNetworkNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/virtual_machine/networks/network/interface": {
      "get": {
        "operationId": "get:virtual_machine_network_interface",
        "summary": "Get virtual machine network interface by network",
        "description": "Return information about a virtual machine network interface for a specific network\n## Scopes\n- `virtual_machines`\n- `virtual_machines:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine network interfaces"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:read"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "virtual_machine[id]",
            "schema": {
              "type": "string"
            },
            "description": "The virtual machine to find the network interface for. \n\n All 'virtual_machine[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "virtual_machine[fqdn]",
            "schema": {
              "type": "string"
            },
            "description": "The virtual machine to find the network interface for. \n\n All 'virtual_machine[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "network[id]",
            "schema": {
              "type": "string"
            },
            "description": "The network to find the network interface for. \n\n All 'network[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "network[permalink]",
            "schema": {
              "type": "string"
            },
            "description": "The network to find the network interface for. \n\n All 'network[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Return information about a virtual machine network interface for a specific network",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_network_interface": {
                      "description": "The network interface details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/GetVirtualMachineNetworkInterface200ResponseVirtualMachineNetworkInterface"
                        }
                      ]
                    }
                  },
                  "required": [
                    "virtual_machine_network_interface"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/InterfaceNotFoundNetworkNotFoundVirtualMachineNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machine_network_interfaces/virtual_machine_network_interface": {
      "get": {
        "operationId": "get:v_m_n_i__v_m_n_i",
        "summary": "Get virtual machine network interface",
        "description": "Return information about a given virtual machine network interface\n## Scopes\n- `virtual_machines`\n- `virtual_machines:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine network interfaces"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:read"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "virtual_machine_network_interface[id]",
            "schema": {
              "type": "string"
            },
            "description": "The network interface to show the information for."
          }
        ],
        "responses": {
          "200": {
            "description": "Return information about a given virtual machine network interface",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_network_interface": {
                      "description": "The network interface details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/GetVMNIVMNI200ResponseVirtualMachineNetworkInterface"
                        }
                      ]
                    }
                  },
                  "required": [
                    "virtual_machine_network_interface"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNetworkInterfaceNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:virtual_machine_network_interface",
        "summary": "Delete a virtual machine network interface",
        "description": "\n## Scopes\n- `virtual_machines`\n- `virtual_machines:network_interfaces`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine network interfaces"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:network_interfaces"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:network_interfaces"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine_network_interface": {
                    "$ref": "#/components/schemas/VirtualMachineNetworkInterfaceLookup"
                  }
                },
                "required": [
                  "virtual_machine_network_interface"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_network_interface": {
                      "description": "The deleted network interface details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/DeleteVirtualMachineNetworkInterface200ResponseVirtualMachineNetworkInterface"
                        }
                      ]
                    }
                  },
                  "required": [
                    "virtual_machine_network_interface"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNetworkInterfaceNotFoundResponse"
          },
          "409": {
            "$ref": "#/components/responses/DeletionRestrictedResponse"
          },
          "422": {
            "$ref": "#/components/responses/ValidationErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machine_network_interfaces/virtual_machine_network_interface/available_ips/address_version": {
      "get": {
        "operationId": "get:virtual_machine_network_interface_available_ips_address_version",
        "summary": "Get addresses available for network interface",
        "description": "Returns a list of IP addresses that can be allocated to a specific network interface\n## Scopes\n- `ip_addresses`\n- `ip_addresses:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine network interfaces"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/ip_addresses",
              "api.katapult.io/core/v1/ip_addresses:read"
            ]
          },
          {
            "Authenticator": [
              "ip_addresses",
              "ip_addresses:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "virtual_machine_network_interface[id]",
            "schema": {
              "type": "string"
            },
            "description": "The network interface to get IP addresses for."
          },
          {
            "name": "address_version",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/IPAddressVersionEnum"
            },
            "description": "The IP address version to return results for",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of IP addresses that can be allocated to a specific network interface",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "ip_addresses": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/IPAddress"
                      },
                      "description": "The IP addresses available for this network interface"
                    }
                  },
                  "required": [
                    "ip_addresses"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNetworkInterfaceNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machine_network_interfaces/virtual_machine_network_interface/allocate_ip": {
      "post": {
        "operationId": "post:virtual_machine_network_interface_allocate_ip",
        "summary": "Allocate an IP address",
        "description": "Allocate a specific IP address to a given network interface\n## Scopes\n- `ip_addresses`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine network interfaces"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/ip_addresses"
            ]
          },
          {
            "Authenticator": [
              "ip_addresses"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine_network_interface": {
                    "$ref": "#/components/schemas/VirtualMachineNetworkInterfaceLookup"
                  },
                  "ip_address": {
                    "$ref": "#/components/schemas/IPAddressLookup"
                  }
                },
                "required": [
                  "virtual_machine_network_interface",
                  "ip_address"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Allocate a specific IP address to a given network interface",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_network_interface": {
                      "description": "The network interface details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceAllocateIP200ResponseVirtualMachineNetworkInterface"
                        }
                      ]
                    }
                  },
                  "required": [
                    "virtual_machine_network_interface"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/IPAddressNotFoundVirtualMachineNetworkInterfaceNotFound404Res"
          },
          "422": {
            "$ref": "#/components/responses/IPAlreadyAllocatedInvalidIP422Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machine_network_interfaces/virtual_machine_network_interface/allocate_new_ip": {
      "post": {
        "operationId": "post:virtual_machine_network_interface_allocate_new_ip",
        "summary": "Allocate a new IP address",
        "description": "Add a new IP address to this organization and allocate it to a virtual machine network interface\n## Scopes\n- `ip_addresses`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine network interfaces"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/ip_addresses"
            ]
          },
          {
            "Authenticator": [
              "ip_addresses"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine_network_interface": {
                    "$ref": "#/components/schemas/VirtualMachineNetworkInterfaceLookup"
                  },
                  "address_version": {
                    "$ref": "#/components/schemas/IPAddressVersionEnum"
                  }
                },
                "required": [
                  "virtual_machine_network_interface",
                  "address_version"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Add a new IP address to this organization and allocate it to a virtual machine network interface",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "ip_address": {
                      "description": "The newly allocated IP address",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/IPAddress"
                        }
                      ]
                    }
                  },
                  "required": [
                    "ip_address"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNetworkInterfaceNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/NoAvailableAddresses503Res"
          }
        }
      }
    },
    "/virtual_machine_network_interfaces/virtual_machine_network_interface/update_speed_profile": {
      "patch": {
        "operationId": "patch:virtual_machine_network_interface_update_speed_profile",
        "summary": "Update the network speed profile for a virtual machine network interface",
        "description": "\n## Scopes\n- `virtual_machines`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine network interfaces"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine_network_interface": {
                    "$ref": "#/components/schemas/VirtualMachineNetworkInterfaceLookup"
                  },
                  "speed_profile": {
                    "$ref": "#/components/schemas/NetworkSpeedProfileLookup"
                  }
                },
                "required": [
                  "virtual_machine_network_interface",
                  "speed_profile"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "task": {
                      "description": "The task responsible for updating the virtual machine network interface speed profile",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/Task"
                        }
                      ]
                    }
                  },
                  "required": [
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/NetworkSpeedProfileNotFoundVirtualMachineNetworkInterfaceNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/TaskQueueingErrorResponse"
          },
          "422": {
            "$ref": "#/components/responses/SpeedProfileAlreadyAssignedResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machine_network_interfaces/virtual_machine_network_interface/attach": {
      "post": {
        "operationId": "post:virtual_machine_network_interface_attach",
        "summary": "Attach to virtual machine",
        "description": "Attach a network interface to a virtual machine.\n## Scopes\n- `virtual_machines`\n- `virtual_machines:network_interfaces`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine network interfaces"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:network_interfaces"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:network_interfaces"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine_network_interface": {
                    "$ref": "#/components/schemas/VirtualMachineNetworkInterfaceLookup"
                  }
                },
                "required": [
                  "virtual_machine_network_interface"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attach a network interface to a virtual machine.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_network_interface": {
                      "description": "The network interface details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceAttach200ResponseVirtualMachineNetworkInterface"
                        }
                      ]
                    },
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  },
                  "required": [
                    "virtual_machine_network_interface",
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNetworkInterfaceNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/TaskQueueingErrorResponse"
          },
          "422": {
            "$ref": "#/components/responses/VirtualMachineNetworkInterfaceAlreadyAttachedResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machine_network_interfaces/virtual_machine_network_interface/detach": {
      "post": {
        "operationId": "post:virtual_machine_network_interface_detach",
        "summary": "Detach from virtual machine",
        "description": "Detach a network interface from its virtual machine.\n## Scopes\n- `virtual_machines`\n- `virtual_machines:network_interfaces`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine network interfaces"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:network_interfaces"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:network_interfaces"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine_network_interface": {
                    "$ref": "#/components/schemas/VirtualMachineNetworkInterfaceLookup"
                  }
                },
                "required": [
                  "virtual_machine_network_interface"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Detach a network interface from its virtual machine.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_network_interface": {
                      "description": "The network interface details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceDetach200ResponseVirtualMachineNetworkInterface"
                        }
                      ]
                    },
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  },
                  "required": [
                    "virtual_machine_network_interface",
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNetworkInterfaceNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/TaskQueueingErrorResponse"
          },
          "422": {
            "$ref": "#/components/responses/VirtualMachineNetworkInterfaceAlreadyDetachedResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machine_packages": {
      "get": {
        "operationId": "get:virtual_machine_packages",
        "summary": "List virtual machine packages",
        "description": "Returns a list of virtual machine packages\n## Scopes\n- `virtual_machine_packages:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine packages"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machine_packages:read"
            ]
          },
          {
            "Authenticator": [
              "virtual_machine_packages:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "Provide an organization to only show packages available to the given organization (otherwise only public packages will be displayed). \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "Provide an organization to only show packages available to the given organization (otherwise only public packages will be displayed). \n\n All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of virtual machine packages",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "virtual_machine_packages": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/VirtualMachinePackage"
                      }
                    }
                  },
                  "required": [
                    "pagination",
                    "virtual_machine_packages"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machine_packages/virtual_machine_package": {
      "get": {
        "operationId": "get:virtual_machine_package",
        "summary": "Get virtual machine package",
        "description": "Return information about a given virtual machine package\n## Scopes\n- `virtual_machine_packages:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machine packages"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machine_packages:read"
            ]
          },
          {
            "Authenticator": [
              "virtual_machine_packages:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "virtual_machine_package[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'virtual_machine_package[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "virtual_machine_package[permalink]",
            "schema": {
              "type": "string"
            },
            "description": "All 'virtual_machine_package[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Return information about a given virtual machine package",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine_package": {
                      "$ref": "#/components/schemas/VirtualMachinePackage"
                    }
                  },
                  "required": [
                    "virtual_machine_package"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachinePackageNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/organizations/organization/virtual_machines": {
      "get": {
        "operationId": "get:organization_virtual_machines",
        "summary": "List virtual machines",
        "description": "Returns a list of all virtual machines for a given organization\n## Scopes\n- `virtual_machines`\n- `virtual_machines:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machines"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:read"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "organization[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "organization[sub_domain]",
            "schema": {
              "type": "string"
            },
            "description": "All 'organization[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "annotations[][key]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "in": "query",
            "name": "annotations[][value]",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "An array of annotations to filter by. \n\n All `annotations[]` params should have the same amount of elements."
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "The page number to request. If not provided, the first page will be returned."
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1
            },
            "description": "The number of items to return per page. If not provided, the default value will be used."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all virtual machines for a given organization",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "pagination": {
                      "$ref": "#/components/schemas/PaginationObject"
                    },
                    "virtual_machines": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetOrganizationVirtualMachines200ResponseVirtualMachines"
                      }
                    }
                  },
                  "required": [
                    "pagination",
                    "virtual_machines"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/OrganizationNotActivatedOrganizationSuspended403Res"
          },
          "404": {
            "$ref": "#/components/responses/OrganizationNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/virtual_machine": {
      "get": {
        "operationId": "get:virtual_machine",
        "summary": "Get virtual machine",
        "description": "Return information about a virtual machine\n## Scopes\n- `virtual_machines`\n- `virtual_machines:read`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machines"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines",
              "api.katapult.io/core/v1/virtual_machines:read"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines",
              "virtual_machines:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "virtual_machine[id]",
            "schema": {
              "type": "string"
            },
            "description": "All 'virtual_machine[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "virtual_machine[fqdn]",
            "schema": {
              "type": "string"
            },
            "description": "All 'virtual_machine[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Return information about a virtual machine",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine": {
                      "$ref": "#/components/schemas/GetVirtualMachine200ResponseVirtualMachine"
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "virtual_machine",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "patch": {
        "operationId": "patch:virtual_machine",
        "summary": "Update a Virtual Machine",
        "description": "Update the properties of a virtual machine\n## Scopes\n- `virtual_machines`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machines"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine": {
                    "$ref": "#/components/schemas/VirtualMachineLookup"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/VirtualMachineArguments"
                  },
                  "annotations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValue"
                    }
                  }
                },
                "required": [
                  "virtual_machine",
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update the properties of a virtual machine",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "virtual_machine": {
                      "description": "The newly updated virtual machine",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PatchVirtualMachine200ResponseVirtualMachine"
                        }
                      ]
                    },
                    "annotations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyValue"
                      }
                    }
                  },
                  "required": [
                    "virtual_machine",
                    "annotations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      },
      "delete": {
        "operationId": "delete:virtual_machine",
        "summary": "Delete virtual machine",
        "description": "Moves an existing virtual machine to the trash\n## Scopes\n- `virtual_machines`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machines"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine": {
                    "$ref": "#/components/schemas/VirtualMachineLookup"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Moves an existing virtual machine to the trash",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "trash_object": {
                      "$ref": "#/components/schemas/TrashObject"
                    },
                    "virtual_machine": {
                      "$ref": "#/components/schemas/DeleteVirtualMachine200ResponseVirtualMachine"
                    }
                  },
                  "required": [
                    "trash_object",
                    "virtual_machine"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/virtual_machine/package": {
      "put": {
        "operationId": "put:virtual_machine_package",
        "summary": "Change package",
        "description": "Change a package for a virtual machine\n## Scopes\n- `virtual_machines`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machines"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine": {
                    "$ref": "#/components/schemas/VirtualMachineLookup"
                  },
                  "virtual_machine_package": {
                    "$ref": "#/components/schemas/VirtualMachinePackageLookup"
                  }
                },
                "required": [
                  "virtual_machine",
                  "virtual_machine_package"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Change a package for a virtual machine",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  },
                  "required": [
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundVirtualMachinePackageNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashTaskQueueingError406Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/virtual_machine/flexible_resources": {
      "put": {
        "operationId": "put:virtual_machine_flexible_resources",
        "summary": "Change flexible resources",
        "description": "Change the flexible resources assigned to a virtual machine\n## Scopes\n- `virtual_machines`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machines"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine": {
                    "$ref": "#/components/schemas/VirtualMachineLookup"
                  },
                  "resources": {
                    "$ref": "#/components/schemas/VirtualMachineFlexibleResources"
                  }
                },
                "required": [
                  "virtual_machine",
                  "resources"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Change the flexible resources assigned to a virtual machine",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  },
                  "required": [
                    "task"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/FlexibleResourcesUnavailableToOrganizationPermissionDenied403Res"
          },
          "404": {
            "$ref": "#/components/responses/VirtualMachineNotFoundResponse"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashTaskQueueingError406Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machines/virtual_machine/allocate_ip": {
      "post": {
        "operationId": "post:virtual_machine_allocate_ip",
        "summary": "Allocate an IP Address",
        "description": "Allocate an IP address to a virtual machine, automatically determining the network interface\n## Scopes\n- `ip_addresses`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machines"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/ip_addresses"
            ]
          },
          {
            "Authenticator": [
              "ip_addresses"
            ]
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "virtual_machine": {
                    "$ref": "#/components/schemas/VirtualMachineLookup"
                  },
                  "ip_address": {
                    "$ref": "#/components/schemas/IPAddressLookup"
                  }
                },
                "required": [
                  "virtual_machine",
                  "ip_address"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Allocate an IP address to a virtual machine, automatically determining the network interface",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "ip_address": {
                      "description": "The newly allocated IP address",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/IPAddress"
                        }
                      ]
                    }
                  },
                  "required": [
                    "ip_address"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/IPAddressNotFoundVirtualMachineNotFound404Res"
          },
          "406": {
            "$ref": "#/components/responses/ObjectInTrashResponse"
          },
          "422": {
            "$ref": "#/components/responses/IPAlreadyAllocatedNoInterfaceAvailable422Res"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/virtual_machine/authorized_keys": {
      "get": {
        "operationId": "get:virtual_machine_authorized_keys",
        "summary": "Get authorized keys for a virtual machine",
        "description": "Return the authorized keys for the virtual machine associated with the provided API token\n## Scopes\n- `virtual_machines:authorized_keys`\n\n### OAuth2 Scopes\nWhen using OAuth2 authentication, scopes are prefixed with `api.katapult.io/core/v1/`.\n",
        "tags": [
          "Virtual machines"
        ],
        "security": [
          {
            "OAuth2": [
              "api.katapult.io/core/v1/virtual_machines:authorized_keys"
            ]
          },
          {
            "Authenticator": [
              "virtual_machines:authorized_keys"
            ]
          }
        ],
        "parameters": [

        ],
        "responses": {
          "200": {
            "description": "Return the authorized keys for the virtual machine associated with the provided API token",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/NoVirtualMachineForAPITokenResponse"
          },
          "409": {
            "$ref": "#/components/responses/ContinuousManagementDisabledResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/zones": {
      "get": {
        "operationId": "get:zones",
        "summary": "List zones",
        "description": "Returns a list of all zones on the system for the current identity",
        "tags": [
          "Zones"
        ],
        "parameters": [

        ],
        "responses": {
          "200": {
            "description": "Returns a list of all zones on the system for the current identity",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "zones": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GetZones200ResponseZones"
                      },
                      "description": "The zones available to the current identity"
                    }
                  },
                  "required": [
                    "zones"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    },
    "/zones/zone": {
      "get": {
        "operationId": "get:zone",
        "summary": "Get zone",
        "description": "Returns the details for a specific zone",
        "tags": [
          "Zones"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "zone[id]",
            "schema": {
              "type": "string"
            },
            "description": "The zone to find. \n\n All 'zone[]' params are mutually exclusive, only one can be provided."
          },
          {
            "in": "query",
            "name": "zone[permalink]",
            "schema": {
              "type": "string"
            },
            "description": "The zone to find. \n\n All 'zone[]' params are mutually exclusive, only one can be provided."
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the details for a specific zone",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "zone": {
                      "description": "The zone details",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/Zone"
                        }
                      ]
                    }
                  },
                  "required": [
                    "zone"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIAuthenticator400Response"
          },
          "403": {
            "$ref": "#/components/responses/APIAuthenticator403Response"
          },
          "404": {
            "$ref": "#/components/responses/ZoneNotFoundResponse"
          },
          "429": {
            "$ref": "#/components/responses/APIAuthenticator429Response"
          },
          "503": {
            "$ref": "#/components/responses/APIAuthenticator503Response"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "GetDataCenters200ResponseDataCenters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          },
          "country": {
            "$ref": "#/components/schemas/GetDataCentersPartCountry"
          }
        }
      },
      "GetDataCentersPartCountry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "MissingAPITokenEnum": {
        "type": "string",
        "enum": [
          "missing_api_token"
        ]
      },
      "UnauthorizedNetworkForAPIToken": {
        "type": "object",
        "properties": {
          "ip_address": {
            "type": "string",
            "description": "The IP address the request was received from"
          }
        }
      },
      "UnauthorizedNetworkForAPITokenEnum": {
        "type": "string",
        "enum": [
          "unauthorized_network_for_api_token"
        ]
      },
      "UnauthorizedNetworkForAPITokenSchema": {
        "type": "object",
        "description": "Network is not allowed to access the API with this API token",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/UnauthorizedNetworkForAPITokenEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "$ref": "#/components/schemas/UnauthorizedNetworkForAPIToken"
          }
        }
      },
      "InvalidAPIToken": {
        "type": "object",
        "properties": {
          "details": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "InvalidAPITokenEnum": {
        "type": "string",
        "enum": [
          "invalid_api_token"
        ]
      },
      "InvalidAPITokenSchema": {
        "type": "object",
        "description": "The API token provided was not valid (it may not exist or have expired)",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/InvalidAPITokenEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "$ref": "#/components/schemas/InvalidAPIToken"
          }
        }
      },
      "InvalidCapabilitiesTokenEnum": {
        "type": "string",
        "enum": [
          "invalid_capabilities_token"
        ]
      },
      "InvalidCapabilitiesTokenSchema": {
        "type": "object",
        "description": "The capabilities token provided was not valid (either not valid, expired or not signed by the correct key)",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/InvalidCapabilitiesTokenEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "ScopeNotGrantedError": {
        "properties": {
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ScopeNotGrantedErrorEnum": {
        "type": "string",
        "enum": [
          "scope_not_granted"
        ]
      },
      "ScopeNotGrantedErrorSchema": {
        "type": "object",
        "description": "The scope required for this endpoint has not been granted to the authenticating identity",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ScopeNotGrantedErrorEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "$ref": "#/components/schemas/ScopeNotGrantedError"
          }
        }
      },
      "OneOfAPIAuthenticator403Response": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/UnauthorizedNetworkForAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidCapabilitiesTokenSchema"
          },
          {
            "$ref": "#/components/schemas/ScopeNotGrantedErrorSchema"
          }
        ]
      },
      "RateLimitReached": {
        "type": "object",
        "properties": {
          "total_permitted": {
            "type": "integer",
            "description": "The total number of requests per minute that are permitted"
          }
        }
      },
      "RateLimitReachedEnum": {
        "type": "string",
        "enum": [
          "rate_limit_reached"
        ]
      },
      "ServiceUnavailableEnum": {
        "type": "string",
        "enum": [
          "service_unavailable"
        ]
      },
      "GetDataCenter200ResponseDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          },
          "country": {
            "$ref": "#/components/schemas/GetDataCenterPartCountry"
          }
        }
      },
      "GetDataCenterPartCountry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "DataCenterNotFoundEnum": {
        "type": "string",
        "enum": [
          "data_center_not_found"
        ]
      },
      "GetDataCenterDefaultNetwork200ResponseNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string",
            "nullable": true
          },
          "default": {
            "type": "boolean",
            "description": "Indicates if this network is the default network for the data center."
          },
          "data_center": {
            "$ref": "#/components/schemas/GetDataCenterDefaultNetworkPartDataCenter"
          }
        }
      },
      "GetDataCenterDefaultNetworkPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "GetOrganizations200ResponseOrganizations": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "sub_domain": {
            "type": "string"
          },
          "infrastructure_domain": {
            "type": "string"
          },
          "created_at": {
            "type": "integer"
          },
          "activated_at": {
            "type": "integer",
            "nullable": true
          },
          "suspended": {
            "type": "boolean"
          },
          "managed": {
            "type": "boolean"
          }
        }
      },
      "Organization": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "uuid": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "sub_domain": {
            "type": "string"
          },
          "infrastructure_domain": {
            "type": "string"
          },
          "created_at": {
            "type": "integer"
          },
          "activated_at": {
            "type": "integer",
            "nullable": true
          },
          "suspended": {
            "type": "boolean"
          },
          "managed": {
            "type": "boolean"
          },
          "billing_name": {
            "type": "string",
            "nullable": true
          },
          "address1": {
            "type": "string",
            "nullable": true
          },
          "address2": {
            "type": "string",
            "nullable": true
          },
          "address3": {
            "type": "string",
            "nullable": true
          },
          "address4": {
            "type": "string",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "vat_number": {
            "type": "string",
            "nullable": true
          },
          "phone_number": {
            "type": "string",
            "nullable": true
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Country"
              }
            ],
            "nullable": true
          },
          "country_state": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountryState"
              }
            ],
            "nullable": true
          }
        }
      },
      "Currency": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "iso_code": {
            "type": "string"
          },
          "symbol": {
            "type": "string"
          }
        }
      },
      "Country": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "iso_code2": {
            "type": "string"
          },
          "iso_code3": {
            "type": "string"
          },
          "time_zone": {
            "type": "string",
            "nullable": true
          },
          "eu": {
            "type": "boolean"
          }
        }
      },
      "CountryState": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "country": {
            "$ref": "#/components/schemas/Country"
          }
        }
      },
      "OrganizationSuspendedEnum": {
        "type": "string",
        "enum": [
          "organization_suspended"
        ]
      },
      "OrganizationSuspendedSchema": {
        "type": "object",
        "description": "An organization was found from the arguments provided but it was suspended",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/OrganizationSuspendedEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OrganizationNotActivatedEnum": {
        "type": "string",
        "enum": [
          "organization_not_activated"
        ]
      },
      "OrganizationNotActivatedSchema": {
        "type": "object",
        "description": "An organization was found from the arguments provided but it wasn't activated yet",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/OrganizationNotActivatedEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfOrganizationNotActivatedOrganizationSuspended403Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/UnauthorizedNetworkForAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidCapabilitiesTokenSchema"
          },
          {
            "$ref": "#/components/schemas/ScopeNotGrantedErrorSchema"
          },
          {
            "$ref": "#/components/schemas/OrganizationSuspendedSchema"
          },
          {
            "$ref": "#/components/schemas/OrganizationNotActivatedSchema"
          }
        ]
      },
      "OrganizationNotFoundEnum": {
        "type": "string",
        "enum": [
          "organization_not_found"
        ]
      },
      "PolicyType": {
        "type": "string",
        "enum": [
          "auto",
          "override",
          "none"
        ]
      },
      "PolicyLimits": {
        "type": "object",
        "properties": {
          "uninvoiced_balance": {
            "$ref": "#/components/schemas/FinancialPolicyLimit"
          },
          "credit_balance": {
            "$ref": "#/components/schemas/FinancialPolicyLimit"
          },
          "debt_on_resource_creation": {
            "$ref": "#/components/schemas/FinancialPolicyLimit"
          },
          "virtual_machines": {
            "$ref": "#/components/schemas/PolicyLimit"
          },
          "virtual_machine_memory": {
            "$ref": "#/components/schemas/PolicyLimit"
          },
          "managed_organizations": {
            "$ref": "#/components/schemas/PolicyLimit"
          },
          "unallocated_ip_addresses": {
            "$ref": "#/components/schemas/PolicyLimit"
          },
          "disk_space": {
            "$ref": "#/components/schemas/PolicyLimit"
          },
          "security_groups": {
            "$ref": "#/components/schemas/PolicyLimit"
          },
          "virtual_networks": {
            "$ref": "#/components/schemas/PolicyLimit"
          },
          "load_balancers": {
            "$ref": "#/components/schemas/PolicyLimit"
          },
          "dns_zones": {
            "$ref": "#/components/schemas/PolicyLimit"
          },
          "certificates": {
            "$ref": "#/components/schemas/PolicyLimit"
          },
          "file_storage_volumes": {
            "$ref": "#/components/schemas/PolicyLimit"
          },
          "isos": {
            "$ref": "#/components/schemas/PolicyLimit"
          },
          "disk_iops": {
            "$ref": "#/components/schemas/PolicyLimitWithoutCurrent"
          },
          "network_speed": {
            "$ref": "#/components/schemas/PolicyLimitWithoutCurrent"
          },
          "maximum_container_registry_space": {
            "$ref": "#/components/schemas/PolicyLimit"
          }
        }
      },
      "FinancialPolicyLimit": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "format": "float"
          },
          "current": {
            "type": "number",
            "format": "float"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          }
        }
      },
      "PolicyLimit": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer"
          },
          "current": {
            "type": "integer"
          },
          "unit": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PolicyLimitWithoutCurrent": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer"
          },
          "unit": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PolicyFeatures": {
        "type": "object",
        "properties": {
          "disk_bus_configuration": {
            "$ref": "#/components/schemas/PolicyFeature"
          },
          "zone_selection": {
            "$ref": "#/components/schemas/PolicyFeature"
          },
          "restricted_traffic_types": {
            "$ref": "#/components/schemas/PolicyFeature"
          },
          "suspension": {
            "$ref": "#/components/schemas/PolicyFeature"
          },
          "flexible_virtual_machine_resources": {
            "$ref": "#/components/schemas/PolicyFeature"
          }
        }
      },
      "PolicyFeature": {
        "type": "object",
        "properties": {
          "permitted": {
            "type": "boolean"
          }
        }
      },
      "APIAuthenticator400Schema": {
        "type": "object",
        "description": "No API token was provided in the Authorization header. Ensure a token is provided prefixed with Bearer",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/MissingAPITokenEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "PolicyNotAvailableForManagedOrganizationsEnum": {
        "type": "string",
        "enum": [
          "policy_not_available_for_managed_organizations"
        ]
      },
      "PolicyNotAvailableForManagedOrganizationsSchema": {
        "type": "object",
        "description": "Managed organizations do not have policies. Make this request on the parent organization instead.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/PolicyNotAvailableForManagedOrganizationsEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfPolicyNotAvailableForManagedOrganizations400Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/APIAuthenticator400Schema"
          },
          {
            "$ref": "#/components/schemas/PolicyNotAvailableForManagedOrganizationsSchema"
          }
        ]
      },
      "OrganizationPolicy": {
        "type": "object",
        "properties": {
          "maximum_uninvoiced_balance": {
            "$ref": "#/components/schemas/DecimalOrUnlimited"
          },
          "maximum_credit_balance": {
            "$ref": "#/components/schemas/DecimalOrUnlimited"
          },
          "maximum_debt_on_resource_creation": {
            "$ref": "#/components/schemas/DecimalOrUnlimited"
          },
          "maximum_virtual_machines": {
            "$ref": "#/components/schemas/IntegerOrUnlimited"
          },
          "maximum_virtual_machine_memory": {
            "$ref": "#/components/schemas/IntegerOrUnlimited"
          },
          "maximum_disk_space": {
            "$ref": "#/components/schemas/IntegerOrUnlimited"
          },
          "maximum_managed_organizations": {
            "$ref": "#/components/schemas/IntegerOrUnlimited"
          },
          "maximum_unallocated_ip_addresses": {
            "$ref": "#/components/schemas/IntegerOrUnlimited"
          },
          "maximum_security_groups": {
            "$ref": "#/components/schemas/IntegerOrUnlimited"
          },
          "maximum_virtual_networks": {
            "$ref": "#/components/schemas/IntegerOrUnlimited"
          },
          "maximum_load_balancers": {
            "$ref": "#/components/schemas/IntegerOrUnlimited"
          },
          "maximum_dns_zones": {
            "$ref": "#/components/schemas/IntegerOrUnlimited"
          },
          "maximum_certificates": {
            "$ref": "#/components/schemas/IntegerOrUnlimited"
          },
          "maximum_file_storage_volumes": {
            "$ref": "#/components/schemas/IntegerOrUnlimited"
          },
          "maximum_isos": {
            "$ref": "#/components/schemas/IntegerOrUnlimited"
          },
          "maximum_disk_size": {
            "$ref": "#/components/schemas/IntegerOrUnlimited"
          },
          "minimum_disk_size": {
            "$ref": "#/components/schemas/IntegerValue"
          },
          "flexible_virtual_machine_resources": {
            "type": "boolean"
          },
          "allow_suspension": {
            "type": "boolean"
          },
          "allow_restricted_traffic_types": {
            "type": "boolean"
          }
        }
      },
      "DecimalOrUnlimited": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "unlimited": {
            "type": "boolean"
          }
        }
      },
      "IntegerOrUnlimited": {
        "type": "object",
        "properties": {
          "value": {
            "type": "integer",
            "nullable": true
          },
          "unlimited": {
            "type": "boolean"
          }
        }
      },
      "IntegerValue": {
        "type": "object",
        "properties": {
          "value": {
            "type": "integer",
            "nullable": true
          }
        }
      },
      "PriceResourceWithSinglePriceVariant": {
        "type": "object",
        "properties": {
          "resource": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "price": {
            "type": "number",
            "format": "float"
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SinglePriceVariant"
            }
          }
        }
      },
      "SinglePriceVariant": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "price": {
            "type": "number",
            "format": "float"
          }
        }
      },
      "PricesNotAvailableForManagedOrganizationsEnum": {
        "type": "string",
        "enum": [
          "prices_not_available_for_managed_organizations"
        ]
      },
      "PricesNotAvailableForManagedOrganizationsSchema": {
        "type": "object",
        "description": "Managed organizations do not have policies. Make this request on the parent organization instead.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/PricesNotAvailableForManagedOrganizationsEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfPricesNotAvailableForManagedOrganizations400Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/APIAuthenticator400Schema"
          },
          {
            "$ref": "#/components/schemas/PricesNotAvailableForManagedOrganizationsSchema"
          }
        ]
      },
      "OrganizationDeletionSteps": {
        "type": "object",
        "properties": {
          "managed_organizations": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "virtual_machines": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "disks": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "file_storage_volumes": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "disk_backup_policies": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "isos": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "disk_templates": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "load_balancers": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "dns_zones": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "empty_trash": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "virtual_networks": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "ip_addresses": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "object_storage": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "ensure_zero_balance": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          },
          "ensure_no_outstanding_invoices": {
            "$ref": "#/components/schemas/OrganizationDeletionStep"
          }
        }
      },
      "OrganizationDeletionStep": {
        "type": "object",
        "properties": {
          "satisfied": {
            "type": "boolean"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "PermissionDenied": {
        "type": "object",
        "properties": {
          "details": {
            "type": "string",
            "description": "Additional information regarding the reason why permission was denied",
            "nullable": true
          }
        }
      },
      "PermissionDeniedEnum": {
        "type": "string",
        "enum": [
          "permission_denied"
        ]
      },
      "PermissionDeniedSchema": {
        "type": "object",
        "description": "The authenticated identity is not permitted to perform this action",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/PermissionDeniedEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "$ref": "#/components/schemas/PermissionDenied"
          }
        }
      },
      "OneOfOrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/UnauthorizedNetworkForAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidCapabilitiesTokenSchema"
          },
          {
            "$ref": "#/components/schemas/ScopeNotGrantedErrorSchema"
          },
          {
            "$ref": "#/components/schemas/OrganizationSuspendedSchema"
          },
          {
            "$ref": "#/components/schemas/OrganizationNotActivatedSchema"
          },
          {
            "$ref": "#/components/schemas/PermissionDeniedSchema"
          }
        ]
      },
      "PaginationObject": {
        "type": "object",
        "properties": {
          "current_page": {
            "type": "integer",
            "description": "The current page"
          },
          "total_pages": {
            "type": "integer",
            "description": "The total number of pages",
            "nullable": true
          },
          "total": {
            "type": "integer",
            "description": "The total number of items across all pages",
            "nullable": true
          },
          "per_page": {
            "type": "integer",
            "description": "The number of items per page"
          },
          "large_set": {
            "type": "boolean",
            "description": "Is this a large set and therefore the total number of records cannot be returned?"
          }
        }
      },
      "GetOrganizationUsersWithAccess200ResponseUsers": {
        "type": "object",
        "properties": {
          "user": {
            "allOf": [
              {
                "$ref": "#/components/schemas/User"
              }
            ],
            "nullable": true
          }
        }
      },
      "User": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "first_name": {
            "type": "string"
          },
          "last_name": {
            "type": "string"
          },
          "avatar_url": {
            "type": "string"
          }
        }
      },
      "GetOrganizationManaged200ResponseOrganizations": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "sub_domain": {
            "type": "string"
          },
          "infrastructure_domain": {
            "type": "string"
          },
          "created_at": {
            "type": "integer"
          },
          "managed": {
            "type": "boolean"
          }
        }
      },
      "OrganizationLookup": {
        "description": "All 'organization[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "sub_domain": {
            "type": "string"
          }
        }
      },
      "KeyValue": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "key"
        ]
      },
      "OrganizationLimitReachedEnum": {
        "type": "string",
        "enum": [
          "organization_limit_reached"
        ]
      },
      "OrganizationLimitReachedSchema": {
        "type": "object",
        "description": "The maxmium number of organizations that can be created has been reached",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/OrganizationLimitReachedEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "ValidationError": {
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ValidationErrorEnum": {
        "type": "string",
        "enum": [
          "validation_error"
        ]
      },
      "ValidationErrorSchema": {
        "type": "object",
        "description": "A validation error occurred with the object that was being created/updated/deleted",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ValidationErrorEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "$ref": "#/components/schemas/ValidationError"
          }
        }
      },
      "OneOfOrganizationLimitReachedValidationError422Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/OrganizationLimitReachedSchema"
          },
          {
            "$ref": "#/components/schemas/ValidationErrorSchema"
          }
        ]
      },
      "ManagedOrganizationRequiredEnum": {
        "type": "string",
        "enum": [
          "managed_organization_required"
        ]
      },
      "DeletionStepsNotSatisfied": {
        "type": "object",
        "properties": {
          "steps": {
            "$ref": "#/components/schemas/OrganizationDeletionSteps"
          }
        }
      },
      "DeletionStepsNotSatisfiedEnum": {
        "type": "string",
        "enum": [
          "deletion_steps_not_satisfied"
        ]
      },
      "DeletionStepsNotSatisfiedSchema": {
        "type": "object",
        "description": "Not all deletion steps have been satisfied, ensure all steps are satisfied before attempting deletion",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/DeletionStepsNotSatisfiedEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "$ref": "#/components/schemas/DeletionStepsNotSatisfied"
          }
        }
      },
      "ManagedOrganizationRequiredSchema": {
        "type": "object",
        "description": "Only managed organizations can be updated using this endpoint",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ManagedOrganizationRequiredEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfDeletionStepsNotSatisfiedManagedOrganizationRequired409Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/DeletionStepsNotSatisfiedSchema"
          },
          {
            "$ref": "#/components/schemas/ManagedOrganizationRequiredSchema"
          }
        ]
      },
      "DeletionFailedEnum": {
        "type": "string",
        "enum": [
          "deletion_failed"
        ]
      },
      "GetOrganizationDisks200ResponseDisk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "wwn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/DiskStateEnum"
          },
          "virtual_machine_disk": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetOrganizationDisksPartVirtualMachineDisk"
              }
            ],
            "nullable": true
          }
        }
      },
      "DiskStateEnum": {
        "type": "string",
        "enum": [
          "not_built",
          "failed",
          "built",
          "building",
          "installing",
          "restoring",
          "formatting",
          "resizing",
          "configuring",
          "importing"
        ]
      },
      "GetOrganizationDisksPartVirtualMachineDisk": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "$ref": "#/components/schemas/GetOrganizationDisksPartVirtualMachine"
          }
        }
      },
      "GetOrganizationDisksPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          }
        }
      },
      "DiskArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "bus_type": {
            "$ref": "#/components/schemas/DiskBusEnum"
          },
          "data_center": {
            "$ref": "#/components/schemas/DataCenterLookup"
          },
          "size_in_gb": {
            "type": "integer",
            "description": "Only available when creating disk. Existing disks must use the resize endpoint."
          },
          "io_profile": {
            "$ref": "#/components/schemas/DiskIOProfileLookup"
          },
          "initial_file_system": {
            "$ref": "#/components/schemas/FileSystemEnum"
          },
          "storage_speed": {
            "$ref": "#/components/schemas/StorageSpeedEnum"
          },
          "virtual_machine_disk": {
            "$ref": "#/components/schemas/VirtualMachineDiskArguments"
          }
        }
      },
      "DiskBusEnum": {
        "type": "string",
        "enum": [
          "scsi",
          "virtio"
        ]
      },
      "DataCenterLookup": {
        "description": "All 'data_center[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "DiskIOProfileLookup": {
        "description": "All 'io_profile[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "FileSystemEnum": {
        "type": "string",
        "enum": [
          "ext4",
          "xfs"
        ]
      },
      "StorageSpeedEnum": {
        "type": "string",
        "enum": [
          "nvme",
          "ssd"
        ]
      },
      "VirtualMachineDiskArguments": {
        "type": "object",
        "properties": {
          "boot": {
            "type": "boolean"
          },
          "attach_on_boot": {
            "type": "boolean",
            "description": "Attach the disk during virtual machine start up. Default is true."
          },
          "attach": {
            "type": "boolean",
            "description": "Attach the disk once built. If the virtual machine is not running the disk will attach when started. Only available when creating disk, existing disks must use the attach endpoint."
          },
          "virtual_machine": {
            "$ref": "#/components/schemas/VirtualMachineLookup"
          }
        }
      },
      "VirtualMachineLookup": {
        "description": "All 'virtual_machine[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          }
        }
      },
      "PostOrganizationDisks201ResponseDisk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "wwn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/DiskStateEnum"
          },
          "created_at": {
            "type": "integer"
          },
          "storage_speed": {
            "$ref": "#/components/schemas/StorageSpeedEnum"
          },
          "io_profile": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskIOProfile"
              }
            ],
            "nullable": true
          },
          "bus_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBusEnum"
              }
            ],
            "nullable": true
          },
          "data_center": {
            "$ref": "#/components/schemas/PostOrganizationDisksPartDataCenter"
          },
          "virtual_machine_disk": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PostOrganizationDisksPartVirtualMachineDisk"
              }
            ],
            "nullable": true
          },
          "installation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskInstallation"
              }
            ],
            "nullable": true
          }
        }
      },
      "DiskIOProfile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          },
          "speed_in_mb": {
            "type": "integer",
            "nullable": true
          },
          "iops": {
            "type": "integer",
            "nullable": true
          }
        }
      },
      "PostOrganizationDisksPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "PostOrganizationDisksPartVirtualMachineDisk": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "$ref": "#/components/schemas/PostOrganizationDisksPartVirtualMachine"
          },
          "attach_on_boot": {
            "type": "boolean"
          },
          "boot": {
            "type": "boolean"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineDiskAttachmentStateEnum"
          }
        }
      },
      "PostOrganizationDisksPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          }
        }
      },
      "VirtualMachineDiskAttachmentStateEnum": {
        "type": "string",
        "enum": [
          "detached",
          "failed",
          "attached",
          "attaching",
          "detaching"
        ]
      },
      "DiskInstallation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "disk_template_version": {
            "$ref": "#/components/schemas/DiskTemplateVersion"
          },
          "attributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DiskInstallationAttribute"
            }
          }
        }
      },
      "DiskTemplateVersion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "number": {
            "type": "integer"
          },
          "stable": {
            "type": "boolean"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "disk_template": {
            "$ref": "#/components/schemas/DiskTemplate"
          }
        }
      },
      "DiskTemplate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "permalink": {
            "type": "string"
          },
          "universal": {
            "type": "boolean"
          },
          "end_of_life": {
            "type": "integer",
            "nullable": true
          },
          "size_in_gb": {
            "type": "integer",
            "nullable": true
          },
          "latest_version": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskTemplateVersion"
              }
            ],
            "nullable": true
          },
          "operating_system": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OperatingSystem"
              }
            ],
            "nullable": true
          }
        }
      },
      "OperatingSystem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "badge": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Attachment"
              }
            ],
            "nullable": true
          }
        }
      },
      "Attachment": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "file_name": {
            "type": "string"
          },
          "file_type": {
            "type": "string"
          },
          "file_size": {
            "type": "integer"
          },
          "digest": {
            "type": "string"
          },
          "token": {
            "type": "string"
          }
        }
      },
      "DiskInstallationAttribute": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "protect": {
            "type": "boolean"
          }
        }
      },
      "Task": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/TaskStatusEnum"
          },
          "created_at": {
            "type": "integer"
          },
          "started_at": {
            "type": "integer",
            "nullable": true
          },
          "finished_at": {
            "type": "integer",
            "nullable": true
          },
          "progress": {
            "type": "integer"
          }
        }
      },
      "TaskStatusEnum": {
        "type": "string",
        "enum": [
          "pending",
          "running",
          "completed",
          "failed"
        ]
      },
      "TaskQueueingError": {
        "type": "object",
        "properties": {
          "details": {
            "type": "string"
          }
        }
      },
      "TaskQueueingErrorEnum": {
        "type": "string",
        "enum": [
          "task_queueing_error"
        ]
      },
      "GetDisk200ResponseDisk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "wwn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/DiskStateEnum"
          },
          "created_at": {
            "type": "integer"
          },
          "storage_speed": {
            "$ref": "#/components/schemas/StorageSpeedEnum"
          },
          "io_profile": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskIOProfile"
              }
            ],
            "nullable": true
          },
          "bus_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBusEnum"
              }
            ],
            "nullable": true
          },
          "data_center": {
            "$ref": "#/components/schemas/GetDiskPartDataCenter"
          },
          "virtual_machine_disk": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetDiskPartVirtualMachineDisk"
              }
            ],
            "nullable": true
          },
          "installation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskInstallation"
              }
            ],
            "nullable": true
          }
        }
      },
      "GetDiskPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "GetDiskPartVirtualMachineDisk": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "$ref": "#/components/schemas/GetDiskPartVirtualMachine"
          },
          "attach_on_boot": {
            "type": "boolean"
          },
          "boot": {
            "type": "boolean"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineDiskAttachmentStateEnum"
          }
        }
      },
      "GetDiskPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          }
        }
      },
      "DiskNotFoundEnum": {
        "type": "string",
        "enum": [
          "disk_not_found"
        ]
      },
      "ObjectInTrash": {
        "type": "object",
        "properties": {
          "trash_object": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TrashObject"
              }
            ],
            "nullable": true
          }
        }
      },
      "TrashObject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "keep_until": {
            "type": "integer"
          },
          "object_id": {
            "type": "string"
          },
          "object_type": {
            "type": "string"
          }
        }
      },
      "ObjectInTrashEnum": {
        "type": "string",
        "enum": [
          "object_in_trash"
        ]
      },
      "DiskLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "PatchDisk200ResponseDisk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "wwn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/DiskStateEnum"
          },
          "created_at": {
            "type": "integer"
          },
          "storage_speed": {
            "$ref": "#/components/schemas/StorageSpeedEnum"
          },
          "io_profile": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskIOProfile"
              }
            ],
            "nullable": true
          },
          "bus_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBusEnum"
              }
            ],
            "nullable": true
          },
          "data_center": {
            "$ref": "#/components/schemas/PatchDiskPartDataCenter"
          },
          "virtual_machine_disk": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PatchDiskPartVirtualMachineDisk"
              }
            ],
            "nullable": true
          },
          "installation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskInstallation"
              }
            ],
            "nullable": true
          }
        }
      },
      "PatchDiskPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "PatchDiskPartVirtualMachineDisk": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "$ref": "#/components/schemas/PatchDiskPartVirtualMachine"
          },
          "attach_on_boot": {
            "type": "boolean"
          },
          "boot": {
            "type": "boolean"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineDiskAttachmentStateEnum"
          }
        }
      },
      "PatchDiskPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          }
        }
      },
      "OneOfPermissionDenied403Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/UnauthorizedNetworkForAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidCapabilitiesTokenSchema"
          },
          {
            "$ref": "#/components/schemas/ScopeNotGrantedErrorSchema"
          },
          {
            "$ref": "#/components/schemas/PermissionDeniedSchema"
          }
        ]
      },
      "UnassignedDiskEnum": {
        "type": "string",
        "enum": [
          "unassigned_disk"
        ]
      },
      "UnassignedDiskSchema": {
        "type": "object",
        "description": "Disk is not assigned to a virtual machine.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/UnassignedDiskEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfUnassignedDiskValidationError422Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/UnassignedDiskSchema"
          },
          {
            "$ref": "#/components/schemas/ValidationErrorSchema"
          }
        ]
      },
      "DeleteDisk200ResponseDisk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "wwn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/DiskStateEnum"
          },
          "created_at": {
            "type": "integer"
          },
          "storage_speed": {
            "$ref": "#/components/schemas/StorageSpeedEnum"
          },
          "io_profile": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskIOProfile"
              }
            ],
            "nullable": true
          },
          "bus_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBusEnum"
              }
            ],
            "nullable": true
          },
          "data_center": {
            "$ref": "#/components/schemas/DeleteDiskPartDataCenter"
          },
          "virtual_machine_disk": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeleteDiskPartVirtualMachineDisk"
              }
            ],
            "nullable": true
          },
          "installation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskInstallation"
              }
            ],
            "nullable": true
          }
        }
      },
      "DeleteDiskPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "DeleteDiskPartVirtualMachineDisk": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "$ref": "#/components/schemas/DeleteDiskPartVirtualMachine"
          },
          "attach_on_boot": {
            "type": "boolean"
          },
          "boot": {
            "type": "boolean"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineDiskAttachmentStateEnum"
          }
        }
      },
      "DeleteDiskPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          }
        }
      },
      "PostDiskAssign200ResponseDisk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "wwn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/DiskStateEnum"
          },
          "created_at": {
            "type": "integer"
          },
          "storage_speed": {
            "$ref": "#/components/schemas/StorageSpeedEnum"
          },
          "io_profile": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskIOProfile"
              }
            ],
            "nullable": true
          },
          "bus_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBusEnum"
              }
            ],
            "nullable": true
          },
          "data_center": {
            "$ref": "#/components/schemas/PostDiskAssignPartDataCenter"
          },
          "virtual_machine_disk": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PostDiskAssignPartVirtualMachineDisk"
              }
            ],
            "nullable": true
          },
          "installation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskInstallation"
              }
            ],
            "nullable": true
          }
        }
      },
      "PostDiskAssignPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "PostDiskAssignPartVirtualMachineDisk": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "$ref": "#/components/schemas/PostDiskAssignPartVirtualMachine"
          },
          "attach_on_boot": {
            "type": "boolean"
          },
          "boot": {
            "type": "boolean"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineDiskAttachmentStateEnum"
          }
        }
      },
      "PostDiskAssignPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          }
        }
      },
      "DiskNotFoundSchema": {
        "type": "object",
        "description": "No disk was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/DiskNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "VirtualMachineNotFoundEnum": {
        "type": "string",
        "enum": [
          "virtual_machine_not_found"
        ]
      },
      "VirtualMachineNotFoundSchema": {
        "type": "object",
        "description": "No virtual machine was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/VirtualMachineNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfDiskNotFoundVirtualMachineNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/DiskNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/VirtualMachineNotFoundSchema"
          }
        ]
      },
      "UnableToAssign": {
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UnableToAssignEnum": {
        "type": "string",
        "enum": [
          "unable_to_assign"
        ]
      },
      "PostDiskUnassign200ResponseDisk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "wwn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/DiskStateEnum"
          },
          "created_at": {
            "type": "integer"
          },
          "storage_speed": {
            "$ref": "#/components/schemas/StorageSpeedEnum"
          },
          "io_profile": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskIOProfile"
              }
            ],
            "nullable": true
          },
          "bus_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBusEnum"
              }
            ],
            "nullable": true
          },
          "data_center": {
            "$ref": "#/components/schemas/PostDiskUnassignPartDataCenter"
          },
          "virtual_machine_disk": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PostDiskUnassignPartVirtualMachineDisk"
              }
            ],
            "nullable": true
          },
          "installation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskInstallation"
              }
            ],
            "nullable": true
          }
        }
      },
      "PostDiskUnassignPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "PostDiskUnassignPartVirtualMachineDisk": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "$ref": "#/components/schemas/PostDiskUnassignPartVirtualMachine"
          },
          "attach_on_boot": {
            "type": "boolean"
          },
          "boot": {
            "type": "boolean"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineDiskAttachmentStateEnum"
          }
        }
      },
      "PostDiskUnassignPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          }
        }
      },
      "UnableToUnassign": {
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UnableToUnassignEnum": {
        "type": "string",
        "enum": [
          "unable_to_unassign"
        ]
      },
      "PostDiskAttach200ResponseDisk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "wwn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/DiskStateEnum"
          },
          "created_at": {
            "type": "integer"
          },
          "storage_speed": {
            "$ref": "#/components/schemas/StorageSpeedEnum"
          },
          "io_profile": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskIOProfile"
              }
            ],
            "nullable": true
          },
          "bus_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBusEnum"
              }
            ],
            "nullable": true
          },
          "data_center": {
            "$ref": "#/components/schemas/PostDiskAttachPartDataCenter"
          },
          "virtual_machine_disk": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PostDiskAttachPartVirtualMachineDisk"
              }
            ],
            "nullable": true
          },
          "installation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskInstallation"
              }
            ],
            "nullable": true
          }
        }
      },
      "PostDiskAttachPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "PostDiskAttachPartVirtualMachineDisk": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "$ref": "#/components/schemas/PostDiskAttachPartVirtualMachine"
          },
          "attach_on_boot": {
            "type": "boolean"
          },
          "boot": {
            "type": "boolean"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineDiskAttachmentStateEnum"
          }
        }
      },
      "PostDiskAttachPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          }
        }
      },
      "ObjectInTrashSchema": {
        "type": "object",
        "description": "The object found is in the trash and therefore cannot be manipulated through the API. It should be restored in order to run this operation.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ObjectInTrashEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "$ref": "#/components/schemas/ObjectInTrash"
          }
        }
      },
      "TaskQueueingErrorSchema": {
        "type": "object",
        "description": "This error means that a background task that was needed to complete your request could not be queued",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/TaskQueueingErrorEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "$ref": "#/components/schemas/TaskQueueingError"
          }
        }
      },
      "OneOfObjectInTrashTaskQueueingError406Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ObjectInTrashSchema"
          },
          {
            "$ref": "#/components/schemas/TaskQueueingErrorSchema"
          }
        ]
      },
      "PostDiskDetach200ResponseDisk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "wwn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/DiskStateEnum"
          },
          "created_at": {
            "type": "integer"
          },
          "storage_speed": {
            "$ref": "#/components/schemas/StorageSpeedEnum"
          },
          "io_profile": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskIOProfile"
              }
            ],
            "nullable": true
          },
          "bus_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBusEnum"
              }
            ],
            "nullable": true
          },
          "data_center": {
            "$ref": "#/components/schemas/PostDiskDetachPartDataCenter"
          },
          "virtual_machine_disk": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PostDiskDetachPartVirtualMachineDisk"
              }
            ],
            "nullable": true
          },
          "installation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskInstallation"
              }
            ],
            "nullable": true
          }
        }
      },
      "PostDiskDetachPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "PostDiskDetachPartVirtualMachineDisk": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "$ref": "#/components/schemas/PostDiskDetachPartVirtualMachine"
          },
          "attach_on_boot": {
            "type": "boolean"
          },
          "boot": {
            "type": "boolean"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineDiskAttachmentStateEnum"
          }
        }
      },
      "PostDiskDetachPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          }
        }
      },
      "ResizeMethodEnum": {
        "type": "string",
        "enum": [
          "offline",
          "online"
        ]
      },
      "PutDiskResize200ResponseDisk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "wwn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/DiskStateEnum"
          },
          "created_at": {
            "type": "integer"
          },
          "storage_speed": {
            "$ref": "#/components/schemas/StorageSpeedEnum"
          },
          "io_profile": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskIOProfile"
              }
            ],
            "nullable": true
          },
          "bus_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBusEnum"
              }
            ],
            "nullable": true
          },
          "data_center": {
            "$ref": "#/components/schemas/PutDiskResizePartDataCenter"
          },
          "virtual_machine_disk": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PutDiskResizePartVirtualMachineDisk"
              }
            ],
            "nullable": true
          },
          "installation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskInstallation"
              }
            ],
            "nullable": true
          }
        }
      },
      "PutDiskResizePartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "PutDiskResizePartVirtualMachineDisk": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "$ref": "#/components/schemas/PutDiskResizePartVirtualMachine"
          },
          "attach_on_boot": {
            "type": "boolean"
          },
          "boot": {
            "type": "boolean"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineDiskAttachmentStateEnum"
          }
        }
      },
      "PutDiskResizePartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          }
        }
      },
      "PutDiskIOProfile200ResponseDisk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "wwn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/DiskStateEnum"
          },
          "created_at": {
            "type": "integer"
          },
          "storage_speed": {
            "$ref": "#/components/schemas/StorageSpeedEnum"
          },
          "io_profile": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskIOProfile"
              }
            ],
            "nullable": true
          },
          "bus_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBusEnum"
              }
            ],
            "nullable": true
          },
          "data_center": {
            "$ref": "#/components/schemas/PutDiskIOProfilePartDataCenter"
          },
          "virtual_machine_disk": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PutDiskIOProfilePartVirtualMachineDisk"
              }
            ],
            "nullable": true
          },
          "installation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskInstallation"
              }
            ],
            "nullable": true
          }
        }
      },
      "PutDiskIOProfilePartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "PutDiskIOProfilePartVirtualMachineDisk": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "$ref": "#/components/schemas/PutDiskIOProfilePartVirtualMachine"
          },
          "attach_on_boot": {
            "type": "boolean"
          },
          "boot": {
            "type": "boolean"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineDiskAttachmentStateEnum"
          }
        }
      },
      "PutDiskIOProfilePartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          }
        }
      },
      "DiskIOProfileNotFoundEnum": {
        "type": "string",
        "enum": [
          "disk_io_profile_not_found"
        ]
      },
      "DiskIOProfileNotFoundSchema": {
        "type": "object",
        "description": "No disk IO profile was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/DiskIOProfileNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfDiskIOProfileNotFoundDiskNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/DiskNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/DiskIOProfileNotFoundSchema"
          }
        ]
      },
      "GetVirtualMachineDisks200ResponseDisks": {
        "type": "object",
        "properties": {
          "disk": {
            "$ref": "#/components/schemas/GetVirtualMachineDisksPartDisk"
          },
          "attach_on_boot": {
            "type": "boolean"
          },
          "boot": {
            "type": "boolean"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineDiskAttachmentStateEnum"
          }
        }
      },
      "GetVirtualMachineDisksPartDisk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "wwn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/DiskStateEnum"
          },
          "created_at": {
            "type": "integer"
          }
        }
      },
      "GetOrganizationDiskTemplates200ResponseDiskTemplates": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "permalink": {
            "type": "string"
          },
          "universal": {
            "type": "boolean"
          },
          "size_in_gb": {
            "type": "integer",
            "nullable": true
          },
          "latest_version": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetOrganizationDiskTemplatesPartLatestVersion"
              }
            ],
            "nullable": true
          },
          "operating_system": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetOrganizationDiskTemplatesPartOperatingSystem"
              }
            ],
            "nullable": true
          }
        }
      },
      "GetOrganizationDiskTemplatesPartLatestVersion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "number": {
            "type": "integer"
          }
        }
      },
      "GetOrganizationDiskTemplatesPartOperatingSystem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "OrganizationNotFoundSchema": {
        "type": "object",
        "description": "No organization was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/OrganizationNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OperatingSystemNotFoundEnum": {
        "type": "string",
        "enum": [
          "operating_system_not_found"
        ]
      },
      "OperatingSystemNotFoundSchema": {
        "type": "object",
        "description": "No operating system was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/OperatingSystemNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfOperatingSystemNotFoundOrganizationNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/OrganizationNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/OperatingSystemNotFoundSchema"
          }
        ]
      },
      "GetDiskTemplate200ResponseDiskTemplate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "permalink": {
            "type": "string"
          },
          "universal": {
            "type": "boolean"
          },
          "end_of_life": {
            "type": "integer",
            "nullable": true
          },
          "size_in_gb": {
            "type": "integer",
            "nullable": true
          },
          "latest_version": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetDiskTemplatePartLatestVersion"
              }
            ],
            "nullable": true
          },
          "operating_system": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OperatingSystem"
              }
            ],
            "nullable": true
          }
        }
      },
      "GetDiskTemplatePartLatestVersion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "DiskTemplateNotFoundEnum": {
        "type": "string",
        "enum": [
          "disk_template_not_found"
        ]
      },
      "GetDiskTemplateVersions200ResponseDiskTemplate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "GetDiskTemplateVersions200ResponseDiskTemplateVersions": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "number": {
            "type": "integer"
          },
          "stable": {
            "type": "boolean"
          },
          "size_in_gb": {
            "type": "integer"
          }
        }
      },
      "GetDiskTemplateVersion200ResponseDiskTemplateVersion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "number": {
            "type": "integer"
          },
          "stable": {
            "type": "boolean"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "disk_template": {
            "$ref": "#/components/schemas/GetDiskTemplateVersionPartDiskTemplate"
          }
        }
      },
      "GetDiskTemplateVersionPartDiskTemplate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "DiskTemplateVersionNotFoundEnum": {
        "type": "string",
        "enum": [
          "disk_template_version_not_found"
        ]
      },
      "GetDiskTemplateVersionSpec200ResponseDiskTemplateVersion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "number": {
            "type": "integer"
          },
          "stable": {
            "type": "boolean"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "disk_template": {
            "$ref": "#/components/schemas/GetDiskTemplateVersionSpecPartDiskTemplate"
          }
        }
      },
      "GetDiskTemplateVersionSpecPartDiskTemplate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "TemplateSpec": {
        "properties": {
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TemplateSpecField"
            }
          }
        }
      },
      "TemplateSpecField": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/TemplateSpecFieldTypeEnum"
          },
          "label": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "required": {
            "type": "boolean"
          },
          "placeholder": {
            "type": "string",
            "nullable": true
          },
          "prefill": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TemplateSpecFieldTypeEnum": {
        "type": "string",
        "enum": [
          "Text",
          "Boolean",
          "Password",
          "Keyboard"
        ]
      },
      "GetGPUTypes200ResponseGPUTypes": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "manufacturer": {
            "type": "string"
          },
          "memory_in_gb": {
            "type": "integer"
          },
          "memory_type": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          },
          "data_centers": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/GetGPUTypesPartDataCenters"
                }
              ],
              "nullable": true
            }
          }
        }
      },
      "GetGPUTypesPartDataCenters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "GetGPUType200ResponseGPUType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "manufacturer": {
            "type": "string"
          },
          "memory_in_gb": {
            "type": "integer"
          },
          "memory_type": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          },
          "data_centers": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/GetGPUTypePartDataCenters"
                }
              ],
              "nullable": true
            }
          }
        }
      },
      "GetGPUTypePartDataCenters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "GPUTypeNotFoundEnum": {
        "type": "string",
        "enum": [
          "gpu_type_not_found"
        ]
      },
      "GetDataCenterGPUTypes200ResponseGPUTypes": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "manufacturer": {
            "type": "string"
          },
          "memory_in_gb": {
            "type": "integer"
          },
          "memory_type": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "GetOrganizationVirtualMachines200ResponseVirtualMachines": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "hostname": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          },
          "created_at": {
            "type": "integer"
          },
          "zone": {
            "$ref": "#/components/schemas/Zone"
          },
          "package": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetOrganizationVirtualMachinesPartPackage"
              }
            ],
            "nullable": true
          },
          "gpu_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetOrganizationVirtualMachinesPartGPUType"
              }
            ],
            "nullable": true
          },
          "ip_addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetOrganizationVirtualMachinesPartIPAddresses"
            }
          },
          "hypervisor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetOrganizationVirtualMachinesPartHypervisor"
              }
            ],
            "nullable": true
          }
        }
      },
      "Zone": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string",
            "nullable": true
          },
          "data_center": {
            "$ref": "#/components/schemas/DataCenter"
          }
        }
      },
      "DataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          },
          "country": {
            "$ref": "#/components/schemas/Country"
          }
        }
      },
      "GetOrganizationVirtualMachinesPartPackage": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        }
      },
      "GetOrganizationVirtualMachinesPartGPUType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "GetOrganizationVirtualMachinesPartIPAddresses": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string"
          }
        }
      },
      "GetOrganizationVirtualMachinesPartHypervisor": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "GetVirtualMachine200ResponseVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "hostname": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "integer"
          },
          "initial_root_password": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineStateEnum"
          },
          "zone": {
            "$ref": "#/components/schemas/Zone"
          },
          "organization": {
            "$ref": "#/components/schemas/Organization"
          },
          "group": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VirtualMachineGroup"
              }
            ],
            "nullable": true
          },
          "package": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VirtualMachinePackage"
              }
            ],
            "nullable": true
          },
          "attached_iso": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ISO"
              }
            ],
            "nullable": true
          },
          "memory_in_gb": {
            "type": "integer",
            "nullable": true
          },
          "cpu_cores": {
            "type": "integer",
            "nullable": true
          },
          "use_dedicated_cpus": {
            "type": "boolean",
            "nullable": true
          },
          "gpu_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetVirtualMachinePartGPUType"
              }
            ],
            "nullable": true
          },
          "gpus": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VirtualMachineGPU"
            }
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Tag"
            }
          },
          "tag_names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ip_addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IPAddress"
            }
          },
          "hypervisor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Hypervisor"
              }
            ],
            "nullable": true
          },
          "cloud_init": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CloudInit"
              }
            ],
            "nullable": true
          }
        }
      },
      "VirtualMachineStateEnum": {
        "type": "string",
        "enum": [
          "stopped",
          "failed",
          "started",
          "starting",
          "allocated",
          "allocating",
          "resetting",
          "migrating",
          "stopping",
          "shutting_down",
          "transferring",
          "orphaned"
        ]
      },
      "VirtualMachineGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "segregate": {
            "type": "boolean"
          },
          "auto_segregate": {
            "type": "boolean"
          },
          "created_at": {
            "type": "integer"
          }
        }
      },
      "VirtualMachinePackage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          },
          "cpu_cores": {
            "type": "integer"
          },
          "ipv4_addresses": {
            "type": "integer"
          },
          "memory_in_gb": {
            "type": "integer"
          },
          "storage_in_gb": {
            "type": "integer"
          },
          "monthly_bandwidth_allowance_in_gb": {
            "type": "integer",
            "nullable": true
          },
          "privacy": {
            "$ref": "#/components/schemas/PrivacyTypesEnum"
          },
          "icon": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Attachment"
              }
            ],
            "nullable": true
          },
          "use_dedicated_cpus": {
            "type": "boolean"
          },
          "group": {
            "$ref": "#/components/schemas/VirtualMachinePackageGroup"
          }
        }
      },
      "PrivacyTypesEnum": {
        "type": "string",
        "enum": [
          "public",
          "private"
        ]
      },
      "VirtualMachinePackageGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "ISO": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "operating_system": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OperatingSystem"
              }
            ],
            "nullable": true
          }
        }
      },
      "GetVirtualMachinePartGPUType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "manufacturer": {
            "type": "string"
          },
          "memory_in_gb": {
            "type": "integer"
          },
          "memory_type": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "VirtualMachineGPU": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique ID for this GPU. Not available when status is \"detached\".",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/VirtualMachineGPUStatusEnum"
          },
          "pending_action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VirtualMachineGPUPendingActionEnum"
              }
            ],
            "nullable": true
          },
          "available": {
            "type": "boolean",
            "description": "When pending action is \"attach\", this indicates if there is a GPU of the relevant type available."
          },
          "type": {
            "$ref": "#/components/schemas/GPUType"
          }
        }
      },
      "VirtualMachineGPUStatusEnum": {
        "type": "string",
        "enum": [
          "attached",
          "attaching",
          "detached",
          "detaching",
          "unknown"
        ]
      },
      "VirtualMachineGPUPendingActionEnum": {
        "type": "string",
        "enum": [
          "attach",
          "detach"
        ]
      },
      "GPUType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "manufacturer": {
            "type": "string"
          },
          "memory_in_gb": {
            "type": "integer"
          },
          "memory_type": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          },
          "data_centers": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/DataCenter"
                }
              ],
              "nullable": true
            }
          }
        }
      },
      "Tag": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "color": {
            "$ref": "#/components/schemas/TagColorsEnum"
          },
          "created_at": {
            "type": "integer"
          }
        }
      },
      "TagColorsEnum": {
        "type": "string",
        "enum": [
          "red",
          "pink",
          "purple",
          "dark_blue",
          "green",
          "teal",
          "aqua",
          "light_blue",
          "yellow",
          "orange",
          "orange_red",
          "brown",
          "black",
          "dark_gray",
          "light_gray",
          "light_brown",
          "pastel_red",
          "pastel_pink",
          "pastel_purple",
          "pastel_dark_blue",
          "pastel_green",
          "pastel_teal",
          "pastel_aqua",
          "pastel_light_blue",
          "pastel_yellow",
          "pastel_orange",
          "pastel_orange_red",
          "pastel_brown",
          "pastel_black",
          "pastel_dark_gray",
          "pastel_light_gray",
          "pastel_light_brown"
        ]
      },
      "IPAddress": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "reverse_dns": {
            "type": "string"
          },
          "vip": {
            "type": "boolean"
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "address_with_mask": {
            "type": "string"
          },
          "network": {
            "$ref": "#/components/schemas/Network"
          },
          "subnet": {
            "$ref": "#/components/schemas/Subnet"
          },
          "allocation_id": {
            "type": "string",
            "nullable": true
          },
          "allocation_type": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Network": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string",
            "nullable": true
          },
          "default": {
            "type": "boolean",
            "description": "Indicates if this network is the default network for the data center."
          },
          "data_center": {
            "$ref": "#/components/schemas/DataCenter"
          },
          "vlan": {
            "type": "integer",
            "description": "The underlying VLAN ID given to this network. Internal use only.",
            "nullable": true
          }
        }
      },
      "Subnet": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "gateway": {
            "type": "string"
          },
          "mask": {
            "type": "integer"
          },
          "billable": {
            "type": "boolean"
          },
          "version": {
            "type": "integer"
          }
        }
      },
      "Hypervisor": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "ip_address": {
            "type": "string"
          }
        }
      },
      "CloudInit": {
        "type": "object",
        "properties": {
          "user_data": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "VirtualMachineArguments": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "tag_names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "gpu_type": {
            "$ref": "#/components/schemas/GPUTypeLookup"
          },
          "group": {
            "$ref": "#/components/schemas/VirtualMachineGroupLookup"
          },
          "cloud_init": {
            "$ref": "#/components/schemas/CloudInitArguments"
          }
        }
      },
      "GPUTypeLookup": {
        "description": "All 'gpu_type[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "VirtualMachineGroupLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "CloudInitArguments": {
        "type": "object",
        "properties": {
          "user_data": {
            "type": "string",
            "description": "The configuration data provided to the instance by the user"
          }
        }
      },
      "PatchVirtualMachine200ResponseVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "hostname": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "integer"
          },
          "initial_root_password": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineStateEnum"
          },
          "zone": {
            "$ref": "#/components/schemas/Zone"
          },
          "organization": {
            "$ref": "#/components/schemas/Organization"
          },
          "group": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VirtualMachineGroup"
              }
            ],
            "nullable": true
          },
          "package": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VirtualMachinePackage"
              }
            ],
            "nullable": true
          },
          "attached_iso": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ISO"
              }
            ],
            "nullable": true
          },
          "memory_in_gb": {
            "type": "integer",
            "nullable": true
          },
          "cpu_cores": {
            "type": "integer",
            "nullable": true
          },
          "use_dedicated_cpus": {
            "type": "boolean",
            "nullable": true
          },
          "gpu_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PatchVirtualMachinePartGPUType"
              }
            ],
            "nullable": true
          },
          "gpus": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VirtualMachineGPU"
            }
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Tag"
            }
          },
          "tag_names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ip_addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IPAddress"
            }
          },
          "hypervisor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Hypervisor"
              }
            ],
            "nullable": true
          },
          "cloud_init": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CloudInit"
              }
            ],
            "nullable": true
          }
        }
      },
      "PatchVirtualMachinePartGPUType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "manufacturer": {
            "type": "string"
          },
          "memory_in_gb": {
            "type": "integer"
          },
          "memory_type": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "DeleteVirtualMachine200ResponseVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "hostname": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "integer"
          },
          "initial_root_password": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineStateEnum"
          },
          "zone": {
            "$ref": "#/components/schemas/Zone"
          },
          "organization": {
            "$ref": "#/components/schemas/Organization"
          },
          "group": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VirtualMachineGroup"
              }
            ],
            "nullable": true
          },
          "package": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VirtualMachinePackage"
              }
            ],
            "nullable": true
          },
          "attached_iso": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ISO"
              }
            ],
            "nullable": true
          },
          "memory_in_gb": {
            "type": "integer",
            "nullable": true
          },
          "cpu_cores": {
            "type": "integer",
            "nullable": true
          },
          "use_dedicated_cpus": {
            "type": "boolean",
            "nullable": true
          },
          "gpu_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeleteVirtualMachinePartGPUType"
              }
            ],
            "nullable": true
          },
          "gpus": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VirtualMachineGPU"
            }
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Tag"
            }
          },
          "tag_names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ip_addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IPAddress"
            }
          },
          "hypervisor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Hypervisor"
              }
            ],
            "nullable": true
          },
          "cloud_init": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CloudInit"
              }
            ],
            "nullable": true
          }
        }
      },
      "DeleteVirtualMachinePartGPUType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "manufacturer": {
            "type": "string"
          },
          "memory_in_gb": {
            "type": "integer"
          },
          "memory_type": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "VirtualMachinePackageLookup": {
        "description": "All 'virtual_machine_package[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "VirtualMachinePackageNotFoundEnum": {
        "type": "string",
        "enum": [
          "package_not_found"
        ]
      },
      "VirtualMachinePackageNotFoundSchema": {
        "type": "object",
        "description": "No package was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/VirtualMachinePackageNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfVirtualMachineNotFoundVirtualMachinePackageNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/VirtualMachineNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/VirtualMachinePackageNotFoundSchema"
          }
        ]
      },
      "VirtualMachineFlexibleResources": {
        "type": "object",
        "properties": {
          "cpu_cores": {
            "type": "integer"
          },
          "memory_in_gb": {
            "type": "integer"
          },
          "use_dedicated_cpus": {
            "type": "boolean"
          }
        },
        "required": [
          "cpu_cores",
          "memory_in_gb"
        ]
      },
      "FlexibleResourcesUnavailableToOrganizationEnum": {
        "type": "string",
        "enum": [
          "flexible_resources_unavailable_to_organization"
        ]
      },
      "FlexibleResourcesUnavailableToOrganizationSchema": {
        "type": "object",
        "description": "The organization is not permitted to use flexible resources",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/FlexibleResourcesUnavailableToOrganizationEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfFlexibleResourcesUnavailableToOrganizationPermissionDenied403Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/UnauthorizedNetworkForAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidCapabilitiesTokenSchema"
          },
          {
            "$ref": "#/components/schemas/ScopeNotGrantedErrorSchema"
          },
          {
            "$ref": "#/components/schemas/PermissionDeniedSchema"
          },
          {
            "$ref": "#/components/schemas/FlexibleResourcesUnavailableToOrganizationSchema"
          }
        ]
      },
      "IPAddressLookup": {
        "description": "All 'ip_address[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        }
      },
      "IPAddressNotFoundEnum": {
        "type": "string",
        "enum": [
          "ip_address_not_found"
        ]
      },
      "IPAddressNotFoundSchema": {
        "type": "object",
        "description": "No IP addresses were found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/IPAddressNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfIPAddressNotFoundVirtualMachineNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/VirtualMachineNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/IPAddressNotFoundSchema"
          }
        ]
      },
      "NoInterfaceAvailableEnum": {
        "type": "string",
        "enum": [
          "no_interface_available"
        ]
      },
      "NoInterfaceAvailableSchema": {
        "type": "object",
        "description": "This virtual machine does not have a network interface that is compatible with the provided IP address",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/NoInterfaceAvailableEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "IPAlreadyAllocatedEnum": {
        "type": "string",
        "enum": [
          "ip_already_allocated"
        ]
      },
      "IPAlreadyAllocatedSchema": {
        "type": "object",
        "description": "This IP address has already been allocated to another resource",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/IPAlreadyAllocatedEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfIPAlreadyAllocatedNoInterfaceAvailable422Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/NoInterfaceAvailableSchema"
          },
          {
            "$ref": "#/components/schemas/IPAlreadyAllocatedSchema"
          }
        ]
      },
      "NoVirtualMachineForAPITokenEnum": {
        "type": "string",
        "enum": [
          "no_virtual_machine_for_api_token"
        ]
      },
      "ContinuousManagementDisabledEnum": {
        "type": "string",
        "enum": [
          "continuous_management_disabled"
        ]
      },
      "ZoneLookup": {
        "description": "All 'zone[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "DiskTemplateLookup": {
        "description": "All 'disk_template[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "VirtualMachineBuildDiskArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "initial_file_system": {
            "$ref": "#/components/schemas/FileSystemEnum"
          },
          "system": {
            "type": "boolean",
            "description": "Default false. Exactly one disk must be marked as the system disk"
          },
          "io_profile": {
            "$ref": "#/components/schemas/DiskIOProfileLookup"
          },
          "storage_speed": {
            "$ref": "#/components/schemas/StorageSpeedEnum"
          }
        },
        "required": [
          "size_in_gb"
        ]
      },
      "NetworkLookup": {
        "description": "All 'network[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "PostOrganizationVirtualMachinesBuild201ResponseTask": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/TaskStatusEnum"
          }
        }
      },
      "PostOrganizationVirtualMachinesBuild201ResponseBuild": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineBuildStateEnum"
          }
        }
      },
      "VirtualMachineBuildStateEnum": {
        "type": "string",
        "enum": [
          "draft",
          "failed",
          "pending",
          "complete",
          "building"
        ]
      },
      "PostOrganizationVirtualMachinesBuild201ResponseVirtualMachineBuild": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineBuildStateEnum"
          }
        }
      },
      "ResourceCreationRestricted": {
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "The specific details that are restricting this organization"
            }
          }
        }
      },
      "ResourceCreationRestrictedEnum": {
        "type": "string",
        "enum": [
          "resource_creation_restricted"
        ]
      },
      "ResourceCreationRestrictedSchema": {
        "type": "object",
        "description": "The organization chosen is not permitted to create resources",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ResourceCreationRestrictedEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "$ref": "#/components/schemas/ResourceCreationRestricted"
          }
        }
      },
      "OneOfOrganizationNotActivatedPermissionDeniedResourceCreationRestricted403Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/UnauthorizedNetworkForAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidCapabilitiesTokenSchema"
          },
          {
            "$ref": "#/components/schemas/ScopeNotGrantedErrorSchema"
          },
          {
            "$ref": "#/components/schemas/OrganizationSuspendedSchema"
          },
          {
            "$ref": "#/components/schemas/OrganizationNotActivatedSchema"
          },
          {
            "$ref": "#/components/schemas/PermissionDeniedSchema"
          },
          {
            "$ref": "#/components/schemas/ResourceCreationRestrictedSchema"
          }
        ]
      },
      "ZoneNotFoundEnum": {
        "type": "string",
        "enum": [
          "zone_not_found"
        ]
      },
      "ZoneNotFoundSchema": {
        "type": "object",
        "description": "No zone was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ZoneNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "DataCenterNotFoundSchema": {
        "type": "object",
        "description": "No data center was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/DataCenterNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "DiskTemplateNotFoundSchema": {
        "type": "object",
        "description": "No disk template was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/DiskTemplateNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "NetworkNotFoundEnum": {
        "type": "string",
        "enum": [
          "network_not_found"
        ]
      },
      "NetworkNotFoundSchema": {
        "type": "object",
        "description": "No network was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/NetworkNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfDataCenterNotFoundVirtualMachinePackageNotFoundZoneNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/OrganizationNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/ZoneNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/DataCenterNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/VirtualMachinePackageNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/DiskTemplateNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/NetworkNotFoundSchema"
          }
        ]
      },
      "LocationRequiredEnum": {
        "type": "string",
        "enum": [
          "location_required"
        ]
      },
      "LocationRequiredSchema": {
        "type": "object",
        "description": "A zone or a data_center argument must be provided",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/LocationRequiredEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneSystemDiskRequiredEnum": {
        "type": "string",
        "enum": [
          "one_system_disk_required"
        ]
      },
      "OneSystemDiskRequiredSchema": {
        "type": "object",
        "description": "Exactly one disk must be marked as the system disk",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/OneSystemDiskRequiredEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfLocationRequiredOneSystemDiskRequiredValidationError422Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ValidationErrorSchema"
          },
          {
            "$ref": "#/components/schemas/LocationRequiredSchema"
          },
          {
            "$ref": "#/components/schemas/OneSystemDiskRequiredSchema"
          }
        ]
      },
      "PostOrganizationVirtualMachinesBuildFromSpec201ResponseTask": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/TaskStatusEnum"
          }
        }
      },
      "PostOrganizationVirtualMachinesBuildFromSpec201ResponseBuild": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineBuildStateEnum"
          }
        }
      },
      "PostOrganizationVirtualMachinesBuildFromSpec201ResponseVirtualMachineBuild": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineBuildStateEnum"
          }
        }
      },
      "InvalidSpecXML": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "string",
            "description": "A textual description of the errors with the provided XML"
          }
        }
      },
      "InvalidSpecXMLEnum": {
        "type": "string",
        "enum": [
          "invalid_spec_xml"
        ]
      },
      "InvalidSpecXMLSchema": {
        "type": "object",
        "description": "The spec XML provided is invalid",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/InvalidSpecXMLEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "$ref": "#/components/schemas/InvalidSpecXML"
          }
        }
      },
      "OneOfInvalidSpecXML400Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/APIAuthenticator400Schema"
          },
          {
            "$ref": "#/components/schemas/InvalidSpecXMLSchema"
          }
        ]
      },
      "GetVirtualMachinesBuildsVirtualMachineBuild200ResponseVirtualMachineBuild": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "spec_xml": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineBuildStateEnum"
          },
          "virtual_machine": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetVirtualMachinesBuildsVirtualMachineBuildPartVirtualMachine"
              }
            ],
            "nullable": true
          },
          "created_at": {
            "type": "integer"
          }
        }
      },
      "GetVirtualMachinesBuildsVirtualMachineBuildPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "hostname": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineStateEnum"
          }
        }
      },
      "VirtualMachineBuildNotFoundEnum": {
        "type": "string",
        "enum": [
          "build_not_found"
        ]
      },
      "PostVirtualMachineStart200ResponseTask": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/TaskStatusEnum"
          }
        }
      },
      "PostVirtualMachineStop200ResponseTask": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/TaskStatusEnum"
          }
        }
      },
      "PostVirtualMachineShutdown200ResponseTask": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/TaskStatusEnum"
          }
        }
      },
      "PostVirtualMachineReset200ResponseTask": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/TaskStatusEnum"
          }
        }
      },
      "PostVirtualMachineConsoleSessions201ResponseConsoleSession": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "expires_at": {
            "type": "integer"
          },
          "virtual_machine": {
            "$ref": "#/components/schemas/PostVirtualMachineConsoleSessionsPartVirtualMachine"
          }
        }
      },
      "PostVirtualMachineConsoleSessionsPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "hostname": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineStateEnum"
          }
        }
      },
      "VirtualMachineMustBeStarted": {
        "type": "object",
        "properties": {
          "current_state": {
            "type": "string"
          }
        }
      },
      "VirtualMachineMustBeStartedEnum": {
        "type": "string",
        "enum": [
          "virtual_machine_must_be_started"
        ]
      },
      "VirtualMachineMustBeStartedSchema": {
        "type": "object",
        "description": "Virtual machines must be in a started state to create console sessions",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/VirtualMachineMustBeStartedEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "$ref": "#/components/schemas/VirtualMachineMustBeStarted"
          }
        }
      },
      "OneOfObjectInTrashVirtualMachineMustBeStarted406Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ObjectInTrashSchema"
          },
          {
            "$ref": "#/components/schemas/VirtualMachineMustBeStartedSchema"
          }
        ]
      },
      "AuthSSHKey": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "fingerprint": {
            "type": "string"
          }
        }
      },
      "AuthSSHKeyProperties": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "key": {
            "type": "string"
          }
        }
      },
      "AuthSSHKeyLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "SSHKeyNotFoundEnum": {
        "type": "string",
        "enum": [
          "ssh_key_not_found"
        ]
      },
      "DeletionRestricted": {
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "asd"
            }
          }
        }
      },
      "DeletionRestrictedEnum": {
        "type": "string",
        "enum": [
          "deletion_restricted"
        ]
      },
      "APIToken": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "organization_id": {
            "type": "string",
            "nullable": true
          },
          "authorized_ip_addresses": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "expires_at": {
            "type": "integer",
            "nullable": true
          },
          "rate_limit": {
            "type": "integer"
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "secret": {
            "type": "string",
            "description": "The secret will only be returned on token creation or when a new secret is generated.",
            "nullable": true
          }
        }
      },
      "APITokenArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "authorized_ip_addresses": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "expires_at": {
            "type": "integer"
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "APITokenLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "APITokenNotFoundEnum": {
        "type": "string",
        "enum": [
          "api_token_not_found"
        ]
      },
      "DeleteAPIToken200ResponseAPIToken": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "GetOrganizationDiskBackupPolicies200ResponseDiskBackupPolicies": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "retention": {
            "type": "integer"
          },
          "total_size": {
            "type": "number",
            "format": "float"
          },
          "target": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBackupPolicyTarget"
              }
            ],
            "nullable": true
          },
          "schedule": {
            "$ref": "#/components/schemas/GetOrganizationDiskBackupPoliciesPartSchedule"
          }
        }
      },
      "DiskBackupPolicyTarget": {
        "type": "object",
        "properties": {
          "target": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/VirtualMachine"
              },
              {
                "$ref": "#/components/schemas/Disk"
              }
            ]
          }
        }
      },
      "VirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "hostname": {
            "type": "string"
          },
          "fqdn": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "integer"
          },
          "initial_root_password": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineStateEnum"
          },
          "zone": {
            "$ref": "#/components/schemas/Zone"
          },
          "organization": {
            "$ref": "#/components/schemas/Organization"
          },
          "group": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VirtualMachineGroup"
              }
            ],
            "nullable": true
          },
          "package": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VirtualMachinePackage"
              }
            ],
            "nullable": true
          },
          "attached_iso": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ISO"
              }
            ],
            "nullable": true
          },
          "memory_in_gb": {
            "type": "integer",
            "nullable": true
          },
          "cpu_cores": {
            "type": "integer",
            "nullable": true
          },
          "use_dedicated_cpus": {
            "type": "boolean",
            "nullable": true
          },
          "gpu_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GPUType"
              }
            ],
            "nullable": true
          },
          "gpus": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VirtualMachineGPU"
            }
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Tag"
            }
          },
          "tag_names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ip_addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IPAddress"
            }
          },
          "hypervisor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Hypervisor"
              }
            ],
            "nullable": true
          },
          "cloud_init": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CloudInit"
              }
            ],
            "nullable": true
          }
        }
      },
      "Disk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size_in_gb": {
            "type": "integer"
          },
          "wwn": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/DiskStateEnum"
          },
          "created_at": {
            "type": "integer"
          },
          "storage_speed": {
            "$ref": "#/components/schemas/StorageSpeedEnum"
          },
          "io_profile": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskIOProfile"
              }
            ],
            "nullable": true
          },
          "bus_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBusEnum"
              }
            ],
            "nullable": true
          },
          "data_center": {
            "$ref": "#/components/schemas/DataCenter"
          },
          "virtual_machine_disk": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VirtualMachineDisk"
              }
            ],
            "nullable": true
          },
          "installation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskInstallation"
              }
            ],
            "nullable": true
          }
        }
      },
      "VirtualMachineDisk": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "$ref": "#/components/schemas/VirtualMachine"
          },
          "disk": {
            "$ref": "#/components/schemas/Disk"
          },
          "attach_on_boot": {
            "type": "boolean"
          },
          "boot": {
            "type": "boolean"
          },
          "state": {
            "$ref": "#/components/schemas/VirtualMachineDiskAttachmentStateEnum"
          }
        }
      },
      "GetOrganizationDiskBackupPoliciesPartSchedule": {
        "type": "object",
        "properties": {
          "interval": {
            "$ref": "#/components/schemas/ScheduleIntervalTypeEnum"
          },
          "next_invocation_at": {
            "type": "integer"
          }
        }
      },
      "ScheduleIntervalTypeEnum": {
        "type": "string",
        "enum": [
          "hourly",
          "daily",
          "weekly",
          "monthly"
        ]
      },
      "GetVirtualMachineDiskBackupPolicies200ResponseDiskBackupPolicies": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "retention": {
            "type": "integer"
          },
          "total_size": {
            "type": "number",
            "format": "float"
          },
          "target": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBackupPolicyTarget"
              }
            ],
            "nullable": true
          },
          "schedule": {
            "$ref": "#/components/schemas/GetVirtualMachineDiskBackupPoliciesPartSchedule"
          }
        }
      },
      "GetVirtualMachineDiskBackupPoliciesPartSchedule": {
        "type": "object",
        "properties": {
          "interval": {
            "$ref": "#/components/schemas/ScheduleIntervalTypeEnum"
          },
          "next_invocation_at": {
            "type": "integer"
          }
        }
      },
      "GetDiskDiskBackupPolicies200ResponseDiskBackupPolicies": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "retention": {
            "type": "integer"
          },
          "total_size": {
            "type": "number",
            "format": "float"
          },
          "target": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBackupPolicyTarget"
              }
            ],
            "nullable": true
          },
          "schedule": {
            "$ref": "#/components/schemas/GetDiskDiskBackupPoliciesPartSchedule"
          }
        }
      },
      "GetDiskDiskBackupPoliciesPartSchedule": {
        "type": "object",
        "properties": {
          "interval": {
            "$ref": "#/components/schemas/ScheduleIntervalTypeEnum"
          },
          "next_invocation_at": {
            "type": "integer"
          }
        }
      },
      "GetDiskBackupPolicy200ResponseDiskBackupPolicy": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "retention": {
            "type": "integer"
          },
          "total_size": {
            "type": "number",
            "format": "float"
          },
          "target": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBackupPolicyTarget"
              }
            ],
            "nullable": true
          },
          "schedule": {
            "$ref": "#/components/schemas/Schedule"
          },
          "auto_move_to_trash_at": {
            "type": "integer",
            "nullable": true
          }
        }
      },
      "Schedule": {
        "type": "object",
        "properties": {
          "frequency": {
            "type": "integer"
          },
          "interval": {
            "$ref": "#/components/schemas/ScheduleIntervalTypeEnum"
          },
          "minute": {
            "type": "integer"
          },
          "next_invocation_at": {
            "type": "integer"
          },
          "time": {
            "type": "integer"
          }
        }
      },
      "DiskBackupPolicyNotFoundEnum": {
        "type": "string",
        "enum": [
          "disk_backup_policy_not_found"
        ]
      },
      "DiskBackupPolicyLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "DeleteDiskBackupPolicy200ResponseDiskBackupPolicy": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "DeleteDiskBackupPolicySchedule200ResponseDiskBackupPolicy": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "target": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBackupPolicyTarget"
              }
            ],
            "nullable": true
          },
          "auto_move_to_trash_at": {
            "type": "integer",
            "nullable": true
          }
        }
      },
      "InvalidTimestampEnum": {
        "type": "string",
        "enum": [
          "invalid_timestamp"
        ]
      },
      "InvalidTimestampSchema": {
        "type": "object",
        "description": "Timestamp must be at least 5 minutes in the future. If you want to delete something immediately, you use can use the delete endpoint.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/InvalidTimestampEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfInvalidTimestamp400Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/APIAuthenticator400Schema"
          },
          {
            "$ref": "#/components/schemas/InvalidTimestampSchema"
          }
        ]
      },
      "DiskBackupPolicyArguments": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "Optional description to help identify the backup policy."
          },
          "retention": {
            "type": "integer"
          },
          "schedule": {
            "$ref": "#/components/schemas/ScheduleArguments"
          }
        }
      },
      "ScheduleArguments": {
        "type": "object",
        "properties": {
          "frequency": {
            "type": "integer"
          },
          "interval": {
            "$ref": "#/components/schemas/ScheduleIntervalTypeEnum"
          },
          "minute": {
            "type": "integer"
          },
          "time": {
            "type": "integer"
          }
        }
      },
      "PatchDiskBackupPolicy200ResponseDiskBackupPolicy": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "retention": {
            "type": "integer"
          },
          "target": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBackupPolicyTarget"
              }
            ],
            "nullable": true
          },
          "schedule": {
            "type": "object"
          }
        }
      },
      "PostVirtualMachineDiskBackupPolicies200ResponseDiskBackupPolicy": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "retention": {
            "type": "integer"
          },
          "total_size": {
            "type": "number",
            "format": "float"
          },
          "target": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBackupPolicyTarget"
              }
            ],
            "nullable": true
          },
          "schedule": {
            "$ref": "#/components/schemas/Schedule"
          },
          "auto_move_to_trash_at": {
            "type": "integer",
            "nullable": true
          }
        }
      },
      "PostDiskDiskBackupPolicies200ResponseDiskBackupPolicy": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "retention": {
            "type": "integer"
          },
          "total_size": {
            "type": "number",
            "format": "float"
          },
          "target": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DiskBackupPolicyTarget"
              }
            ],
            "nullable": true
          },
          "schedule": {
            "$ref": "#/components/schemas/Schedule"
          },
          "auto_move_to_trash_at": {
            "type": "integer",
            "nullable": true
          }
        }
      },
      "DNSZone": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "default_ttl": {
            "type": "integer"
          },
          "verified": {
            "type": "boolean"
          }
        }
      },
      "DNSZoneArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the zone (only available for creation)"
          },
          "default_ttl": {
            "type": "integer"
          }
        }
      },
      "DNSZoneNotFoundEnum": {
        "type": "string",
        "enum": [
          "dns_zone_not_found"
        ]
      },
      "DNSZoneLookup": {
        "description": "All 'dns_zone[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "DNSZoneNotVerifiedEnum": {
        "type": "string",
        "enum": [
          "dns_zone_not_verified"
        ]
      },
      "DNSRecord": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "full_name": {
            "type": "string"
          },
          "ttl": {
            "type": "integer",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/DNSRecordTypesEnum"
          },
          "priority": {
            "type": "integer",
            "nullable": true
          },
          "content": {
            "type": "string"
          },
          "content_attributes": {
            "$ref": "#/components/schemas/DNSRecordContentAttributes"
          }
        }
      },
      "DNSRecordTypesEnum": {
        "type": "string",
        "enum": [
          "A",
          "AAAA",
          "ALIAS",
          "CAA",
          "CNAME",
          "HTTPRedirect",
          "IPS",
          "MX",
          "NS",
          "PTR",
          "SOA",
          "SRV",
          "SSHFP",
          "TXT",
          "VirtualMachine"
        ]
      },
      "DNSRecordContentAttributes": {
        "type": "object",
        "properties": {
          "A": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForA"
              }
            ],
            "nullable": true
          },
          "AAAA": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForAAAA"
              }
            ],
            "nullable": true
          },
          "ALIAS": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForALIAS"
              }
            ],
            "nullable": true
          },
          "CAA": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForCAA"
              }
            ],
            "nullable": true
          },
          "CNAME": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForCNAME"
              }
            ],
            "nullable": true
          },
          "HTTPRedirect": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForHTTPRedirect"
              }
            ],
            "nullable": true
          },
          "IPS": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForIPS"
              }
            ],
            "nullable": true
          },
          "MX": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForMX"
              }
            ],
            "nullable": true
          },
          "NS": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForNS"
              }
            ],
            "nullable": true
          },
          "PTR": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForPTR"
              }
            ],
            "nullable": true
          },
          "SOA": {
            "type": "object",
            "nullable": true
          },
          "SRV": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForSRV"
              }
            ],
            "nullable": true
          },
          "SSHFP": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForSSHFP"
              }
            ],
            "nullable": true
          },
          "TXT": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForTXT"
              }
            ],
            "nullable": true
          },
          "VirtualMachine": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordContentAttributesForVirtualMachine"
              }
            ],
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForA": {
        "type": "object",
        "properties": {
          "ip_address": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForAAAA": {
        "type": "object",
        "properties": {
          "ip_address": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForALIAS": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForCAA": {
        "type": "object",
        "properties": {
          "flag": {
            "type": "string",
            "nullable": true
          },
          "tag": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForCNAME": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForHTTPRedirect": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "nullable": true
          },
          "http_status": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForIPS": {
        "type": "object",
        "properties": {
          "ip_addresses": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForMX": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForNS": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForPTR": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForSRV": {
        "type": "object",
        "properties": {
          "weight": {
            "type": "string",
            "nullable": true
          },
          "port": {
            "type": "string",
            "nullable": true
          },
          "target": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForSSHFP": {
        "type": "object",
        "properties": {
          "algorithm": {
            "type": "string",
            "nullable": true
          },
          "fingerprint_type": {
            "type": "string",
            "nullable": true
          },
          "fingerprint": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForTXT": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecordContentAttributesForVirtualMachine": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "DNSRecordArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the record"
          },
          "type": {
            "$ref": "#/components/schemas/DNSRecordTypesEnum"
          },
          "ttl": {
            "type": "integer"
          },
          "priority": {
            "type": "integer"
          },
          "content": {
            "$ref": "#/components/schemas/DNSRecordContentArguments"
          }
        }
      },
      "DNSRecordContentArguments": {
        "type": "object",
        "properties": {
          "A": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForA"
          },
          "AAAA": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForAAAA"
          },
          "ALIAS": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForALIAS"
          },
          "CAA": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForCAA"
          },
          "CNAME": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForCNAME"
          },
          "HTTPRedirect": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForHTTPRedirect"
          },
          "IPS": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForIPS"
          },
          "MX": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForMX"
          },
          "NS": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForNS"
          },
          "PTR": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForPTR"
          },
          "SOA": {
            "type": "object"
          },
          "SRV": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForSRV"
          },
          "SSHFP": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForSSHFP"
          },
          "TXT": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForTXT"
          },
          "VirtualMachine": {
            "$ref": "#/components/schemas/DNSRecordContentArgumentsForVirtualMachine"
          }
        }
      },
      "DNSRecordContentArgumentsForA": {
        "type": "object",
        "properties": {
          "ip_address": {
            "type": "string"
          }
        }
      },
      "DNSRecordContentArgumentsForAAAA": {
        "type": "object",
        "properties": {
          "ip_address": {
            "type": "string"
          }
        }
      },
      "DNSRecordContentArgumentsForALIAS": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string"
          }
        }
      },
      "DNSRecordContentArgumentsForCAA": {
        "type": "object",
        "properties": {
          "flag": {
            "type": "string"
          },
          "tag": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "DNSRecordContentArgumentsForCNAME": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string"
          }
        }
      },
      "DNSRecordContentArgumentsForHTTPRedirect": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "http_status": {
            "type": "string"
          }
        }
      },
      "DNSRecordContentArgumentsForIPS": {
        "type": "object",
        "properties": {
          "ip_addresses": {
            "type": "string"
          }
        }
      },
      "DNSRecordContentArgumentsForMX": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string"
          }
        }
      },
      "DNSRecordContentArgumentsForNS": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string"
          }
        }
      },
      "DNSRecordContentArgumentsForPTR": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string"
          }
        }
      },
      "DNSRecordContentArgumentsForSRV": {
        "type": "object",
        "properties": {
          "weight": {
            "type": "string"
          },
          "port": {
            "type": "string"
          },
          "target": {
            "type": "string"
          }
        }
      },
      "DNSRecordContentArgumentsForSSHFP": {
        "type": "object",
        "properties": {
          "algorithm": {
            "type": "string"
          },
          "fingerprint_type": {
            "type": "string"
          },
          "fingerprint": {
            "type": "string"
          }
        }
      },
      "DNSRecordContentArgumentsForTXT": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string"
          }
        }
      },
      "DNSRecordContentArgumentsForVirtualMachine": {
        "type": "object",
        "properties": {
          "virtual_machine": {
            "type": "string"
          }
        }
      },
      "DNSRecordNotFoundEnum": {
        "type": "string",
        "enum": [
          "dns_record_not_found"
        ]
      },
      "DNSRecordLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "SecurityGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "allow_all_inbound": {
            "type": "boolean"
          },
          "allow_all_outbound": {
            "type": "boolean"
          },
          "associations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "SecurityGroupArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "allow_all_inbound": {
            "type": "boolean"
          },
          "allow_all_outbound": {
            "type": "boolean"
          },
          "associations": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Supply references to virtual machines, virtual machine groups or tags."
            }
          }
        }
      },
      "SecurityGroupNotFoundEnum": {
        "type": "string",
        "enum": [
          "security_group_not_found"
        ]
      },
      "SecurityGroupLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "DeleteSecurityGroup200ResponseSecurityGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "GetSecurityGroupRules200ResponseSecurityGroupRules": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "direction": {
            "$ref": "#/components/schemas/SecurityGroupRuleDirectionEnum"
          },
          "protocol": {
            "$ref": "#/components/schemas/SecurityGroupRuleProtocolEnum"
          },
          "action": {
            "$ref": "#/components/schemas/SecurityGroupRuleActionEnum"
          },
          "ports": {
            "type": "string",
            "nullable": true
          },
          "targets": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SecurityGroupRuleDirectionEnum": {
        "type": "string",
        "enum": [
          "inbound",
          "outbound"
        ]
      },
      "SecurityGroupRuleProtocolEnum": {
        "type": "string",
        "enum": [
          "TCP",
          "UDP",
          "ICMP"
        ]
      },
      "SecurityGroupRuleActionEnum": {
        "type": "string",
        "enum": [
          "allow",
          "deny"
        ]
      },
      "SecurityGroupRuleArguments": {
        "type": "object",
        "properties": {
          "direction": {
            "$ref": "#/components/schemas/SecurityGroupRuleDirectionEnum"
          },
          "protocol": {
            "$ref": "#/components/schemas/SecurityGroupRuleProtocolEnum"
          },
          "action": {
            "$ref": "#/components/schemas/SecurityGroupRuleActionEnum"
          },
          "ports": {
            "type": "string",
            "description": "Either single port (ie. 80), multi-port (ie. 80,443) or range (ie. 2000-3000)."
          },
          "targets": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Supply references to virtual machines, virtual machine groups, tags or custom IP addresses."
            }
          },
          "notes": {
            "type": "string"
          }
        }
      },
      "PostSecurityGroupRules200ResponseSecurityGroupRule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "security_group": {
            "$ref": "#/components/schemas/PostSecurityGroupRulesPartSecurityGroup"
          },
          "direction": {
            "$ref": "#/components/schemas/SecurityGroupRuleDirectionEnum"
          },
          "protocol": {
            "$ref": "#/components/schemas/SecurityGroupRuleProtocolEnum"
          },
          "action": {
            "$ref": "#/components/schemas/SecurityGroupRuleActionEnum"
          },
          "ports": {
            "type": "string",
            "nullable": true
          },
          "targets": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostSecurityGroupRulesPartSecurityGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "GetSecurityGroupsRulesSecurityGroupRule200ResponseSecurityGroupRule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "security_group": {
            "$ref": "#/components/schemas/GetSecurityGroupsRulesSecurityGroupRulePartSecurityGroup"
          },
          "direction": {
            "$ref": "#/components/schemas/SecurityGroupRuleDirectionEnum"
          },
          "protocol": {
            "$ref": "#/components/schemas/SecurityGroupRuleProtocolEnum"
          },
          "action": {
            "$ref": "#/components/schemas/SecurityGroupRuleActionEnum"
          },
          "ports": {
            "type": "string",
            "nullable": true
          },
          "targets": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetSecurityGroupsRulesSecurityGroupRulePartSecurityGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "SecurityGroupRuleNotFoundEnum": {
        "type": "string",
        "enum": [
          "security_group_rule_not_found"
        ]
      },
      "SecurityGroupRuleLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "PatchSecurityGroupsRulesSecurityGroupRule200ResponseSecurityGroupRule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "security_group": {
            "$ref": "#/components/schemas/PatchSecurityGroupsRulesSecurityGroupRulePartSecurityGroup"
          },
          "direction": {
            "$ref": "#/components/schemas/SecurityGroupRuleDirectionEnum"
          },
          "protocol": {
            "$ref": "#/components/schemas/SecurityGroupRuleProtocolEnum"
          },
          "action": {
            "$ref": "#/components/schemas/SecurityGroupRuleActionEnum"
          },
          "ports": {
            "type": "string",
            "nullable": true
          },
          "targets": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PatchSecurityGroupsRulesSecurityGroupRulePartSecurityGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "DeleteSecurityGroupsRulesSecurityGroupRule200ResponseSecurityGroupRule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "GetOrganizationFileStorageVolumes200ResponseFileStorageVolumes": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "data_center": {
            "$ref": "#/components/schemas/GetOrganizationFileStorageVolumesPartDataCenter"
          },
          "associations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "state": {
            "$ref": "#/components/schemas/FileStorageVolumeStateEnum"
          },
          "nfs_location": {
            "type": "string",
            "description": "The NFS location of where to mount the volume from.",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "description": "The size of the volume in bytes.",
            "nullable": true
          }
        }
      },
      "GetOrganizationFileStorageVolumesPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "FileStorageVolumeStateEnum": {
        "type": "string",
        "enum": [
          "pending",
          "failed",
          "ready",
          "configuring"
        ]
      },
      "GetFileStorageVolume200ResponseFileStorageVolume": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "data_center": {
            "$ref": "#/components/schemas/GetFileStorageVolumePartDataCenter"
          },
          "associations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "state": {
            "$ref": "#/components/schemas/FileStorageVolumeStateEnum"
          },
          "nfs_location": {
            "type": "string",
            "description": "The NFS location of where to mount the volume from.",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "description": "The size of the volume in bytes.",
            "nullable": true
          }
        }
      },
      "GetFileStorageVolumePartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "FileStorageVolumeNotFoundEnum": {
        "type": "string",
        "enum": [
          "file_storage_volume_not_found"
        ]
      },
      "FileStorageVolumeArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Unique name to help identify the volume."
          },
          "data_center": {
            "$ref": "#/components/schemas/DataCenterLookup"
          },
          "associations": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "The virtual machine IDs which can access this volume."
            }
          }
        }
      },
      "PostOrganizationFileStorageVolumes201ResponseFileStorageVolume": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "data_center": {
            "$ref": "#/components/schemas/PostOrganizationFileStorageVolumesPartDataCenter"
          },
          "associations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "state": {
            "$ref": "#/components/schemas/FileStorageVolumeStateEnum"
          },
          "nfs_location": {
            "type": "string",
            "description": "The NFS location of where to mount the volume from.",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "description": "The size of the volume in bytes.",
            "nullable": true
          }
        }
      },
      "PostOrganizationFileStorageVolumesPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "FileStorageVolumeLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "PatchFileStorageVolume200ResponseFileStorageVolume": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "data_center": {
            "$ref": "#/components/schemas/PatchFileStorageVolumePartDataCenter"
          },
          "associations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "state": {
            "$ref": "#/components/schemas/FileStorageVolumeStateEnum"
          },
          "nfs_location": {
            "type": "string",
            "description": "The NFS location of where to mount the volume from.",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "description": "The size of the volume in bytes.",
            "nullable": true
          }
        }
      },
      "PatchFileStorageVolumePartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "DeleteFileStorageVolume200ResponseFileStorageVolume": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "data_center": {
            "$ref": "#/components/schemas/DeleteFileStorageVolumePartDataCenter"
          },
          "associations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "state": {
            "$ref": "#/components/schemas/FileStorageVolumeStateEnum"
          },
          "nfs_location": {
            "type": "string",
            "description": "The NFS location of where to mount the volume from.",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "description": "The size of the volume in bytes.",
            "nullable": true
          }
        }
      },
      "DeleteFileStorageVolumePartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "GetOrganizationAvailableNetworks200ResponseNetworks": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string",
            "nullable": true
          },
          "default": {
            "type": "boolean",
            "description": "Indicates if this network is the default network for the data center."
          },
          "data_center": {
            "$ref": "#/components/schemas/GetOrganizationAvailableNetworksPartDataCenter"
          },
          "vlan": {
            "type": "integer",
            "description": "The underlying VLAN ID given to this network. Internal use only.",
            "nullable": true
          }
        }
      },
      "GetOrganizationAvailableNetworksPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "GetOrganizationAvailableNetworks200ResponseVirtualNetworks": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "data_center": {
            "$ref": "#/components/schemas/GetOrganizationAvailableNetworksPartDataCenter"
          }
        }
      },
      "NetworkSpeedProfile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "upload_speed_in_mbit": {
            "type": "integer",
            "nullable": true
          },
          "download_speed_in_mbit": {
            "type": "integer",
            "nullable": true
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "VirtualNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "data_center": {
            "$ref": "#/components/schemas/DataCenter"
          }
        }
      },
      "VirtualNetworkNotFoundEnum": {
        "type": "string",
        "enum": [
          "virtual_network_not_found"
        ]
      },
      "VirtualNetworkArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ]
      },
      "OneOfDataCenterNotFoundOrganizationNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/OrganizationNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/DataCenterNotFoundSchema"
          }
        ]
      },
      "VirtualNetworkLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "GetAddressLists200ResponseAddressLists": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "description": "Name of the address list."
          },
          "global": {
            "type": "boolean",
            "description": "Whether the address list is global or not."
          }
        }
      },
      "GetOrganizationAddressLists200ResponseAddressLists": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "description": "Name of the address list."
          },
          "global": {
            "type": "boolean",
            "description": "Whether the address list is global or not."
          }
        }
      },
      "AddressList": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "description": "Name of the address list."
          },
          "global": {
            "type": "boolean",
            "description": "Whether the address list is global or not."
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressListEntry"
            }
          }
        }
      },
      "AddressListEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string",
            "description": "Address or network."
          },
          "name": {
            "type": "string",
            "description": "Optional name/comment."
          }
        }
      },
      "AddressListNotFoundEnum": {
        "type": "string",
        "enum": [
          "address_list_not_found"
        ]
      },
      "AddressListArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the address list."
          }
        }
      },
      "AddressListLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "AddressListEntryNotFoundEnum": {
        "type": "string",
        "enum": [
          "address_list_entry_not_found"
        ]
      },
      "AddressListEntryArguments": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "Address or network to add to the list."
          },
          "name": {
            "type": "string",
            "description": "Optional name/comment."
          }
        }
      },
      "AddressListEntryLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "GetOrganizationCertificates200ResponseCertificates": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "issuer": {
            "$ref": "#/components/schemas/IssuerEnum"
          },
          "state": {
            "$ref": "#/components/schemas/CertificateStateEnum"
          },
          "expires_at": {
            "type": "integer",
            "nullable": true
          },
          "last_issued_at": {
            "type": "integer",
            "nullable": true
          }
        }
      },
      "IssuerEnum": {
        "type": "string",
        "enum": [
          "lets_encrypt",
          "custom",
          "self_signed"
        ]
      },
      "CertificateStateEnum": {
        "type": "string",
        "enum": [
          "pending",
          "issue_failed",
          "issued",
          "issuing"
        ]
      },
      "Certificate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "additional_names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "issuer": {
            "$ref": "#/components/schemas/IssuerEnum"
          },
          "state": {
            "$ref": "#/components/schemas/CertificateStateEnum"
          },
          "created_at": {
            "type": "integer"
          },
          "expires_at": {
            "type": "integer",
            "nullable": true
          },
          "last_issued_at": {
            "type": "integer",
            "nullable": true
          },
          "issue_error": {
            "type": "string",
            "nullable": true
          },
          "authorization_method": {
            "type": "string",
            "nullable": true
          },
          "certificate_api_url": {
            "type": "string",
            "description": "This is the URL that can be used to access this certificate's details. through the certificate API (a different API to this one). If null, this means that it is no longer available. If that is the case, you can get a new URL by resetting the API token for this certificate.",
            "nullable": true
          },
          "certificate": {
            "type": "string",
            "nullable": true
          },
          "chain": {
            "type": "string",
            "nullable": true
          },
          "private_key": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CertificateNotFoundEnum": {
        "type": "string",
        "enum": [
          "certificate_not_found"
        ]
      },
      "GetOrganizationLoadBalancers200ResponseLoadBalancers": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "api_reference": {
            "type": "string",
            "nullable": true
          },
          "resource_type": {
            "$ref": "#/components/schemas/LoadBalancerResourceTypesEnum"
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoadBalancerResource"
            }
          },
          "resource_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ip_address": {
            "$ref": "#/components/schemas/GetOrganizationLoadBalancersPartIPAddress"
          },
          "data_center": {
            "$ref": "#/components/schemas/GetOrganizationLoadBalancersPartDataCenter"
          }
        }
      },
      "LoadBalancerResourceTypesEnum": {
        "type": "string",
        "enum": [
          "virtual_machines",
          "virtual_machine_groups",
          "tags"
        ]
      },
      "LoadBalancerResource": {
        "type": "object",
        "properties": {
          "resources": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/VirtualMachine"
              },
              {
                "$ref": "#/components/schemas/VirtualMachineGroup"
              },
              {
                "$ref": "#/components/schemas/Tag"
              }
            ]
          }
        }
      },
      "GetOrganizationLoadBalancersPartIPAddress": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string"
          }
        }
      },
      "GetOrganizationLoadBalancersPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "LoadBalancerArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "api_reference": {
            "type": "string"
          },
          "resource_type": {
            "$ref": "#/components/schemas/LoadBalancerResourceTypesEnum"
          },
          "resource_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "data_center": {
            "$ref": "#/components/schemas/DataCenterLookup"
          },
          "https_redirect": {
            "type": "boolean"
          },
          "enable_weighting": {
            "type": "boolean"
          },
          "weights": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoadBalancerWeightsArguments"
            }
          },
          "standby_vms": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "The IDs of any virtual machines that should be used as standbys in a failover situation"
            }
          }
        }
      },
      "LoadBalancerWeightsArguments": {
        "type": "object",
        "properties": {
          "virtual_machine_id": {
            "type": "string"
          },
          "weight": {
            "type": "integer"
          }
        }
      },
      "PostOrganizationLoadBalancers201ResponseLoadBalancer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "api_reference": {
            "type": "string",
            "nullable": true
          },
          "resource_type": {
            "$ref": "#/components/schemas/LoadBalancerResourceTypesEnum"
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoadBalancerResource"
            }
          },
          "resource_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ip_address": {
            "$ref": "#/components/schemas/PostOrganizationLoadBalancersPartIPAddress"
          },
          "https_redirect": {
            "type": "boolean"
          },
          "backend_certificate": {
            "type": "string"
          },
          "backend_certificate_key": {
            "type": "string"
          },
          "data_center": {
            "$ref": "#/components/schemas/PostOrganizationLoadBalancersPartDataCenter"
          },
          "enable_weighting": {
            "type": "boolean"
          },
          "weights": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoadBalancerWeight"
            }
          },
          "standby_vms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "PostOrganizationLoadBalancersPartIPAddress": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        }
      },
      "PostOrganizationLoadBalancersPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "LoadBalancerWeight": {
        "type": "object",
        "properties": {
          "virtual_machine_id": {
            "type": "string"
          },
          "weight": {
            "type": "integer"
          }
        }
      },
      "GetLoadBalancer200ResponseLoadBalancer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "api_reference": {
            "type": "string",
            "nullable": true
          },
          "resource_type": {
            "$ref": "#/components/schemas/LoadBalancerResourceTypesEnum"
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoadBalancerResource"
            }
          },
          "resource_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ip_address": {
            "$ref": "#/components/schemas/GetLoadBalancerPartIPAddress"
          },
          "https_redirect": {
            "type": "boolean"
          },
          "backend_certificate": {
            "type": "string"
          },
          "backend_certificate_key": {
            "type": "string"
          },
          "data_center": {
            "$ref": "#/components/schemas/GetLoadBalancerPartDataCenter"
          },
          "enable_weighting": {
            "type": "boolean"
          },
          "weights": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoadBalancerWeight"
            }
          },
          "standby_vms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetLoadBalancerPartIPAddress": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        }
      },
      "GetLoadBalancerPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "LoadBalancerNotFoundEnum": {
        "type": "string",
        "enum": [
          "load_balancer_not_found"
        ]
      },
      "LoadBalancerLookup": {
        "description": "All 'load_balancer[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "api_reference": {
            "type": "string"
          }
        }
      },
      "PatchLoadBalancer200ResponseLoadBalancer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "api_reference": {
            "type": "string",
            "nullable": true
          },
          "resource_type": {
            "$ref": "#/components/schemas/LoadBalancerResourceTypesEnum"
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoadBalancerResource"
            }
          },
          "resource_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ip_address": {
            "$ref": "#/components/schemas/PatchLoadBalancerPartIPAddress"
          },
          "https_redirect": {
            "type": "boolean"
          },
          "backend_certificate": {
            "type": "string"
          },
          "backend_certificate_key": {
            "type": "string"
          },
          "data_center": {
            "$ref": "#/components/schemas/PatchLoadBalancerPartDataCenter"
          },
          "enable_weighting": {
            "type": "boolean"
          },
          "weights": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoadBalancerWeight"
            }
          },
          "standby_vms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "PatchLoadBalancerPartIPAddress": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        }
      },
      "PatchLoadBalancerPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "DeleteLoadBalancer200ResponseLoadBalancer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "api_reference": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetLoadBalancerRules200ResponseLoadBalancerRules": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "algorithm": {
            "$ref": "#/components/schemas/LoadBalancerRuleAlgorithmEnum"
          },
          "destination_port": {
            "type": "integer"
          },
          "listen_port": {
            "type": "integer"
          },
          "protocol": {
            "$ref": "#/components/schemas/LoadBalancerRuleProtocolEnum"
          },
          "certificates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetLoadBalancerRulesPartCertificates"
            }
          },
          "check_enabled": {
            "type": "boolean"
          }
        }
      },
      "LoadBalancerRuleAlgorithmEnum": {
        "type": "string",
        "enum": [
          "round_robin",
          "least_connections",
          "sticky"
        ]
      },
      "LoadBalancerRuleProtocolEnum": {
        "type": "string",
        "enum": [
          "HTTPS",
          "TCP",
          "HTTP"
        ]
      },
      "GetLoadBalancerRulesPartCertificates": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "LoadBalancerRuleArguments": {
        "type": "object",
        "properties": {
          "algorithm": {
            "$ref": "#/components/schemas/LoadBalancerRuleAlgorithmEnum"
          },
          "destination_port": {
            "type": "integer"
          },
          "listen_port": {
            "type": "integer"
          },
          "protocol": {
            "$ref": "#/components/schemas/LoadBalancerRuleProtocolEnum"
          },
          "proxy_protocol": {
            "type": "boolean"
          },
          "backend_ssl": {
            "type": "boolean"
          },
          "passthrough_ssl": {
            "type": "boolean"
          },
          "certificates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CertificateLookup"
            }
          },
          "check_enabled": {
            "type": "boolean"
          },
          "check_fall": {
            "type": "integer"
          },
          "check_interval": {
            "type": "integer"
          },
          "check_path": {
            "type": "string"
          },
          "check_protocol": {
            "$ref": "#/components/schemas/LoadBalancerRuleCheckProtocolEnum"
          },
          "check_rise": {
            "type": "integer"
          },
          "check_timeout": {
            "type": "integer"
          },
          "check_http_statuses": {
            "$ref": "#/components/schemas/LoadBalancerRuleHTTPStatusesEnum"
          }
        }
      },
      "CertificateLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "LoadBalancerRuleCheckProtocolEnum": {
        "type": "string",
        "enum": [
          "HTTP",
          "TCP"
        ]
      },
      "LoadBalancerRuleHTTPStatusesEnum": {
        "type": "string",
        "enum": [
          "2",
          "23",
          "234"
        ]
      },
      "PostLoadBalancerRules200ResponseLoadBalancerRule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "algorithm": {
            "$ref": "#/components/schemas/LoadBalancerRuleAlgorithmEnum"
          },
          "destination_port": {
            "type": "integer"
          },
          "listen_port": {
            "type": "integer"
          },
          "protocol": {
            "$ref": "#/components/schemas/LoadBalancerRuleProtocolEnum"
          },
          "proxy_protocol": {
            "type": "boolean"
          },
          "certificates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostLoadBalancerRulesPartCertificates"
            }
          },
          "backend_ssl": {
            "type": "boolean"
          },
          "passthrough_ssl": {
            "type": "boolean"
          },
          "check_enabled": {
            "type": "boolean"
          },
          "check_fall": {
            "type": "integer"
          },
          "check_interval": {
            "type": "integer"
          },
          "check_path": {
            "type": "string"
          },
          "check_protocol": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LoadBalancerRuleCheckProtocolEnum"
              }
            ],
            "nullable": true
          },
          "check_rise": {
            "type": "integer"
          },
          "check_timeout": {
            "type": "integer"
          },
          "check_http_statuses": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LoadBalancerRuleHTTPStatusesEnum"
              }
            ],
            "nullable": true
          },
          "load_balancer": {
            "$ref": "#/components/schemas/PostLoadBalancerRulesPartLoadBalancer"
          }
        }
      },
      "PostLoadBalancerRulesPartCertificates": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "additional_names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "state": {
            "$ref": "#/components/schemas/CertificateStateEnum"
          }
        }
      },
      "PostLoadBalancerRulesPartLoadBalancer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "GetLoadBalancersRulesLoadBalancerRule200ResponseLoadBalancerRule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "algorithm": {
            "$ref": "#/components/schemas/LoadBalancerRuleAlgorithmEnum"
          },
          "destination_port": {
            "type": "integer"
          },
          "listen_port": {
            "type": "integer"
          },
          "protocol": {
            "$ref": "#/components/schemas/LoadBalancerRuleProtocolEnum"
          },
          "proxy_protocol": {
            "type": "boolean"
          },
          "certificates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetLoadBalancersRulesLoadBalancerRulePartCertificates"
            }
          },
          "backend_ssl": {
            "type": "boolean"
          },
          "passthrough_ssl": {
            "type": "boolean"
          },
          "check_enabled": {
            "type": "boolean"
          },
          "check_fall": {
            "type": "integer"
          },
          "check_interval": {
            "type": "integer"
          },
          "check_path": {
            "type": "string"
          },
          "check_protocol": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LoadBalancerRuleCheckProtocolEnum"
              }
            ],
            "nullable": true
          },
          "check_rise": {
            "type": "integer"
          },
          "check_timeout": {
            "type": "integer"
          },
          "check_http_statuses": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LoadBalancerRuleHTTPStatusesEnum"
              }
            ],
            "nullable": true
          },
          "load_balancer": {
            "$ref": "#/components/schemas/GetLoadBalancersRulesLoadBalancerRulePartLoadBalancer"
          }
        }
      },
      "GetLoadBalancersRulesLoadBalancerRulePartCertificates": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "additional_names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "state": {
            "$ref": "#/components/schemas/CertificateStateEnum"
          }
        }
      },
      "GetLoadBalancersRulesLoadBalancerRulePartLoadBalancer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "LoadBalancerRuleNotFoundEnum": {
        "type": "string",
        "enum": [
          "load_balancer_rule_not_found"
        ]
      },
      "LoadBalancerRuleLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "PatchLoadBalancersRulesLoadBalancerRule200ResponseLoadBalancerRule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "algorithm": {
            "$ref": "#/components/schemas/LoadBalancerRuleAlgorithmEnum"
          },
          "destination_port": {
            "type": "integer"
          },
          "listen_port": {
            "type": "integer"
          },
          "protocol": {
            "$ref": "#/components/schemas/LoadBalancerRuleProtocolEnum"
          },
          "proxy_protocol": {
            "type": "boolean"
          },
          "certificates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PatchLoadBalancersRulesLoadBalancerRulePartCertificates"
            }
          },
          "backend_ssl": {
            "type": "boolean"
          },
          "passthrough_ssl": {
            "type": "boolean"
          },
          "check_enabled": {
            "type": "boolean"
          },
          "check_fall": {
            "type": "integer"
          },
          "check_interval": {
            "type": "integer"
          },
          "check_path": {
            "type": "string"
          },
          "check_protocol": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LoadBalancerRuleCheckProtocolEnum"
              }
            ],
            "nullable": true
          },
          "check_rise": {
            "type": "integer"
          },
          "check_timeout": {
            "type": "integer"
          },
          "check_http_statuses": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LoadBalancerRuleHTTPStatusesEnum"
              }
            ],
            "nullable": true
          },
          "load_balancer": {
            "$ref": "#/components/schemas/PatchLoadBalancersRulesLoadBalancerRulePartLoadBalancer"
          }
        }
      },
      "PatchLoadBalancersRulesLoadBalancerRulePartCertificates": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "additional_names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "state": {
            "$ref": "#/components/schemas/CertificateStateEnum"
          }
        }
      },
      "PatchLoadBalancersRulesLoadBalancerRulePartLoadBalancer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "DeleteLoadBalancersRulesLoadBalancerRule200ResponseLoadBalancerRule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "GetOrganizationIPAddresses200ResponseIPAddresses": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "reverse_dns": {
            "type": "string"
          },
          "vip": {
            "type": "boolean"
          },
          "allocation_id": {
            "type": "string",
            "nullable": true
          },
          "allocation_type": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "IPAddressVersionEnum": {
        "type": "string",
        "enum": [
          "ipv4",
          "ipv6"
        ]
      },
      "OneOfNetworkNotFoundOrganizationNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/OrganizationNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/NetworkNotFoundSchema"
          }
        ]
      },
      "APIAuthenticator503Schema": {
        "type": "object",
        "description": "The service is currently unavailable, please try again later",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ServiceUnavailableEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "NoAvailableAddressesEnum": {
        "type": "string",
        "enum": [
          "no_available_addresses"
        ]
      },
      "NoAvailableAddressesSchema": {
        "type": "object",
        "description": "Our pool of addresses for that version seems to have run dry. If this issue continues, please contact support.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/NoAvailableAddressesEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfNoAvailableAddresses503Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/APIAuthenticator503Schema"
          },
          {
            "$ref": "#/components/schemas/NoAvailableAddressesSchema"
          }
        ]
      },
      "GetIPAddress200ResponseAllocation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "ResourceDoesNotSupportUnallocationEnum": {
        "type": "string",
        "enum": [
          "resource_does_not_support_unallocation"
        ]
      },
      "NoAllocationEnum": {
        "type": "string",
        "enum": [
          "no_allocation"
        ]
      },
      "GetVirtualMachineNetworkInterfaces200ResponseVirtualMachineNetworkInterfaces": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetVirtualMachineNetworkInterfacesPartNetwork"
              }
            ],
            "nullable": true
          },
          "virtual_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetVirtualMachineNetworkInterfacesPartVirtualNetwork"
              }
            ],
            "nullable": true
          },
          "ip_addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetVirtualMachineNetworkInterfacesPartIPAddresses"
            }
          }
        }
      },
      "GetVirtualMachineNetworkInterfacesPartNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "vlan": {
            "type": "integer",
            "description": "The underlying VLAN ID given to this network. Internal use only.",
            "nullable": true
          }
        }
      },
      "GetVirtualMachineNetworkInterfacesPartVirtualNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "GetVirtualMachineNetworkInterfacesPartIPAddresses": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "reverse_dns": {
            "type": "string"
          },
          "address_with_mask": {
            "type": "string"
          }
        }
      },
      "NetworkSpeedProfileLookup": {
        "description": "All 'speed_profile[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaces200ResponseVirtualMachineNetworkInterface": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "virtual_machine": {
            "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfacesPartVirtualMachine"
          },
          "name": {
            "type": "string"
          },
          "network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfacesPartNetwork"
              }
            ],
            "nullable": true
          },
          "virtual_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfacesPartVirtualNetwork"
              }
            ],
            "nullable": true
          },
          "mac_address": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "ip_addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfacesPartIPAddresses"
            }
          },
          "speed_profile": {
            "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfacesPartSpeedProfile"
          }
        }
      },
      "PostVirtualMachineNetworkInterfacesPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfacesPartNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfacesPartVirtualNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfacesPartIPAddresses": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfacesPartSpeedProfile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "VirtualNetworkNotFoundSchema": {
        "type": "object",
        "description": "No virtual network was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/VirtualNetworkNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "NetworkSpeedProfileNotFoundEnum": {
        "type": "string",
        "enum": [
          "network_speed_profile_not_found"
        ]
      },
      "NetworkSpeedProfileNotFoundSchema": {
        "type": "object",
        "description": "No network speed profile was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/NetworkSpeedProfileNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfNetworkNotFoundVirtualMachineNotFoundVirtualNetworkNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/VirtualMachineNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/NetworkNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/VirtualNetworkNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/NetworkSpeedProfileNotFoundSchema"
          }
        ]
      },
      "GetVirtualMachineNetworkInterface200ResponseVirtualMachineNetworkInterface": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "virtual_machine": {
            "$ref": "#/components/schemas/GetVirtualMachineNetworkInterfacePartVirtualMachine"
          },
          "name": {
            "type": "string"
          },
          "network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetVirtualMachineNetworkInterfacePartNetwork"
              }
            ],
            "nullable": true
          },
          "virtual_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetVirtualMachineNetworkInterfacePartVirtualNetwork"
              }
            ],
            "nullable": true
          },
          "mac_address": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "ip_addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetVirtualMachineNetworkInterfacePartIPAddresses"
            }
          }
        }
      },
      "GetVirtualMachineNetworkInterfacePartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "GetVirtualMachineNetworkInterfacePartNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "GetVirtualMachineNetworkInterfacePartVirtualNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "GetVirtualMachineNetworkInterfacePartIPAddresses": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        }
      },
      "InterfaceNotFoundEnum": {
        "type": "string",
        "enum": [
          "interface_not_found"
        ]
      },
      "InterfaceNotFoundSchema": {
        "type": "object",
        "description": "An interface could not be found for the specified network",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/InterfaceNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfInterfaceNotFoundNetworkNotFoundVirtualMachineNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/VirtualMachineNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/NetworkNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/InterfaceNotFoundSchema"
          }
        ]
      },
      "GetVMNIVMNI200ResponseVirtualMachineNetworkInterface": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "virtual_machine": {
            "$ref": "#/components/schemas/GetVMNIVMNIPartVirtualMachine"
          },
          "name": {
            "type": "string"
          },
          "network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetVMNIVMNIPartNetwork"
              }
            ],
            "nullable": true
          },
          "virtual_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetVMNIVMNIPartVirtualNetwork"
              }
            ],
            "nullable": true
          },
          "mac_address": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "ip_addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetVMNIVMNIPartIPAddresses"
            }
          },
          "speed_profile": {
            "$ref": "#/components/schemas/GetVMNIVMNIPartSpeedProfile"
          }
        }
      },
      "GetVMNIVMNIPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "GetVMNIVMNIPartNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "vlan": {
            "type": "integer",
            "description": "The underlying VLAN ID given to this network. Internal use only.",
            "nullable": true
          }
        }
      },
      "GetVMNIVMNIPartVirtualNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "GetVMNIVMNIPartIPAddresses": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        }
      },
      "GetVMNIVMNIPartSpeedProfile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "VirtualMachineNetworkInterfaceNotFoundEnum": {
        "type": "string",
        "enum": [
          "virtual_machine_network_interface_not_found"
        ]
      },
      "VirtualMachineNetworkInterfaceLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "DeleteVirtualMachineNetworkInterface200ResponseVirtualMachineNetworkInterface": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "virtual_machine": {
            "$ref": "#/components/schemas/DeleteVirtualMachineNetworkInterfacePartVirtualMachine"
          },
          "name": {
            "type": "string"
          },
          "network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeleteVirtualMachineNetworkInterfacePartNetwork"
              }
            ],
            "nullable": true
          },
          "virtual_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeleteVirtualMachineNetworkInterfacePartVirtualNetwork"
              }
            ],
            "nullable": true
          },
          "mac_address": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "ip_addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeleteVirtualMachineNetworkInterfacePartIPAddresses"
            }
          },
          "speed_profile": {
            "$ref": "#/components/schemas/DeleteVirtualMachineNetworkInterfacePartSpeedProfile"
          }
        }
      },
      "DeleteVirtualMachineNetworkInterfacePartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "DeleteVirtualMachineNetworkInterfacePartNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "DeleteVirtualMachineNetworkInterfacePartVirtualNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "DeleteVirtualMachineNetworkInterfacePartIPAddresses": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        }
      },
      "DeleteVirtualMachineNetworkInterfacePartSpeedProfile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceAllocateIP200ResponseVirtualMachineNetworkInterface": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "virtual_machine": {
            "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceAllocateIPPartVirtualMachine"
          },
          "name": {
            "type": "string"
          },
          "network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceAllocateIPPartNetwork"
              }
            ],
            "nullable": true
          },
          "virtual_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceAllocateIPPartVirtualNetwork"
              }
            ],
            "nullable": true
          },
          "mac_address": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "ip_addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceAllocateIPPartIPAddresses"
            }
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceAllocateIPPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceAllocateIPPartNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceAllocateIPPartVirtualNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceAllocateIPPartIPAddresses": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        }
      },
      "VirtualMachineNetworkInterfaceNotFoundSchema": {
        "type": "object",
        "description": "No network interface was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/VirtualMachineNetworkInterfaceNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfIPAddressNotFoundVirtualMachineNetworkInterfaceNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/VirtualMachineNetworkInterfaceNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/IPAddressNotFoundSchema"
          }
        ]
      },
      "InvalidIPEnum": {
        "type": "string",
        "enum": [
          "invalid_ip"
        ]
      },
      "InvalidIPSchema": {
        "type": "object",
        "description": "This IP address is not valid for this network interface.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/InvalidIPEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfIPAlreadyAllocatedInvalidIP422Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/IPAlreadyAllocatedSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidIPSchema"
          }
        ]
      },
      "OneOfNetworkSpeedProfileNotFoundVirtualMachineNetworkInterfaceNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/VirtualMachineNetworkInterfaceNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/NetworkSpeedProfileNotFoundSchema"
          }
        ]
      },
      "SpeedProfileAlreadyAssignedEnum": {
        "type": "string",
        "enum": [
          "speed_profile_already_assigned"
        ]
      },
      "PostVirtualMachineNetworkInterfaceAttach200ResponseVirtualMachineNetworkInterface": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "virtual_machine": {
            "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceAttachPartVirtualMachine"
          },
          "name": {
            "type": "string"
          },
          "network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceAttachPartNetwork"
              }
            ],
            "nullable": true
          },
          "virtual_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceAttachPartVirtualNetwork"
              }
            ],
            "nullable": true
          },
          "mac_address": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "ip_addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceAttachPartIPAddresses"
            }
          },
          "speed_profile": {
            "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceAttachPartSpeedProfile"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceAttachPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceAttachPartNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceAttachPartVirtualNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceAttachPartIPAddresses": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceAttachPartSpeedProfile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "VirtualMachineNetworkInterfaceAlreadyAttachedEnum": {
        "type": "string",
        "enum": [
          "virtual_machine_network_interface_already_attached"
        ]
      },
      "PostVirtualMachineNetworkInterfaceDetach200ResponseVirtualMachineNetworkInterface": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "virtual_machine": {
            "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceDetachPartVirtualMachine"
          },
          "name": {
            "type": "string"
          },
          "network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceDetachPartNetwork"
              }
            ],
            "nullable": true
          },
          "virtual_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceDetachPartVirtualNetwork"
              }
            ],
            "nullable": true
          },
          "mac_address": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "ip_addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceDetachPartIPAddresses"
            }
          },
          "speed_profile": {
            "$ref": "#/components/schemas/PostVirtualMachineNetworkInterfaceDetachPartSpeedProfile"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceDetachPartVirtualMachine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceDetachPartNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceDetachPartVirtualNetwork": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceDetachPartIPAddresses": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        }
      },
      "PostVirtualMachineNetworkInterfaceDetachPartSpeedProfile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "VirtualMachineNetworkInterfaceAlreadyDetachedEnum": {
        "type": "string",
        "enum": [
          "virtual_machine_network_interface_already_detached"
        ]
      },
      "GetOrganizationTags200ResponseTags": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "color": {
            "$ref": "#/components/schemas/TagColorsEnum"
          }
        }
      },
      "TagArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "color": {
            "$ref": "#/components/schemas/TagColorsEnum"
          }
        }
      },
      "TagNotFoundEnum": {
        "type": "string",
        "enum": [
          "tag_not_found"
        ]
      },
      "TagLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "VirtualMachineGroupArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "segregate": {
            "type": "boolean"
          },
          "auto_segregate": {
            "type": "boolean"
          }
        }
      },
      "VirtualMachineGroupNotFoundEnum": {
        "type": "string",
        "enum": [
          "virtual_machine_group_not_found"
        ]
      },
      "GetOperatingSystems200ResponseOperatingSystems": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "TrashObjectNotFoundEnum": {
        "type": "string",
        "enum": [
          "trash_object_not_found"
        ]
      },
      "TrashObjectLookup": {
        "description": "All 'trash_object[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "object_id": {
            "type": "string"
          }
        }
      },
      "GetZones200ResponseZones": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string",
            "nullable": true
          },
          "data_center": {
            "$ref": "#/components/schemas/GetZonesPartDataCenter"
          }
        }
      },
      "GetZonesPartDataCenter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permalink": {
            "type": "string"
          }
        }
      },
      "GetCountries200ResponseCountries": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "CountryNotFoundEnum": {
        "type": "string",
        "enum": [
          "country_not_found"
        ]
      },
      "GetCountryCountryStates200ResponseCountryStates": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "CountryStateNotFoundEnum": {
        "type": "string",
        "enum": [
          "country_state_not_found"
        ]
      },
      "GetCurrencies200ResponseCurrencies": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "CurrencyNotFoundEnum": {
        "type": "string",
        "enum": [
          "currency_not_found"
        ]
      },
      "TaskNotFoundEnum": {
        "type": "string",
        "enum": [
          "task_not_found"
        ]
      },
      "GetUsersCurrent200ResponseOrganizations": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "sub_domain": {
            "type": "string"
          }
        }
      },
      "NoUserAssociatedWithIdentityEnum": {
        "type": "string",
        "enum": [
          "no_user_associated_with_identity"
        ]
      },
      "IdentityNotLinkedToWebSessionEnum": {
        "type": "string",
        "enum": [
          "identity_not_linked_to_web_session"
        ]
      },
      "IdentityNotLinkedToWebSessionSchema": {
        "type": "object",
        "description": "The authenticated identity is not linked to a web session",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/IdentityNotLinkedToWebSessionEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfIdentityNotLinkedToWebSession400Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/APIAuthenticator400Schema"
          },
          {
            "$ref": "#/components/schemas/IdentityNotLinkedToWebSessionSchema"
          }
        ]
      },
      "ObjectStorageClusterLookup": {
        "type": "object",
        "properties": {
          "region": {
            "type": "string"
          }
        }
      },
      "ObjectStorageAccount": {
        "type": "object",
        "properties": {
          "region": {
            "type": "string"
          },
          "created_at": {
            "type": "integer"
          },
          "provisioning_state": {
            "$ref": "#/components/schemas/ObjectStorageAccountProvisioningStateEnum"
          },
          "size": {
            "type": "integer",
            "description": "The total storage used in bytes (updated periodically)"
          },
          "bucket_count": {
            "type": "integer"
          },
          "data_center": {
            "$ref": "#/components/schemas/DataCenter"
          }
        }
      },
      "ObjectStorageAccountProvisioningStateEnum": {
        "type": "string",
        "enum": [
          "provisioning",
          "provisioned",
          "failed"
        ]
      },
      "ObjectStorageClusterNotFoundEnum": {
        "type": "string",
        "enum": [
          "object_storage_cluster_not_found"
        ]
      },
      "ObjectStorageClusterNotFoundSchema": {
        "type": "object",
        "description": "No object storage cluster was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ObjectStorageClusterNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfObjectStorageClusterNotFoundOrganizationNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/OrganizationNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/ObjectStorageClusterNotFoundSchema"
          }
        ]
      },
      "ObjectStorageAccountNotProvisionedEnum": {
        "type": "string",
        "enum": [
          "object_storage_account_not_provisioned"
        ]
      },
      "ObjectStorageAccountNotProvisionedSchema": {
        "type": "object",
        "description": "An object storage account was found but it is not provisioned. If the problem persists, try re-creating the account.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ObjectStorageAccountNotProvisionedEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "ObjectStorageAccountSuspendedEnum": {
        "type": "string",
        "enum": [
          "object_storage_account_suspended"
        ]
      },
      "ObjectStorageAccountSuspendedSchema": {
        "type": "object",
        "description": "An object storage account was found from the arguments provided but it is suspended",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ObjectStorageAccountSuspendedEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfObjectStorageAccountNotProvisionedOrganizationSuspendedPermissionDenied403Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/UnauthorizedNetworkForAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidCapabilitiesTokenSchema"
          },
          {
            "$ref": "#/components/schemas/ScopeNotGrantedErrorSchema"
          },
          {
            "$ref": "#/components/schemas/OrganizationSuspendedSchema"
          },
          {
            "$ref": "#/components/schemas/OrganizationNotActivatedSchema"
          },
          {
            "$ref": "#/components/schemas/PermissionDeniedSchema"
          },
          {
            "$ref": "#/components/schemas/ObjectStorageAccountNotProvisionedSchema"
          },
          {
            "$ref": "#/components/schemas/ObjectStorageAccountSuspendedSchema"
          }
        ]
      },
      "ObjectStorageAccountNotFoundEnum": {
        "type": "string",
        "enum": [
          "object_storage_account_not_found"
        ]
      },
      "ObjectStorageAccountNotFoundSchema": {
        "type": "object",
        "description": "No object storage account was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ObjectStorageAccountNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfObjectStorageAccountNotFoundObjectStorageClusterNotFoundOrganizationNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/OrganizationNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/ObjectStorageClusterNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/ObjectStorageAccountNotFoundSchema"
          }
        ]
      },
      "DeleteOrganizationObjectStorageObjectStorageCluster200ResponseTrashObject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "keep_until": {
            "type": "integer"
          },
          "object_type": {
            "type": "string"
          }
        }
      },
      "ObjectStorageBucketArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Can only include lowercase alphanumeric characters and hyphens, has to be globally unique."
          },
          "label": {
            "type": "string",
            "description": "Optional alternative name/comment."
          },
          "serve_static_site": {
            "type": "boolean",
            "description": "Whether to serve the bucket as a static website, defaults to false."
          },
          "static_site_index": {
            "type": "string",
            "description": "Optional name of the index html page for a static website (requires public_read)."
          },
          "static_site_error": {
            "type": "string",
            "description": "Optional name of the error html page for a static website (requires public_read)."
          },
          "access_control_list": {
            "$ref": "#/components/schemas/ObjectStorageBucketACLArguments"
          }
        }
      },
      "ObjectStorageBucketACLArguments": {
        "type": "object",
        "properties": {
          "public_read": {
            "type": "boolean",
            "description": "Allow anyone to read objects in the bucket."
          },
          "public_list": {
            "type": "boolean",
            "description": "Allow anyone to list objects in the bucket (requires public_read)."
          },
          "all_keys_read": {
            "type": "boolean",
            "description": "Allow any access key to read objects in the bucket."
          },
          "all_keys_write": {
            "type": "boolean",
            "description": "Allow any access key to create or delete objects in the bucket."
          },
          "read_key_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Array of access key ids that are allowed to read objects in the bucket."
            }
          },
          "write_key_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Array of access key ids that are allowed to create and delete objects in the bucket."
            }
          }
        }
      },
      "ObjectStorageBucket": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "integer"
          },
          "state": {
            "$ref": "#/components/schemas/ObjectStorageBucketStateEnum"
          },
          "custom_domains": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "object_count": {
            "type": "integer",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "nullable": true
          },
          "serve_static_site": {
            "type": "boolean"
          },
          "static_site_index": {
            "type": "string",
            "nullable": true
          },
          "static_site_error": {
            "type": "string",
            "nullable": true
          },
          "public_url": {
            "type": "string"
          },
          "access_control_list": {
            "$ref": "#/components/schemas/ObjectStorageBucketAccessControlList"
          }
        }
      },
      "ObjectStorageBucketStateEnum": {
        "type": "string",
        "enum": [
          "pending",
          "configured"
        ]
      },
      "ObjectStorageBucketAccessControlList": {
        "type": "object",
        "properties": {
          "public_read": {
            "type": "boolean"
          },
          "public_list": {
            "type": "boolean"
          },
          "all_keys_read": {
            "type": "boolean"
          },
          "all_keys_write": {
            "type": "boolean"
          },
          "read_key_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "write_key_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ObjectStorageBucketLookup": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        }
      },
      "ObjectStorageBucketNotFoundEnum": {
        "type": "string",
        "enum": [
          "object_storage_bucket_not_found"
        ]
      },
      "ObjectStorageBucketNotFoundSchema": {
        "type": "object",
        "description": "No object storage bucket was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ObjectStorageBucketNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfObjectStorageBucketNotFoundObjectStorageClusterNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ObjectStorageClusterNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/ObjectStorageBucketNotFoundSchema"
          }
        ]
      },
      "MultipleObjectStorageBucketsFoundEnum": {
        "type": "string",
        "enum": [
          "multiple_object_storage_buckets_found"
        ]
      },
      "ObjectStorageBucketDeletionError": {
        "type": "object",
        "properties": {
          "details": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ObjectStorageBucketDeletionErrorEnum": {
        "type": "string",
        "enum": [
          "object_storage_bucket_deletion_error"
        ]
      },
      "ObjectStorageBucketDeletionErrorSchema": {
        "type": "object",
        "description": "An error occurred while deleting the bucket.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ObjectStorageBucketDeletionErrorEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "$ref": "#/components/schemas/ObjectStorageBucketDeletionError"
          }
        }
      },
      "OneOfObjectStorageBucketDeletionErrorPermissionDenied403Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/UnauthorizedNetworkForAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidAPITokenSchema"
          },
          {
            "$ref": "#/components/schemas/InvalidCapabilitiesTokenSchema"
          },
          {
            "$ref": "#/components/schemas/ScopeNotGrantedErrorSchema"
          },
          {
            "$ref": "#/components/schemas/PermissionDeniedSchema"
          },
          {
            "$ref": "#/components/schemas/ObjectStorageBucketDeletionErrorSchema"
          }
        ]
      },
      "NetworkErrorEnum": {
        "type": "string",
        "enum": [
          "network_error"
        ]
      },
      "ObjectStorageObject": {
        "type": "object",
        "properties": {
          "filename": {
            "type": "string"
          },
          "bucket_name": {
            "type": "string"
          },
          "full_path": {
            "type": "string"
          },
          "public_url": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "description": "The length of the object content in the response body, in bytes.",
            "nullable": true
          },
          "folder": {
            "type": "boolean"
          }
        }
      },
      "ObjectNotFoundEnum": {
        "type": "string",
        "enum": [
          "object_not_found"
        ]
      },
      "ObjectNotFoundSchema": {
        "type": "object",
        "description": "No object was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ObjectNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfObjectNotFoundObjectStorageBucketNotFoundObjectStorageClusterNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ObjectStorageClusterNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/ObjectStorageBucketNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/ObjectNotFoundSchema"
          }
        ]
      },
      "ObjectStorageObjectPresignedURLArguments": {
        "type": "object",
        "properties": {
          "expiry_seconds": {
            "type": "integer",
            "description": "The number of seconds the url should be valid for"
          }
        }
      },
      "ObjectStorageAccessKeyArguments": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the access key"
          },
          "all_buckets_read": {
            "type": "boolean",
            "description": "Some S3 clients require this permission to successfully connect to your account."
          },
          "all_objects_read": {
            "type": "boolean",
            "description": "Global read access for objects in all buckets"
          },
          "all_objects_write": {
            "type": "boolean",
            "description": "Global write access to create and delete objects in all buckets"
          }
        },
        "required": [
          "name"
        ]
      },
      "ObjectStorageAccessKey": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "created_at": {
            "type": "integer"
          },
          "region": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/ObjectStorageAccessKeyStateEnum"
          },
          "all_buckets_read": {
            "type": "boolean",
            "description": "Global access to list all buckets"
          },
          "all_objects_read": {
            "type": "boolean",
            "description": "Global read access for objects in all buckets"
          },
          "all_objects_write": {
            "type": "boolean",
            "description": "Global write access to create and delete objects in all buckets"
          },
          "read_buckets": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "The names of specific buckets that this key has read access to, empty if all_objects_read is true"
            }
          },
          "write_buckets": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "The names of specific buckets that this key has write access to, empty if all_objects_write is true"
            }
          },
          "server_url": {
            "type": "string",
            "description": "The server URL for the S3 credentials",
            "nullable": true
          },
          "s3_access_key_id": {
            "type": "string",
            "description": "The S3 access key ID",
            "nullable": true
          },
          "s3_secret_access_key": {
            "type": "string",
            "description": "Only available when using the generate credentials endpoint",
            "nullable": true
          }
        }
      },
      "ObjectStorageAccessKeyStateEnum": {
        "type": "string",
        "enum": [
          "pending",
          "configured"
        ]
      },
      "ObjectStorageAccessKeyLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "ObjectStorageAccessKeyNotFoundEnum": {
        "type": "string",
        "enum": [
          "object_storage_access_key_not_found"
        ]
      },
      "ObjectStorageProvisioningErrorEnum": {
        "type": "string",
        "enum": [
          "object_storage_provisioning_error"
        ]
      },
      "ObjectStorageProvisioningErrorSchema": {
        "type": "object",
        "description": "Provisioning is in progress. Please try again later.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ObjectStorageProvisioningErrorEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfObjectStorageProvisioningErrorValidationError422Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ValidationErrorSchema"
          },
          {
            "$ref": "#/components/schemas/ObjectStorageProvisioningErrorSchema"
          }
        ]
      },
      "ContainerRegistryRepository": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "total_size": {
            "type": "integer",
            "description": "Total size of the repository and all its artifacts and blobs in bytes",
            "nullable": true
          },
          "last_reconciled_at": {
            "type": "integer",
            "nullable": true
          },
          "artifact_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ContainerRegistryRegionNotFoundEnum": {
        "type": "string",
        "enum": [
          "container_registry_region_not_found"
        ]
      },
      "ContainerRegistryRegionNotFoundSchema": {
        "type": "object",
        "description": "No container registry region was found matching any of the criteria provided in the arguments",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ContainerRegistryRegionNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfContainerRegistryRegionNotFoundOrganizationNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ContainerRegistryRegionNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/OrganizationNotFoundSchema"
          }
        ]
      },
      "ContainerRegistryArtifact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "digest": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "description": "Size of the artifact in bytes",
            "nullable": true
          },
          "media_type": {
            "type": "string",
            "nullable": true
          },
          "os": {
            "type": "string",
            "nullable": true
          },
          "architecture": {
            "type": "string",
            "nullable": true
          },
          "variant": {
            "type": "string",
            "nullable": true
          },
          "annotations": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/KeyValue"
                }
              ],
              "nullable": true
            }
          },
          "last_pushed_at": {
            "type": "integer",
            "nullable": true
          },
          "last_pulled_at": {
            "type": "integer",
            "nullable": true
          },
          "last_reconciled_at": {
            "type": "integer",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "child_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "RepositoryNotFoundEnum": {
        "type": "string",
        "enum": [
          "repository_not_found"
        ]
      },
      "RepositoryNotFoundSchema": {
        "type": "object",
        "description": "No container registry repository was found matching any of the criteria provided in the arguments.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/RepositoryNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfContainerRegistryRegionNotFoundRepositoryNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ContainerRegistryRegionNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/RepositoryNotFoundSchema"
          }
        ]
      },
      "ContainerRegistryBlob": {
        "type": "object",
        "properties": {
          "digest": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "description": "Size of the blob in bytes"
          },
          "media_type": {
            "type": "string"
          }
        }
      },
      "ContainerRegistryTag": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "last_pushed_at": {
            "type": "integer",
            "nullable": true
          },
          "last_pulled_at": {
            "type": "integer",
            "nullable": true
          }
        }
      },
      "ArtifactNotFoundEnum": {
        "type": "string",
        "enum": [
          "artifact_not_found"
        ]
      },
      "ArtifactNotFoundSchema": {
        "type": "object",
        "description": "No container registry artifact was found matching any of the criteria provided in the arguments.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ArtifactNotFoundEnum"
          },
          "description": {
            "type": "string"
          },
          "detail": {
            "type": "object"
          }
        }
      },
      "OneOfArtifactNotFoundContainerRegistryRegionNotFoundRepositoryNotFound404Res": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ContainerRegistryRegionNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/RepositoryNotFoundSchema"
          },
          {
            "$ref": "#/components/schemas/ArtifactNotFoundSchema"
          }
        ]
      },
      "ContainerRegistryRegionLookup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "ContainerRegistryRepositoryLookup": {
        "description": "All 'repository[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "ContainerRegistryArtifactLookup": {
        "description": "All 'artifact[]' params are mutually exclusive, only one can be provided.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "digest": {
            "type": "string"
          },
          "tag": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "OAuth2": {
        "type": "oauth2",
        "x-scope-prefix": "api.katapult.io/core/v1/",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://identity.krystal.io/oauth2/auth",
            "tokenUrl": "https://identity.krystal.io/oauth2/token",
            "refreshUrl": "https://identity.krystal.io/oauth2/token",
            "scopes": {
              "api.katapult.io/core/v1/address_lists": "Manage address lists",
              "api.katapult.io/core/v1/address_lists:read": "Read-only access to address lists",
              "api.katapult.io/core/v1/api_tokens": "Manage API tokens",
              "api.katapult.io/core/v1/api_tokens:read": "Read-only access to API tokens",
              "api.katapult.io/core/v1/container_registry": "Manage container registries",
              "api.katapult.io/core/v1/container_registry:read": "Read-only access to container registries",
              "api.katapult.io/core/v1/disk_backup_policies": "Manage disk backup policies",
              "api.katapult.io/core/v1/disk_backup_policies:read": "Read-only access to disk backup policies",
              "api.katapult.io/core/v1/certificates:read": "Read-only access to certificates",
              "api.katapult.io/core/v1/disks": "Manage disks",
              "api.katapult.io/core/v1/disks:read": "Read-only access to disks",
              "api.katapult.io/core/v1/disks:io_profile": "Manage IO profile for disks",
              "api.katapult.io/core/v1/disk_templates": "Manage disk templates",
              "api.katapult.io/core/v1/disk_templates:read": "Read-only access to disk templates",
              "api.katapult.io/core/v1/file_storage_volumes": "Manage file storage volumes",
              "api.katapult.io/core/v1/file_storage_volumes:read": "Read-only access to file storage volumes",
              "api.katapult.io/core/v1/ip_addresses": "Manage IP addresses",
              "api.katapult.io/core/v1/ip_addresses:read": "Read-only access to IP addresses",
              "api.katapult.io/core/v1/object_storage": "Manage object storage",
              "api.katapult.io/core/v1/object_storage:read": "Read-only access to object storage",
              "api.katapult.io/core/v1/organizations:read": "Read-only access to organizations",
              "api.katapult.io/core/v1/organizations:delete": "Delete organizations",
              "api.katapult.io/core/v1/managed_organizations": "Manage managed organizations",
              "api.katapult.io/core/v1/managed_organizations:update": "Update managed organizations",
              "api.katapult.io/core/v1/managed_organizations:delete": "Delete managed organizations",
              "api.katapult.io/core/v1/security_groups": "Manage security groups",
              "api.katapult.io/core/v1/security_groups:read": "Read-only access to security groups",
              "api.katapult.io/core/v1/tags": "Manage tags",
              "api.katapult.io/core/v1/tags:read": "Read-only access to tags",
              "api.katapult.io/core/v1/tasks:read": "Read-only access to tasks",
              "api.katapult.io/core/v1/trash_objects:read": "Read-only access to objects in the trash",
              "api.katapult.io/core/v1/trash_objects:purge": "Purge items from the trash",
              "api.katapult.io/core/v1/trash_objects:restore": "Restore items from the trash",
              "api.katapult.io/core/v1/dns": "Manage DNS zones/records",
              "api.katapult.io/core/v1/dns:read": "Read-only access to DNS zones/records",
              "api.katapult.io/core/v1/dns:acme": "Manage ACME challenge DNS records",
              "api.katapult.io/core/v1/load_balancers": "Manage load balancers",
              "api.katapult.io/core/v1/load_balancers:read": "Read-only access to load balancers",
              "api.katapult.io/core/v1/virtual_machines": "Manage virtual machines",
              "api.katapult.io/core/v1/virtual_machines:read": "Read-only access to virtual machines",
              "api.katapult.io/core/v1/virtual_machines:power_actions": "Start & stop virtual machines",
              "api.katapult.io/core/v1/virtual_machines:console": "Access virtual machine consoles",
              "api.katapult.io/core/v1/virtual_machines:authorized_keys": "Access virtual machine authorized keys",
              "api.katapult.io/core/v1/virtual_machines:network_interfaces": "Access virtual machine network interfaces",
              "api.katapult.io/core/v1/virtual_machine_groups": "Manage virtual machine groups",
              "api.katapult.io/core/v1/virtual_machine_groups:read": "Read-only access to virtual machine groups",
              "api.katapult.io/core/v1/virtual_networks": "Manage virtual networks",
              "api.katapult.io/core/v1/virtual_networks:read": "Read-only access to virtual networks"
            }
          }
        }
      },
      "Authenticator": {
        "scheme": "bearer",
        "type": "http"
      }
    },
    "responses": {
      "APIAuthenticator400Response": {
        "description": "No API token was provided in the Authorization header. Ensure a token is provided prefixed with Bearer",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/MissingAPITokenEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "APIAuthenticator403Response": {
        "description": "403 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfAPIAuthenticator403Response"
            }
          }
        }
      },
      "APIAuthenticator429Response": {
        "description": "You have reached the rate limit for this type of request",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/RateLimitReachedEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "$ref": "#/components/schemas/RateLimitReached"
                }
              }
            }
          }
        }
      },
      "APIAuthenticator503Response": {
        "description": "The service is currently unavailable, please try again later",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/ServiceUnavailableEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "DataCenterNotFoundResponse": {
        "description": "No data center was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/DataCenterNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "OrganizationNotActivatedOrganizationSuspended403Res": {
        "description": "403 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfOrganizationNotActivatedOrganizationSuspended403Res"
            }
          }
        }
      },
      "OrganizationNotFoundResponse": {
        "description": "No organization was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/OrganizationNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "PolicyNotAvailableForManagedOrganizations400Res": {
        "description": "400 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfPolicyNotAvailableForManagedOrganizations400Res"
            }
          }
        }
      },
      "PricesNotAvailableForManagedOrganizations400Res": {
        "description": "400 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfPricesNotAvailableForManagedOrganizations400Res"
            }
          }
        }
      },
      "OrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res": {
        "description": "403 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfOrganizationNotActivatedOrganizationSuspendedPermissionDenied403Res"
            }
          }
        }
      },
      "OrganizationLimitReachedValidationError422Res": {
        "description": "422 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfOrganizationLimitReachedValidationError422Res"
            }
          }
        }
      },
      "ManagedOrganizationRequiredResponse": {
        "description": "Only managed organizations can be updated using this endpoint",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/ManagedOrganizationRequiredEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "ValidationErrorResponse": {
        "description": "A validation error occurred with the object that was being created/updated/deleted",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/ValidationErrorEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          }
        }
      },
      "DeletionStepsNotSatisfiedManagedOrganizationRequired409Res": {
        "description": "409 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfDeletionStepsNotSatisfiedManagedOrganizationRequired409Res"
            }
          }
        }
      },
      "DeletionFailedResponse": {
        "description": "An error occurred while deleting the organization. Check all deletion steps are satisfied.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/DeletionFailedEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "TaskQueueingErrorResponse": {
        "description": "This error means that a background task that was needed to complete your request could not be queued",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/TaskQueueingErrorEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "$ref": "#/components/schemas/TaskQueueingError"
                }
              }
            }
          }
        }
      },
      "DiskNotFoundResponse": {
        "description": "No disk was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/DiskNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "ObjectInTrashResponse": {
        "description": "The object found is in the trash and therefore cannot be manipulated through the API. It should be restored in order to run this operation.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/ObjectInTrashEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "$ref": "#/components/schemas/ObjectInTrash"
                }
              }
            }
          }
        }
      },
      "PermissionDenied403Res": {
        "description": "403 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfPermissionDenied403Res"
            }
          }
        }
      },
      "UnassignedDiskValidationError422Res": {
        "description": "422 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfUnassignedDiskValidationError422Res"
            }
          }
        }
      },
      "DiskNotFoundVirtualMachineNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfDiskNotFoundVirtualMachineNotFound404Res"
            }
          }
        }
      },
      "UnableToAssignResponse": {
        "description": "The disk can not be assigned to the virtual machine.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/UnableToAssignEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "$ref": "#/components/schemas/UnableToAssign"
                }
              }
            }
          }
        }
      },
      "UnableToUnassignResponse": {
        "description": "The disk can not be unassigned from the virtual machine.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/UnableToUnassignEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "$ref": "#/components/schemas/UnableToUnassign"
                }
              }
            }
          }
        }
      },
      "ObjectInTrashTaskQueueingError406Res": {
        "description": "406 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfObjectInTrashTaskQueueingError406Res"
            }
          }
        }
      },
      "UnassignedDiskResponse": {
        "description": "Disk is not assigned to a virtual machine.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/UnassignedDiskEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "DiskIOProfileNotFoundDiskNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfDiskIOProfileNotFoundDiskNotFound404Res"
            }
          }
        }
      },
      "VirtualMachineNotFoundResponse": {
        "description": "No virtual machine was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/VirtualMachineNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "OperatingSystemNotFoundOrganizationNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfOperatingSystemNotFoundOrganizationNotFound404Res"
            }
          }
        }
      },
      "DiskTemplateNotFoundResponse": {
        "description": "No disk template was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/DiskTemplateNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "DiskTemplateVersionNotFoundResponse": {
        "description": "No disk template version was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/DiskTemplateVersionNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "GPUTypeNotFoundResponse": {
        "description": "No GPU type was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/GPUTypeNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "VirtualMachineNotFoundVirtualMachinePackageNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfVirtualMachineNotFoundVirtualMachinePackageNotFound404Res"
            }
          }
        }
      },
      "FlexibleResourcesUnavailableToOrganizationPermissionDenied403Res": {
        "description": "403 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfFlexibleResourcesUnavailableToOrganizationPermissionDenied403Res"
            }
          }
        }
      },
      "IPAddressNotFoundVirtualMachineNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfIPAddressNotFoundVirtualMachineNotFound404Res"
            }
          }
        }
      },
      "IPAlreadyAllocatedNoInterfaceAvailable422Res": {
        "description": "422 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfIPAlreadyAllocatedNoInterfaceAvailable422Res"
            }
          }
        }
      },
      "NoVirtualMachineForAPITokenResponse": {
        "description": "No virtual machine was found for the provided API token",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/NoVirtualMachineForAPITokenEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "ContinuousManagementDisabledResponse": {
        "description": "SSH Key Continuous management is not enabled for this virtual machine",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/ContinuousManagementDisabledEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "OrganizationNotActivatedPermissionDeniedResourceCreationRestricted403Res": {
        "description": "403 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfOrganizationNotActivatedPermissionDeniedResourceCreationRestricted403Res"
            }
          }
        }
      },
      "DataCenterNotFoundVirtualMachinePackageNotFoundZoneNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfDataCenterNotFoundVirtualMachinePackageNotFoundZoneNotFound404Res"
            }
          }
        }
      },
      "LocationRequiredOneSystemDiskRequiredValidationError422Res": {
        "description": "422 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfLocationRequiredOneSystemDiskRequiredValidationError422Res"
            }
          }
        }
      },
      "InvalidSpecXML400Res": {
        "description": "400 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfInvalidSpecXML400Res"
            }
          }
        }
      },
      "VirtualMachineBuildNotFoundResponse": {
        "description": "No build was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/VirtualMachineBuildNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "ObjectInTrashVirtualMachineMustBeStarted406Res": {
        "description": "406 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfObjectInTrashVirtualMachineMustBeStarted406Res"
            }
          }
        }
      },
      "VirtualMachinePackageNotFoundResponse": {
        "description": "No package was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/VirtualMachinePackageNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "SSHKeyNotFoundResponse": {
        "description": "No SSH key was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/SSHKeyNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "DeletionRestrictedResponse": {
        "description": "Object cannot be deleted",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/DeletionRestrictedEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "$ref": "#/components/schemas/DeletionRestricted"
                }
              }
            }
          }
        }
      },
      "APITokenNotFoundResponse": {
        "description": "No API token was found matching any of the criteria provided in the arguments.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/APITokenNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "DiskBackupPolicyNotFoundResponse": {
        "description": "No disk backup policy was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/DiskBackupPolicyNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "InvalidTimestamp400Res": {
        "description": "400 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfInvalidTimestamp400Res"
            }
          }
        }
      },
      "DNSZoneNotFoundResponse": {
        "description": "No DNS zone was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/DNSZoneNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "DNSZoneNotVerifiedResponse": {
        "description": "The DNS zone could not be verified, check the nameservers or root TXT record are set correctly",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/DNSZoneNotVerifiedEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "DNSRecordNotFoundResponse": {
        "description": "No DNS record was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/DNSRecordNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "SecurityGroupNotFoundResponse": {
        "description": "No security group was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/SecurityGroupNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "SecurityGroupRuleNotFoundResponse": {
        "description": "No security group rule was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/SecurityGroupRuleNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "FileStorageVolumeNotFoundResponse": {
        "description": "No file storage volume was found matching any of the criteria provided in the arguments.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/FileStorageVolumeNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "NetworkNotFoundResponse": {
        "description": "No network was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/NetworkNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "VirtualNetworkNotFoundResponse": {
        "description": "No virtual network was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/VirtualNetworkNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "DataCenterNotFoundOrganizationNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfDataCenterNotFoundOrganizationNotFound404Res"
            }
          }
        }
      },
      "AddressListNotFoundResponse": {
        "description": "No address list was found matching any of the criteria provided in the arguments.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/AddressListNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "AddressListEntryNotFoundResponse": {
        "description": "No address list entry was found matching any of the criteria provided in the arguments.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/AddressListEntryNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "CertificateNotFoundResponse": {
        "description": "No certificate was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/CertificateNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "LoadBalancerNotFoundResponse": {
        "description": "No load balancer was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/LoadBalancerNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "LoadBalancerRuleNotFoundResponse": {
        "description": "No load balancer rule was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/LoadBalancerRuleNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "NetworkNotFoundOrganizationNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfNetworkNotFoundOrganizationNotFound404Res"
            }
          }
        }
      },
      "NoAvailableAddresses503Res": {
        "description": "503 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfNoAvailableAddresses503Res"
            }
          }
        }
      },
      "IPAddressNotFoundResponse": {
        "description": "No IP addresses were found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/IPAddressNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "ResourceDoesNotSupportUnallocationResponse": {
        "description": "The resource this IP address belongs to does not allow you to unallocate it.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/ResourceDoesNotSupportUnallocationEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "NoAllocationResponse": {
        "description": "This IP address is not currently allocated to any object, and cannot be unallocated.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/NoAllocationEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "NetworkNotFoundVirtualMachineNotFoundVirtualNetworkNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfNetworkNotFoundVirtualMachineNotFoundVirtualNetworkNotFound404Res"
            }
          }
        }
      },
      "InterfaceNotFoundNetworkNotFoundVirtualMachineNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfInterfaceNotFoundNetworkNotFoundVirtualMachineNotFound404Res"
            }
          }
        }
      },
      "VirtualMachineNetworkInterfaceNotFoundResponse": {
        "description": "No network interface was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/VirtualMachineNetworkInterfaceNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "IPAddressNotFoundVirtualMachineNetworkInterfaceNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfIPAddressNotFoundVirtualMachineNetworkInterfaceNotFound404Res"
            }
          }
        }
      },
      "IPAlreadyAllocatedInvalidIP422Res": {
        "description": "422 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfIPAlreadyAllocatedInvalidIP422Res"
            }
          }
        }
      },
      "NetworkSpeedProfileNotFoundVirtualMachineNetworkInterfaceNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfNetworkSpeedProfileNotFoundVirtualMachineNetworkInterfaceNotFound404Res"
            }
          }
        }
      },
      "SpeedProfileAlreadyAssignedResponse": {
        "description": "This network speed profile is already assigned to this virtual machine network interface.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/SpeedProfileAlreadyAssignedEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "VirtualMachineNetworkInterfaceAlreadyAttachedResponse": {
        "description": "The virtual machine network interface is already attached to the virtual machine",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/VirtualMachineNetworkInterfaceAlreadyAttachedEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "VirtualMachineNetworkInterfaceAlreadyDetachedResponse": {
        "description": "The virtual machine network interface is already detached from the virtual machine",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/VirtualMachineNetworkInterfaceAlreadyDetachedEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "TagNotFoundResponse": {
        "description": "No tag was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/TagNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "VirtualMachineGroupNotFoundResponse": {
        "description": "No virtual machine group was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/VirtualMachineGroupNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "OperatingSystemNotFoundResponse": {
        "description": "No operating system was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/OperatingSystemNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "TrashObjectNotFoundResponse": {
        "description": "No trash object was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/TrashObjectNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "ZoneNotFoundResponse": {
        "description": "No zone was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/ZoneNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "CountryNotFoundResponse": {
        "description": "No country was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/CountryNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "CountryStateNotFoundResponse": {
        "description": "No country state was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/CountryStateNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "CurrencyNotFoundResponse": {
        "description": "No currency was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/CurrencyNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "TaskNotFoundResponse": {
        "description": "No task was found matching any of the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/TaskNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "NoUserAssociatedWithIdentityResponse": {
        "description": "There is no user associated with this API token",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/NoUserAssociatedWithIdentityEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "IdentityNotLinkedToWebSession400Res": {
        "description": "400 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfIdentityNotLinkedToWebSession400Res"
            }
          }
        }
      },
      "ObjectStorageClusterNotFoundOrganizationNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfObjectStorageClusterNotFoundOrganizationNotFound404Res"
            }
          }
        }
      },
      "ObjectStorageAccountNotProvisionedOrganizationSuspendedPermissionDenied403Res": {
        "description": "403 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfObjectStorageAccountNotProvisionedOrganizationSuspendedPermissionDenied403Res"
            }
          }
        }
      },
      "ObjectStorageAccountNotFoundObjectStorageClusterNotFoundOrganizationNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfObjectStorageAccountNotFoundObjectStorageClusterNotFoundOrganizationNotFound404Res"
            }
          }
        }
      },
      "ObjectStorageBucketNotFoundObjectStorageClusterNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfObjectStorageBucketNotFoundObjectStorageClusterNotFound404Res"
            }
          }
        }
      },
      "MultipleObjectStorageBucketsFoundResponse": {
        "description": "Multiple object storage buckets were found matching the criteria provided in the arguments",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/MultipleObjectStorageBucketsFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "ObjectStorageBucketDeletionErrorPermissionDenied403Res": {
        "description": "403 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfObjectStorageBucketDeletionErrorPermissionDenied403Res"
            }
          }
        }
      },
      "NetworkErrorResponse": {
        "description": "A network error occurred while performing the action. Please try again.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/NetworkErrorEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "ObjectNotFoundObjectStorageBucketNotFoundObjectStorageClusterNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfObjectNotFoundObjectStorageBucketNotFoundObjectStorageClusterNotFound404Res"
            }
          }
        }
      },
      "ObjectStorageAccessKeyNotFoundResponse": {
        "description": "No object storage access key was found matching any of the criteria provided in the arguments.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/ObjectStorageAccessKeyNotFoundEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "ObjectStorageProvisioningErrorResponse": {
        "description": "Provisioning is in progress. Please try again later.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/ObjectStorageProvisioningErrorEnum"
                },
                "description": {
                  "type": "string"
                },
                "detail": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "ObjectStorageProvisioningErrorValidationError422Res": {
        "description": "422 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfObjectStorageProvisioningErrorValidationError422Res"
            }
          }
        }
      },
      "ContainerRegistryRegionNotFoundOrganizationNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfContainerRegistryRegionNotFoundOrganizationNotFound404Res"
            }
          }
        }
      },
      "ContainerRegistryRegionNotFoundRepositoryNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfContainerRegistryRegionNotFoundRepositoryNotFound404Res"
            }
          }
        }
      },
      "ArtifactNotFoundContainerRegistryRegionNotFoundRepositoryNotFound404Res": {
        "description": "404 error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OneOfArtifactNotFoundContainerRegistryRegionNotFoundRepositoryNotFound404Res"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "OAuth2": [

      ]
    },
    {
      "Authenticator": [

      ]
    }
  ],
  "tags": [
    {
      "name": "Data centers"
    },
    {
      "name": "Organizations"
    },
    {
      "name": "Organization users"
    },
    {
      "name": "Managed organizations"
    },
    {
      "name": "Disks"
    },
    {
      "name": "Disk IO profiles"
    },
    {
      "name": "Disk templates"
    },
    {
      "name": "Disk template versions"
    },
    {
      "name": "GPU types"
    },
    {
      "name": "Virtual machines"
    },
    {
      "name": "Build",
      "description": "Endpoints used for building or creating new virtual machines"
    },
    {
      "name": "Power functions",
      "description": "Endpoints for performing power functions (i.e. start, stop etc...) on a virtual machine"
    },
    {
      "name": "Console",
      "description": "Endpoints for managing console access to a virtual machine"
    },
    {
      "name": "Virtual machine packages"
    },
    {
      "name": "SSH keys"
    },
    {
      "name": "API tokens"
    },
    {
      "name": "Disk backup policies",
      "description": "Endpoints for managing DNS zones/domains"
    },
    {
      "name": "DNS zones",
      "description": "Endpoints for managing DNS zones"
    },
    {
      "name": "Records",
      "description": "Endpoints for managing DNS records"
    },
    {
      "name": "Security groups",
      "description": "Endpoints for managing security groups"
    },
    {
      "name": "Security group rules",
      "description": "Endpoints for managing security group rules"
    },
    {
      "name": "File storage volumes"
    },
    {
      "name": "Networks"
    },
    {
      "name": "Network speed profiles"
    },
    {
      "name": "Virtual Networks"
    },
    {
      "name": "Address lists"
    },
    {
      "name": "Address list entries"
    },
    {
      "name": "Certificates"
    },
    {
      "name": "Load balancers"
    },
    {
      "name": "Load balancer rules"
    },
    {
      "name": "IP addresses"
    },
    {
      "name": "Virtual machine network interfaces"
    },
    {
      "name": "Tags"
    },
    {
      "name": "Virtual machine groups"
    },
    {
      "name": "Operating systems"
    },
    {
      "name": "Trash objects"
    },
    {
      "name": "Zones"
    },
    {
      "name": "Countries"
    },
    {
      "name": "Country states"
    },
    {
      "name": "Currencies"
    },
    {
      "name": "Tasks"
    },
    {
      "name": "Users"
    },
    {
      "name": "Object storage"
    },
    {
      "name": "Buckets"
    },
    {
      "name": "Access keys"
    },
    {
      "name": "Container registry"
    }
  ],
  "x-tagGroups": [
    {
      "name": "API tokens",
      "tags": [
        "API tokens"
      ]
    },
    {
      "name": "Address lists",
      "tags": [
        "Address list entries",
        "Address lists"
      ]
    },
    {
      "name": "Certificates",
      "tags": [
        "Certificates"
      ]
    },
    {
      "name": "Container registry",
      "tags": [
        "Container registry"
      ]
    },
    {
      "name": "Countries",
      "tags": [
        "Countries"
      ]
    },
    {
      "name": "Country states",
      "tags": [
        "Country states"
      ]
    },
    {
      "name": "Currencies",
      "tags": [
        "Currencies"
      ]
    },
    {
      "name": "DNS zones",
      "tags": [
        "DNS zones",
        "Records"
      ]
    },
    {
      "name": "Data centers",
      "tags": [
        "Data centers"
      ]
    },
    {
      "name": "Disk IO profiles",
      "tags": [
        "Disk IO profiles"
      ]
    },
    {
      "name": "Disk backup policies",
      "tags": [
        "Disk backup policies"
      ]
    },
    {
      "name": "Disk template versions",
      "tags": [
        "Disk template versions"
      ]
    },
    {
      "name": "Disk templates",
      "tags": [
        "Disk templates"
      ]
    },
    {
      "name": "Disks",
      "tags": [
        "Disks"
      ]
    },
    {
      "name": "File storage volumes",
      "tags": [
        "File storage volumes"
      ]
    },
    {
      "name": "GPU types",
      "tags": [
        "GPU types"
      ]
    },
    {
      "name": "IP addresses",
      "tags": [
        "IP addresses"
      ]
    },
    {
      "name": "Load balancers",
      "tags": [
        "Load balancer rules",
        "Load balancers"
      ]
    },
    {
      "name": "Network speed profiles",
      "tags": [
        "Network speed profiles"
      ]
    },
    {
      "name": "Networks",
      "tags": [
        "Networks"
      ]
    },
    {
      "name": "Object storage",
      "tags": [
        "Access keys",
        "Buckets",
        "Object storage"
      ]
    },
    {
      "name": "Operating systems",
      "tags": [
        "Operating systems"
      ]
    },
    {
      "name": "Organizations",
      "tags": [
        "Managed organizations",
        "Organization users",
        "Organizations"
      ]
    },
    {
      "name": "SSH keys",
      "tags": [
        "SSH keys"
      ]
    },
    {
      "name": "Security groups",
      "tags": [
        "Security group rules",
        "Security groups"
      ]
    },
    {
      "name": "Tags",
      "tags": [
        "Tags"
      ]
    },
    {
      "name": "Tasks",
      "tags": [
        "Tasks"
      ]
    },
    {
      "name": "Trash objects",
      "tags": [
        "Trash objects"
      ]
    },
    {
      "name": "Users",
      "tags": [
        "Users"
      ]
    },
    {
      "name": "Virtual Networks",
      "tags": [
        "Virtual Networks"
      ]
    },
    {
      "name": "Virtual machine groups",
      "tags": [
        "Virtual machine groups"
      ]
    },
    {
      "name": "Virtual machine network interfaces",
      "tags": [
        "Virtual machine network interfaces"
      ]
    },
    {
      "name": "Virtual machine packages",
      "tags": [
        "Virtual machine packages"
      ]
    },
    {
      "name": "Virtual machines",
      "tags": [
        "Build",
        "Console",
        "Power functions",
        "Virtual machines"
      ]
    },
    {
      "name": "Zones",
      "tags": [
        "Zones"
      ]
    }
  ]
}