{
  "components": {
    "schemas": {
      "Any": {
        "additionalProperties": {},
        "properties": {
          "@type": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiKey": {
        "properties": {
          "createTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "key": {
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "BillingAccount": {
        "properties": {
          "billingAddress": {
            "$ref": "#/components/schemas/BillingAddress"
          },
          "billingThreshold": {
            "$ref": "#/components/schemas/Decimal"
          },
          "createBy": {
            "readOnly": true,
            "type": "string"
          },
          "createTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "creditBalance": {
            "$ref": "#/components/schemas/Decimal"
          },
          "creditBalanceRecharge": {
            "$ref": "#/components/schemas/CreditBalanceRecharge"
          },
          "deleteTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "hourlySpendLimit": {
            "$ref": "#/components/schemas/Decimal"
          },
          "hourlySpendRate": {
            "$ref": "#/components/schemas/Decimal"
          },
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "invoiceTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "monthlySpend": {
            "readOnly": true,
            "type": "string"
          },
          "monthlySpendLimit": {
            "$ref": "#/components/schemas/Decimal"
          },
          "nextInvoiceTotal": {
            "$ref": "#/components/schemas/Decimal"
          },
          "paymentTerms": {
            "$ref": "#/components/schemas/PaymentTerms"
          },
          "purgeTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/BillingAccountState"
          },
          "stripeRef": {
            "type": "string"
          },
          "taxId": {
            "$ref": "#/components/schemas/TaxId"
          }
        },
        "type": "object"
      },
      "BillingAccountPaymentMethod": {
        "properties": {
          "card": {
            "$ref": "#/components/schemas/PaymentMethodCard"
          },
          "id": {
            "type": "string"
          },
          "isDefault": {
            "type": "boolean"
          },
          "paypal": {
            "$ref": "#/components/schemas/PaymentMethodPaypal"
          },
          "type": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "BillingAccountPaymentMethods": {
        "properties": {
          "paymentMethods": {
            "items": {
              "$ref": "#/components/schemas/BillingAccountPaymentMethod"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "BillingAccountProject": {
        "properties": {
          "id": {
            "type": "string"
          },
          "resourceCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "resourceCount"
        ],
        "type": "object"
      },
      "BillingAccountResult": {
        "properties": {
          "createTime": {
            "format": "date-time",
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "BillingAccountSetupIntent": {
        "properties": {
          "clientSecret": {
            "type": "string"
          },
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "clientSecret"
        ],
        "type": "object"
      },
      "BillingAccountSpendRow": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/Decimal"
          },
          "description": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "quantity": {
            "format": "float",
            "type": "number"
          },
          "unit": {
            "$ref": "#/components/schemas/Unit"
          },
          "unitAmount": {
            "$ref": "#/components/schemas/Decimal"
          }
        },
        "required": [
          "projectId",
          "description",
          "quantity",
          "unit",
          "unitAmount",
          "amount"
        ],
        "type": "object"
      },
      "BillingAccountState": {
        "default": "STATE_UNSPECIFIED",
        "enum": [
          "STATE_UNSPECIFIED",
          "STATE_ACTIVE",
          "STATE_SUSPENDED_ABUSE",
          "STATE_SUSPENDED_PAYMENT",
          "STATE_DELETED"
        ],
        "type": "string"
      },
      "BillingAddress": {
        "properties": {
          "city": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "line1": {
            "type": "string"
          },
          "line2": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "postalCode": {
            "type": "string"
          },
          "state": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "BootDisk": {
        "description": "DEPRECATED: use `bootDiskSizeGib` on `CreateVMBody` instead",
        "properties": {
          "sizeGib": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "sizeGib"
        ],
        "title": "BootDisk",
        "type": "object",
        "deprecated": true
      },
      "Charge": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/Decimal"
          },
          "createTime": {
            "format": "date-time",
            "type": "string"
          },
          "failureCode": {
            "type": "string"
          },
          "paid": {
            "type": "boolean"
          },
          "refunded": {
            "type": "boolean"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [
          "amount",
          "createTime",
          "paid",
          "refunded",
          "status"
        ],
        "type": "object"
      },
      "CheckoutSession": {
        "properties": {
          "clientSecret": {
            "type": "string"
          }
        },
        "required": [
          "clientSecret"
        ],
        "type": "object"
      },
      "Cluster": {
        "properties": {
          "architecture": {
            "readOnly": true,
            "type": "string"
          },
          "commitmentEndTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "commitmentTerm": {
            "$ref": "#/components/schemas/CommitmentTerm"
          },
          "cpuModel": {
            "readOnly": true,
            "type": "string"
          },
          "cpuSpeedMhz": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "createBy": {
            "readOnly": true,
            "type": "string"
          },
          "createTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "customSshKeys": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dataCenterId": {
            "type": "string"
          },
          "gpuModelId": {
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "ipoibConfig": {
            "$ref": "#/components/schemas/ClusterIPOIBConfig"
          },
          "machineCount": {
            "format": "int32",
            "type": "integer"
          },
          "machinePriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "machineTypeId": {
            "type": "string"
          },
          "machines": {
            "items": {
              "$ref": "#/components/schemas/ClusterMachine"
            },
            "readOnly": true,
            "type": "array"
          },
          "networkType": {
            "$ref": "#/components/schemas/NetworkType"
          },
          "projectId": {
            "type": "string"
          },
          "sshKeySource": {
            "$ref": "#/components/schemas/SshKeySource"
          },
          "startScript": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/Cluster.State"
          },
          "totalCpuCores": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "totalDiskSizeGib": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "totalGpus": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "totalMachinePriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "totalMemoryGib": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "totalPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          }
        },
        "required": [
          "projectId",
          "id",
          "dataCenterId",
          "machineTypeId",
          "machineCount"
        ],
        "type": "object"
      },
      "Cluster.State": {
        "default": "STATE_UNSPECIFIED",
        "enum": [
          "STATE_UNSPECIFIED",
          "CREATING",
          "ACTIVE",
          "UPDATING",
          "DELETING",
          "FAILED"
        ],
        "type": "string"
      },
      "ClusterIPOIBConfig": {
        "properties": {
          "hostBits": {
            "description": "The number of bits following the port portion that are used for the host portion of the address (e.g. 16). The maximum number of hosts will be 2 raised to the power of this value, minus 2 (for network and broadcast addresses).",
            "format": "int32",
            "type": "integer"
          },
          "networkPrefix": {
            "description": "The network prefix in CIDR format (e.g. \"172.24.0.0/13\").",
            "type": "string"
          },
          "portBits": {
            "description": "The number of bits following the network prefix that are used for the port portion of the address (e.g. 3). The maximum number of ports per host will be 2 raised to the power of this value.",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "networkPrefix",
          "portBits",
          "hostBits"
        ],
        "type": "object"
      },
      "ClusterMachine": {
        "properties": {
          "architecture": {
            "readOnly": true,
            "type": "string"
          },
          "cpuCores": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "cpuModel": {
            "readOnly": true,
            "type": "string"
          },
          "cpuSpeedMhz": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "createBy": {
            "readOnly": true,
            "type": "string"
          },
          "createTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "dataCenterId": {
            "readOnly": true,
            "type": "string"
          },
          "diskSizeGib": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "disks": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "externalIpAddress": {
            "readOnly": true,
            "type": "string"
          },
          "gpuModelId": {
            "readOnly": true,
            "type": "string"
          },
          "gpus": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "internalIpAddress": {
            "readOnly": true,
            "type": "string"
          },
          "machineTypeId": {
            "readOnly": true,
            "type": "string"
          },
          "memoryGib": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "powerState": {
            "$ref": "#/components/schemas/MachinePowerState"
          },
          "priceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "projectId": {
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/ClusterMachine.State"
          },
          "volumeIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ClusterMachine.State": {
        "default": "STATE_UNSPECIFIED",
        "enum": [
          "STATE_UNSPECIFIED",
          "CREATING",
          "ACTIVE",
          "DELETING",
          "FAILED"
        ],
        "type": "string"
      },
      "CommitVMBody": {
        "properties": {
          "commitmentTerm": {
            "$ref": "#/components/schemas/CommitmentTerm"
          }
        },
        "type": "object"
      },
      "CommitmentTerm": {
        "default": "COMMITMENT_TERM_NONE",
        "enum": [
          "COMMITMENT_TERM_NONE",
          "COMMITMENT_TERM_1_MONTH",
          "COMMITMENT_TERM_3_MONTHS",
          "COMMITMENT_TERM_6_MONTHS",
          "COMMITMENT_TERM_12_MONTHS",
          "COMMITMENT_TERM_24_MONTHS",
          "COMMITMENT_TERM_36_MONTHS",
          "COMMITMENT_TERM_60_MONTHS"
        ],
        "type": "string"
      },
      "ConnectVMResponse": {
        "properties": {
          "connectUrl": {
            "type": "string"
          },
          "token": {
            "type": "string"
          }
        },
        "required": [
          "connectUrl",
          "token"
        ],
        "type": "object"
      },
      "CountVMsResponse": {
        "properties": {
          "count": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "count"
        ],
        "type": "object"
      },
      "CpuTopology": {
        "properties": {
          "cores": {
            "format": "int32",
            "type": "integer"
          },
          "sockets": {
            "format": "int32",
            "type": "integer"
          },
          "threads": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "CreateBillingAccountCreditPaymentResponse": {
        "properties": {
          "paymentIntent": {
            "$ref": "#/components/schemas/PaymentIntent"
          }
        },
        "required": [
          "paymentIntent"
        ],
        "type": "object"
      },
      "CreateBillingAccountRequest": {
        "properties": {
          "billingAddress": {
            "$ref": "#/components/schemas/BillingAddress"
          },
          "displayName": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "invoiceName": {
            "type": "string"
          },
          "referral": {
            "type": "string"
          },
          "taxId": {
            "$ref": "#/components/schemas/TaxId"
          }
        },
        "required": [
          "displayName",
          "email"
        ],
        "type": "object"
      },
      "CreatePrivateVMImageResponse": {
        "properties": {
          "image": {
            "$ref": "#/components/schemas/PrivateImage"
          }
        },
        "type": "object"
      },
      "CreateVMBody": {
        "properties": {
          "bootDisk": {
            "$ref": "#/components/schemas/BootDisk"
          },
          "bootDiskImageId": {
            "type": "string"
          },
          "bootDiskSizeGib": {
            "format": "int32",
            "type": "integer"
          },
          "commitmentTerm": {
            "$ref": "#/components/schemas/CommitmentTerm"
          },
          "customSshKeys": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dataCenterId": {
            "type": "string"
          },
          "expireTime": {
            "format": "date-time",
            "type": "string"
          },
          "gpus": {
            "format": "int32",
            "type": "integer"
          },
          "machineType": {
            "type": "string"
          },
          "memoryGib": {
            "format": "int32",
            "type": "integer"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "nics": {
            "items": {
              "$ref": "#/components/schemas/CreateVMRequest.NIC"
            },
            "type": "array"
          },
          "password": {
            "type": "string"
          },
          "securityGroupIds": {
            "items": {
              "type": "string"
            },
            "title": "ignored if any nics are provided",
            "type": "array"
          },
          "sshKeySource": {
            "$ref": "#/components/schemas/SshKeySource"
          },
          "startScript": {
            "type": "string"
          },
          "storageDiskIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "topology": {
            "$ref": "#/components/schemas/CpuTopology"
          },
          "ttl": {
            "type": "string"
          },
          "validateOnly": {
            "type": "boolean"
          },
          "vcpus": {
            "format": "int32",
            "type": "integer"
          },
          "vmId": {
            "type": "string"
          }
        },
        "required": [
          "dataCenterId",
          "machineType",
          "vmId",
          "bootDiskImageId",
          "vcpus",
          "memoryGib",
          "gpus"
        ],
        "type": "object"
      },
      "CreateVMRequest.NIC": {
        "properties": {
          "assignPublicIp": {
            "type": "boolean"
          },
          "networkId": {
            "type": "string"
          },
          "securityGroupIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "CreateVMResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "vm": {
            "$ref": "#/components/schemas/VM"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "CreditBalanceRecharge": {
        "properties": {
          "autoRecharge": {
            "type": "boolean"
          },
          "high": {
            "$ref": "#/components/schemas/Decimal"
          },
          "low": {
            "$ref": "#/components/schemas/Decimal"
          },
          "transaction": {
            "$ref": "#/components/schemas/Transaction"
          }
        },
        "required": [
          "low",
          "high",
          "autoRecharge"
        ],
        "type": "object"
      },
      "CreditBalanceTransaction": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/Decimal"
          },
          "createTime": {
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "amount",
          "description",
          "createTime"
        ],
        "type": "object"
      },
      "Decimal": {
        "description": "A representation of a decimal value, such as 2.5. Clients may convert values\ninto language-native decimal formats, such as Java's [BigDecimal][] or\nPython's [decimal.Decimal][].\n\n[BigDecimal]:\nhttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html\n[decimal.Decimal]: https://docs.python.org/3/library/decimal.html",
        "properties": {
          "value": {
            "description": "The decimal value, as a string.\n\nThe string representation consists of an optional sign, `+` (`U+002B`)\nor `-` (`U+002D`), followed by a sequence of zero or more decimal digits\n(\"the integer\"), optionally followed by a fraction, optionally followed\nby an exponent.\n\nThe fraction consists of a decimal point followed by zero or more decimal\ndigits. The string must contain at least one digit in either the integer\nor the fraction. The number formed by the sign, the integer and the\nfraction is referred to as the significand.\n\nThe exponent consists of the character `e` (`U+0065`) or `E` (`U+0045`)\nfollowed by one or more decimal digits.\n\nServices **should** normalize decimal values before storing them by:\n\n  - Removing an explicitly-provided `+` sign (`+2.5` -> `2.5`).\n  - Replacing a zero-length integer value with `0` (`.5` -> `0.5`).\n  - Coercing the exponent character to lower-case (`2.5E8` -> `2.5e8`).\n  - Removing an explicitly-provided zero exponent (`2.5e0` -> `2.5`).\n\nServices **may** perform additional normalization based on its own needs\nand the internal decimal implementation selected, such as shifting the\ndecimal point and exponent value together (example: `2.5e-1` <-> `0.25`).\nAdditionally, services **may** preserve trailing zeroes in the fraction\nto indicate increased precision, but are not required to do so.\n\nNote that only the `.` character is supported to divide the integer\nand the fraction; `,` **should not** be supported regardless of locale.\nAdditionally, thousand separators **should not** be supported. If a\nservice does support them, values **must** be normalized.\n\nThe ENBF grammar is:\n\n    DecimalString =\n      [Sign] Significand [Exponent];\n\n    Sign = '+' | '-';\n\n    Significand =\n      Digits ['.'] [Digits] | [Digits] '.' Digits;\n\n    Exponent = ('e' | 'E') [Sign] Digits;\n\n    Digits = { '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' };\n\nServices **should** clearly document the range of supported values, the\nmaximum supported precision (total number of digits), and, if applicable,\nthe scale (number of digits after the decimal point), as well as how it\nbehaves when receiving out-of-bounds values.\n\nServices **may** choose to accept values passed as input even when the\nvalue has a higher precision or scale than the service supports, and\n**should** round the value to fit the supported scale. Alternatively, the\nservice **may** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC)\nif precision would be lost.\n\nServices **should** error with `400 Bad Request` (`INVALID_ARGUMENT` in\ngRPC) if the service receives a value outside of the supported range.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "DeployMachineOSBody": {
        "properties": {
          "customSshKeys": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "os": {
            "type": "string"
          },
          "sshKeySource": {
            "$ref": "#/components/schemas/SshKeySource"
          },
          "startScript": {
            "type": "string"
          },
          "userData": {
            "description": "DEPRECATED: use `startScript` to run a script on boot, and `sshKeySource` or `customSshKeys` to set authorized ssh keys",
            "title": "userData",
            "type": "string",
            "deprecated": true
          }
        },
        "required": [
          "os"
        ],
        "type": "object"
      },
      "Disk": {
        "properties": {
          "createTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "dataCenterId": {
            "type": "string"
          },
          "diskState": {
            "$ref": "#/components/schemas/DiskState"
          },
          "diskType": {
            "$ref": "#/components/schemas/DiskType"
          },
          "id": {
            "type": "string"
          },
          "privateImageId": {
            "readOnly": true,
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "publicImageId": {
            "readOnly": true,
            "type": "string"
          },
          "sizeGib": {
            "format": "int32",
            "type": "integer"
          },
          "vmId": {
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "id",
          "projectId",
          "dataCenterId",
          "sizeGib"
        ],
        "type": "object"
      },
      "DiskState": {
        "default": "UNKNOWN",
        "enum": [
          "UNKNOWN",
          "ATTACHED",
          "CLONING",
          "CREATING",
          "DELETING",
          "DISABLED",
          "FAILED",
          "READY",
          "UPDATING"
        ],
        "type": "string"
      },
      "DiskStoragePriceHr": {
        "properties": {
          "diskGibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          }
        },
        "type": "object"
      },
      "DiskType": {
        "default": "DISK_TYPE_UNKNOWN",
        "enum": [
          "DISK_TYPE_UNKNOWN",
          "DISK_TYPE_BOOT",
          "DISK_TYPE_STORAGE"
        ],
        "type": "string"
      },
      "GenerateApiKeyRequest": {
        "properties": {
          "apikeyId": {
            "description": "The identifier to use for the api key, which will become the final component of\nthe api key's resource name.\nThis value should be 4-63 characters, and valid characters\nare /[a-z][0-9]-/.",
            "type": "string"
          }
        },
        "required": [
          "apikeyId"
        ],
        "type": "object"
      },
      "GetBillingAccountDetailsResponse": {
        "properties": {
          "billingAccount": {
            "$ref": "#/components/schemas/BillingAccount"
          },
          "stripeCustomer": {
            "$ref": "#/components/schemas/StripeCustomer"
          }
        },
        "required": [
          "billingAccount",
          "stripeCustomer"
        ],
        "type": "object"
      },
      "GetBillingAccountPermissionsResponse": {
        "properties": {
          "permissions": {
            "items": {
              "$ref": "#/components/schemas/UserPermission"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "GetBillingAccountSpendDetailsResponse": {
        "properties": {
          "spend": {
            "items": {
              "$ref": "#/components/schemas/BillingAccountSpendRow"
            },
            "type": "array"
          }
        },
        "required": [
          "spend"
        ],
        "type": "object"
      },
      "GetClusterMachineTypeResponse": {
        "properties": {
          "machineType": {
            "$ref": "#/components/schemas/MachineType"
          }
        },
        "required": [
          "machineType"
        ],
        "type": "object"
      },
      "GetDiskResponse": {
        "properties": {
          "disk": {
            "$ref": "#/components/schemas/Disk"
          }
        },
        "type": "object"
      },
      "GetObjectStorageSessionKeyResponse": {
        "properties": {
          "accessKey": {
            "type": "string"
          },
          "endpoint": {
            "type": "string"
          },
          "secretKey": {
            "type": "string"
          },
          "sessionName": {
            "type": "string"
          },
          "sessionToken": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "GetPrivateVMImageResponse": {
        "properties": {
          "image": {
            "$ref": "#/components/schemas/PrivateImage"
          }
        },
        "type": "object"
      },
      "GetProjectPermissionsResponse": {
        "properties": {
          "permissions": {
            "items": {
              "$ref": "#/components/schemas/UserPermission"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "GetVMMachineTypeResponse": {
        "properties": {
          "cpuModel": {
            "type": "string"
          },
          "dataCenterId": {
            "type": "string"
          },
          "gpuModel": {
            "type": "string"
          },
          "gpuModelId": {
            "type": "string"
          },
          "gpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "ipv4PriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "machineType": {
            "type": "string"
          },
          "maxGpuFree": {
            "format": "int32",
            "type": "integer"
          },
          "maxMemoryGibFree": {
            "format": "int32",
            "type": "integer"
          },
          "maxStorageGibFree": {
            "format": "int32",
            "type": "integer"
          },
          "maxVcpuFree": {
            "format": "int32",
            "type": "integer"
          },
          "maxVcpuPerGpu": {
            "format": "double",
            "type": "number"
          },
          "maxVcpuPerMemoryGib": {
            "format": "double",
            "type": "number"
          },
          "memoryGibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "minMemoryGib": {
            "format": "double",
            "type": "number"
          },
          "minStorageGibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "minVcpu": {
            "format": "double",
            "type": "number"
          },
          "minVcpuPerGpu": {
            "format": "double",
            "type": "number"
          },
          "minVcpuPerMemoryGib": {
            "format": "double",
            "type": "number"
          },
          "prices": {
            "items": {
              "$ref": "#/components/schemas/VirtualMachineTypePrice"
            },
            "type": "array"
          },
          "renewableEnergy": {
            "type": "boolean"
          },
          "totalGpuFree": {
            "format": "int32",
            "type": "integer"
          },
          "totalMemoryGibFree": {
            "format": "int32",
            "type": "integer"
          },
          "totalStorageGibFree": {
            "format": "int32",
            "type": "integer"
          },
          "totalVcpuFree": {
            "format": "int32",
            "type": "integer"
          },
          "vcpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          }
        },
        "required": [
          "dataCenterId",
          "machineType",
          "cpuModel",
          "gpuModel",
          "gpuModelId",
          "minVcpuPerMemoryGib",
          "maxVcpuPerMemoryGib",
          "minVcpuPerGpu",
          "maxVcpuPerGpu",
          "vcpuPriceHr",
          "memoryGibPriceHr",
          "gpuPriceHr",
          "minStorageGibPriceHr",
          "ipv4PriceHr",
          "renewableEnergy",
          "maxVcpuFree",
          "totalVcpuFree",
          "maxMemoryGibFree",
          "totalMemoryGibFree",
          "maxGpuFree",
          "totalGpuFree",
          "maxStorageGibFree",
          "totalStorageGibFree",
          "minVcpu",
          "minMemoryGib",
          "prices"
        ],
        "type": "object"
      },
      "GetVMResponse": {
        "properties": {
          "VM": {
            "$ref": "#/components/schemas/VM"
          },
          "gpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "ipv4PriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "memoryGibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "storageGibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "totalGpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "totalMemoryPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "totalPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "totalStoragePriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "totalVcpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "vcpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          }
        },
        "required": [
          "VM",
          "vcpuPriceHr",
          "totalVcpuPriceHr",
          "memoryGibPriceHr",
          "totalMemoryPriceHr",
          "gpuPriceHr",
          "totalGpuPriceHr",
          "storageGibPriceHr",
          "totalStoragePriceHr",
          "ipv4PriceHr",
          "totalPriceHr"
        ],
        "type": "object"
      },
      "GpuModel": {
        "properties": {
          "id": {
            "type": "string"
          },
          "memoryGib": {
            "format": "int32",
            "type": "integer"
          },
          "modelName": {
            "type": "string"
          },
          "vendorName": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "vendorName",
          "modelName",
          "memoryGib"
        ],
        "type": "object"
      },
      "Image": {
        "properties": {
          "description": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "installedPackages": {
            "items": {
              "$ref": "#/components/schemas/Package"
            },
            "type": "array"
          },
          "name": {
            "type": "string"
          },
          "platform": {
            "type": "string"
          },
          "sizeGib": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "displayName",
          "platform",
          "sizeGib",
          "installedPackages"
        ],
        "type": "object"
      },
      "ImageResult": {
        "properties": {
          "createTime": {
            "format": "date-time",
            "type": "string"
          },
          "dataCenterId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "sizeGib": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "Invoice": {
        "properties": {
          "amountDue": {
            "format": "int64",
            "type": "string"
          },
          "amountPaid": {
            "format": "int64",
            "type": "string"
          },
          "amountRemaining": {
            "format": "int64",
            "type": "string"
          },
          "autoAdvance": {
            "type": "boolean"
          },
          "billingReason": {
            "type": "string"
          },
          "created": {
            "format": "int64",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "dueDate": {
            "format": "int64",
            "type": "string"
          },
          "hostedInvoiceUrl": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "number": {
            "type": "string"
          },
          "paidDate": {
            "format": "int64",
            "type": "string"
          },
          "periodEnd": {
            "format": "int64",
            "type": "string"
          },
          "periodStart": {
            "format": "int64",
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "subtotal": {
            "format": "int64",
            "type": "string"
          },
          "subtotalExcludingTax": {
            "format": "int64",
            "type": "string"
          },
          "tax": {
            "format": "int64",
            "type": "string"
          },
          "total": {
            "format": "int64",
            "type": "string"
          },
          "totalExcludingTax": {
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "LastPaymentError": {
        "properties": {
          "code": {
            "type": "string"
          },
          "declineCode": {
            "type": "string"
          }
        },
        "required": [
          "code",
          "declineCode"
        ],
        "type": "object"
      },
      "LatLng": {
        "description": "An object that represents a latitude/longitude pair. This is expressed as a\npair of doubles to represent degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n<a href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\">WGS84\nstandard</a>. Values must be within normalized ranges.",
        "properties": {
          "latitude": {
            "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
            "format": "double",
            "type": "number"
          },
          "longitude": {
            "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "ListApiKeysResponse": {
        "properties": {
          "apiKeys": {
            "items": {
              "$ref": "#/components/schemas/ApiKey"
            },
            "type": "array"
          },
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "apiKeys",
          "totalCount",
          "pageNumber",
          "pageSize"
        ],
        "type": "object"
      },
      "ListBillingAccountCreditBalanceTransactionsResponse": {
        "properties": {
          "creditBalanceTransactions": {
            "items": {
              "$ref": "#/components/schemas/CreditBalanceTransaction"
            },
            "type": "array"
          },
          "hasMore": {
            "type": "boolean"
          }
        },
        "required": [
          "creditBalanceTransactions",
          "hasMore"
        ],
        "type": "object"
      },
      "ListBillingAccountProjectsResponse": {
        "properties": {
          "projects": {
            "items": {
              "$ref": "#/components/schemas/BillingAccountProject"
            },
            "type": "array"
          }
        },
        "required": [
          "projects"
        ],
        "type": "object"
      },
      "ListBillingAccountTransactionsResponse": {
        "properties": {
          "hasMore": {
            "type": "boolean"
          },
          "transactions": {
            "items": {
              "$ref": "#/components/schemas/Transaction"
            },
            "type": "array"
          }
        },
        "required": [
          "transactions",
          "hasMore"
        ],
        "type": "object"
      },
      "ListBillingAccountsResponse": {
        "properties": {
          "billingAccounts": {
            "items": {
              "$ref": "#/components/schemas/BillingAccount"
            },
            "type": "array"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "pageToken": {
            "type": "string"
          }
        },
        "required": [
          "billingAccounts",
          "pageToken",
          "pageSize"
        ],
        "type": "object"
      },
      "ListClusterMachineTypesResponse": {
        "properties": {
          "machineTypes": {
            "items": {
              "$ref": "#/components/schemas/MachineType"
            },
            "type": "array"
          },
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "totalCount",
          "pageNumber",
          "pageSize"
        ],
        "type": "object"
      },
      "ListClustersResponse": {
        "properties": {
          "clusters": {
            "items": {
              "$ref": "#/components/schemas/Cluster"
            },
            "type": "array"
          },
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "totalCount",
          "pageNumber",
          "pageSize"
        ],
        "type": "object"
      },
      "ListDisksResponse": {
        "properties": {
          "disks": {
            "items": {
              "$ref": "#/components/schemas/Disk"
            },
            "type": "array"
          },
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "totalCount",
          "pageNumber",
          "pageSize"
        ],
        "type": "object"
      },
      "ListInvoicesResponse": {
        "properties": {
          "hasMore": {
            "type": "boolean"
          },
          "invoices": {
            "items": {
              "$ref": "#/components/schemas/Invoice"
            },
            "type": "array"
          }
        },
        "required": [
          "invoices",
          "hasMore"
        ],
        "type": "object"
      },
      "ListMachineOperatingSystemsResponse": {
        "properties": {
          "images": {
            "items": {
              "$ref": "#/components/schemas/Image"
            },
            "type": "array"
          }
        },
        "required": [
          "images"
        ],
        "type": "object"
      },
      "ListMachineTypesResponse": {
        "properties": {
          "machineTypes": {
            "items": {
              "$ref": "#/components/schemas/MachineType"
            },
            "type": "array"
          },
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "totalCount",
          "pageNumber",
          "pageSize"
        ],
        "type": "object"
      },
      "ListMachinesResponse": {
        "properties": {
          "machines": {
            "items": {
              "$ref": "#/components/schemas/Machine"
            },
            "type": "array"
          },
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "totalCount",
          "pageNumber",
          "pageSize"
        ],
        "type": "object"
      },
      "ListNetworksResponse": {
        "properties": {
          "networks": {
            "items": {
              "$ref": "#/components/schemas/Network"
            },
            "type": "array"
          },
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "networks",
          "totalCount",
          "pageNumber",
          "pageSize"
        ],
        "type": "object"
      },
      "ListObjectStorageBucketsResponse": {
        "properties": {
          "buckets": {
            "items": {
              "$ref": "#/components/schemas/ObjectStorageBucket"
            },
            "type": "array"
          },
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "buckets",
          "totalCount",
          "pageNumber",
          "pageSize"
        ],
        "type": "object"
      },
      "ListObjectStorageUsersResponse": {
        "properties": {
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          },
          "users": {
            "items": {
              "$ref": "#/components/schemas/ObjectStorageUser"
            },
            "type": "array"
          }
        },
        "required": [
          "users",
          "totalCount",
          "pageNumber",
          "pageSize"
        ],
        "type": "object"
      },
      "ListOutstandingInvoicesResponse": {
        "properties": {
          "invoices": {
            "items": {
              "$ref": "#/components/schemas/Invoice"
            },
            "type": "array"
          }
        },
        "required": [
          "invoices"
        ],
        "type": "object"
      },
      "ListPrivateVMImagesResponse": {
        "properties": {
          "images": {
            "items": {
              "$ref": "#/components/schemas/PrivateImage"
            },
            "type": "array"
          },
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "totalCount",
          "pageNumber",
          "pageSize"
        ],
        "type": "object"
      },
      "ListProjectSshKeysResponse": {
        "properties": {
          "sshKeys": {
            "items": {
              "$ref": "#/components/schemas/SshKey"
            },
            "type": "array"
          }
        },
        "required": [
          "sshKeys"
        ],
        "type": "object"
      },
      "ListProjectsResponse": {
        "properties": {
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "pageToken": {
            "type": "string"
          },
          "projects": {
            "items": {
              "$ref": "#/components/schemas/Project"
            },
            "type": "array"
          }
        },
        "required": [
          "projects",
          "pageToken",
          "pageSize"
        ],
        "type": "object"
      },
      "ListPublicVMImagesResponse": {
        "properties": {
          "images": {
            "items": {
              "$ref": "#/components/schemas/Image"
            },
            "type": "array"
          }
        },
        "required": [
          "images"
        ],
        "type": "object"
      },
      "ListSecurityGroupsResponse": {
        "properties": {
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "securityGroups": {
            "items": {
              "$ref": "#/components/schemas/SecurityGroup"
            },
            "type": "array"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "securityGroups",
          "totalCount",
          "pageNumber",
          "pageSize"
        ],
        "type": "object"
      },
      "ListSshKeysResponse": {
        "properties": {
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "sshKeys": {
            "items": {
              "$ref": "#/components/schemas/SshKey"
            },
            "type": "array"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "sshKeys",
          "totalCount",
          "pageNumber",
          "pageSize"
        ],
        "type": "object"
      },
      "ListVMDataCentersResponse": {
        "properties": {
          "dataCenters": {
            "items": {
              "$ref": "#/components/schemas/VMDataCenter"
            },
            "type": "array"
          }
        },
        "required": [
          "dataCenters"
        ],
        "type": "object"
      },
      "ListVMGpuModelsResponse": {
        "properties": {
          "gpuModels": {
            "items": {
              "$ref": "#/components/schemas/GpuModel"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ListVMMachineTypesResponse": {
        "properties": {
          "machineTypes": {
            "items": {
              "$ref": "#/components/schemas/VMMachineType"
            },
            "type": "array"
          }
        },
        "required": [
          "machineTypes"
        ],
        "type": "object"
      },
      "ListVMsResponse": {
        "properties": {
          "VMs": {
            "items": {
              "$ref": "#/components/schemas/VM"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ListVolumePricesResponse": {
        "properties": {
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "prices": {
            "items": {
              "$ref": "#/components/schemas/VolumePrice"
            },
            "type": "array"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "ListVolumesResponse": {
        "properties": {
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          },
          "volumes": {
            "items": {
              "$ref": "#/components/schemas/Volume"
            },
            "type": "array"
          }
        },
        "required": [
          "totalCount",
          "pageNumber",
          "pageSize"
        ],
        "type": "object"
      },
      "Machine": {
        "properties": {
          "architecture": {
            "readOnly": true,
            "type": "string"
          },
          "commitmentTerm": {
            "$ref": "#/components/schemas/CommitmentTerm"
          },
          "cpuCores": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "cpuModel": {
            "readOnly": true,
            "type": "string"
          },
          "cpuSpeedMhz": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "createBy": {
            "readOnly": true,
            "type": "string"
          },
          "createTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "customSshKeys": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dataCenterId": {
            "type": "string"
          },
          "diskSizeGib": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "disks": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "externalIpAddresses": {
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "gpuModelId": {
            "readOnly": true,
            "type": "string"
          },
          "gpus": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "hostname": {
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "machineTypeId": {
            "type": "string"
          },
          "memoryGib": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "os": {
            "type": "string"
          },
          "powerState": {
            "$ref": "#/components/schemas/MachinePowerState"
          },
          "priceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "projectId": {
            "type": "string"
          },
          "sshKeySource": {
            "$ref": "#/components/schemas/SshKeySource"
          },
          "startScript": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/Machine.State"
          },
          "userData": {
            "description": "DEPRECATED: use `startScript` to run a script on boot, and `sshKeySource` or `customSshKeys` to set authorized ssh keys",
            "title": "userData",
            "type": "string",
            "deprecated": true
          }
        },
        "required": [
          "dataCenterId",
          "id",
          "machineTypeId",
          "os",
          "projectId"
        ],
        "type": "object"
      },
      "Machine.State": {
        "default": "STATE_UNSPECIFIED",
        "enum": [
          "STATE_UNSPECIFIED",
          "CREATING",
          "ACTIVE",
          "DEPLOYING",
          "DELETING",
          "FAILED",
          "UPDATING"
        ],
        "type": "string"
      },
      "MachinePowerState": {
        "default": "MACHINE_POWER_STATE_UNSPECIFIED",
        "enum": [
          "MACHINE_POWER_STATE_UNSPECIFIED",
          "ON",
          "OFF",
          "POWERING_ON",
          "POWERING_OFF",
          "REBOOTING"
        ],
        "type": "string"
      },
      "MachineResult": {
        "properties": {
          "architecture": {
            "type": "string"
          },
          "cpuCores": {
            "format": "int32",
            "type": "integer"
          },
          "cpuModel": {
            "type": "string"
          },
          "cpuSpeedMhz": {
            "format": "int32",
            "type": "integer"
          },
          "createTime": {
            "format": "date-time",
            "type": "string"
          },
          "dataCenterId": {
            "type": "string"
          },
          "diskSizeGib": {
            "format": "int32",
            "type": "integer"
          },
          "disks": {
            "format": "int32",
            "type": "integer"
          },
          "externalIpAddresses": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "gpuModelId": {
            "type": "string"
          },
          "gpus": {
            "format": "int32",
            "type": "integer"
          },
          "id": {
            "type": "string"
          },
          "ipv4Addresses": {
            "format": "int32",
            "type": "integer"
          },
          "machineTypeId": {
            "type": "string"
          },
          "memoryGib": {
            "format": "int32",
            "type": "integer"
          },
          "os": {
            "type": "string"
          },
          "powerState": {
            "$ref": "#/components/schemas/MachinePowerState"
          },
          "projectId": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/Machine.State"
          }
        },
        "type": "object"
      },
      "MachineType": {
        "properties": {
          "architecture": {
            "type": "string"
          },
          "cpuCores": {
            "format": "int32",
            "type": "integer"
          },
          "cpuModel": {
            "type": "string"
          },
          "cpuSpeedMhz": {
            "format": "int32",
            "type": "integer"
          },
          "dataCenterId": {
            "description": "The data center in which this machine type is available.",
            "type": "string"
          },
          "diskSizeGib": {
            "format": "int32",
            "type": "integer"
          },
          "disks": {
            "format": "int32",
            "type": "integer"
          },
          "gpuModelId": {
            "type": "string"
          },
          "gpus": {
            "format": "int32",
            "type": "integer"
          },
          "id": {
            "description": "The unique identifier for this machine type within the data center.",
            "type": "string"
          },
          "machinesFree": {
            "description": "The number of machines available for deployment.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "memoryGib": {
            "format": "int32",
            "type": "integer"
          },
          "networkType": {
            "$ref": "#/components/schemas/NetworkType"
          },
          "prices": {
            "description": "The list of prices available for this machine type for varying commitment terms.",
            "items": {
              "$ref": "#/components/schemas/MachineTypePrice"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "required": [
          "dataCenterId",
          "id",
          "architecture",
          "cpuCores",
          "cpuSpeedMhz",
          "cpuModel",
          "memoryGib",
          "disks",
          "diskSizeGib",
          "gpus",
          "networkType"
        ],
        "type": "object"
      },
      "MachineTypePrice": {
        "properties": {
          "commitmentTerm": {
            "$ref": "#/components/schemas/CommitmentTerm"
          },
          "dataCenterId": {
            "type": "string"
          },
          "ipv4PriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "machineTypeId": {
            "type": "string"
          },
          "priceHr": {
            "$ref": "#/components/schemas/Decimal"
          }
        },
        "required": [
          "dataCenterId",
          "machineTypeId",
          "commitmentTerm",
          "priceHr",
          "ipv4PriceHr"
        ],
        "type": "object"
      },
      "MonitorVMResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/VMMonitoringItem"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "Network": {
        "properties": {
          "createTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "dataCenterId": {
            "type": "string"
          },
          "externalIpAddress": {
            "readOnly": true,
            "type": "string"
          },
          "gateway": {
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "internalIpAddress": {
            "readOnly": true,
            "type": "string"
          },
          "ipRange": {
            "type": "string"
          },
          "priceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "projectId": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/Network.State"
          },
          "vmState": {
            "$ref": "#/components/schemas/VmState"
          }
        },
        "required": [
          "projectId",
          "id",
          "dataCenterId",
          "ipRange"
        ],
        "type": "object"
      },
      "Network.State": {
        "default": "STATE_UNKNOWN",
        "enum": [
          "STATE_UNKNOWN",
          "ACTIVE",
          "CREATING",
          "DELETED",
          "DELETING",
          "FAILED",
          "STARTING",
          "STOPPED",
          "STOPPING",
          "UPDATING"
        ],
        "type": "string"
      },
      "NetworkPriceHr": {
        "properties": {
          "priceHr": {
            "$ref": "#/components/schemas/Decimal"
          }
        },
        "type": "object"
      },
      "NetworkType": {
        "default": "NETWORK_TYPE_UNSPECIFIED",
        "enum": [
          "NETWORK_TYPE_UNSPECIFIED",
          "ETHERNET",
          "INFINIBAND"
        ],
        "type": "string"
      },
      "ObjectStorageBucket": {
        "properties": {
          "billableBytes": {
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "dataCenterId": {
            "type": "string"
          },
          "endpoint": {
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "objectCount": {
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "sizeBytes": {
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "storageGibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          }
        },
        "required": [
          "projectId",
          "dataCenterId",
          "id"
        ],
        "type": "object"
      },
      "ObjectStorageKey": {
        "properties": {
          "accessKey": {
            "type": "string"
          },
          "secretKey": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "ObjectStorageUser": {
        "properties": {
          "createBy": {
            "readOnly": true,
            "type": "string"
          },
          "createTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "dataCenterId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "keys": {
            "items": {
              "$ref": "#/components/schemas/ObjectStorageKey"
            },
            "type": "array"
          },
          "projectId": {
            "type": "string"
          }
        },
        "required": [
          "projectId",
          "dataCenterId",
          "id"
        ],
        "type": "object"
      },
      "Package": {
        "properties": {
          "description": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "type": "object"
      },
      "PaymentIntent": {
        "properties": {
          "clientSecret": {
            "type": "string"
          }
        },
        "required": [
          "clientSecret"
        ],
        "type": "object"
      },
      "PaymentMethodCard": {
        "properties": {
          "brand": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "expMonth": {
            "format": "int64",
            "type": "string"
          },
          "expYear": {
            "format": "int64",
            "type": "string"
          },
          "fingerprint": {
            "type": "string"
          },
          "last4": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "PaymentMethodPaypal": {
        "properties": {
          "payerEmail": {
            "type": "string"
          },
          "payerId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "PaymentTerms": {
        "default": "PAYMENT_TERMS_UNSPECIFIED",
        "enum": [
          "PAYMENT_TERMS_UNSPECIFIED",
          "PAYMENT_TERMS_PREPAID",
          "PAYMENT_TERMS_INVOICE"
        ],
        "type": "string"
      },
      "PrivateImage": {
        "properties": {
          "dataCenterId": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "platform": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "sizeGib": {
            "format": "int32",
            "type": "integer"
          },
          "state": {
            "$ref": "#/components/schemas/PrivateImageState"
          }
        },
        "type": "object"
      },
      "PrivateImageState": {
        "default": "UNKNOWN",
        "enum": [
          "UNKNOWN",
          "ATTACHED",
          "CLONING",
          "CREATING",
          "DELETING",
          "DISABLED",
          "FAILED",
          "READY",
          "UPDATING"
        ],
        "type": "string"
      },
      "Profile": {
        "properties": {
          "emailAddress": {
            "type": "string"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "picture": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "Project": {
        "properties": {
          "billingAccountId": {
            "type": "string"
          },
          "createBy": {
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "resourceCount": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "billingAccountId"
        ],
        "type": "object"
      },
      "RemoveBillingAccountPaymentMethodResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "paymentMethodId": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "paymentMethodId"
        ],
        "type": "object"
      },
      "ResizeVMResponse": {
        "properties": {
          "vm": {
            "$ref": "#/components/schemas/VM"
          }
        },
        "required": [
          "vm"
        ],
        "type": "object"
      },
      "Result": {
        "properties": {
          "billingAccount": {
            "$ref": "#/components/schemas/BillingAccountResult"
          },
          "cluster": {
            "$ref": "#/components/schemas/Cluster"
          },
          "disk": {
            "$ref": "#/components/schemas/Disk"
          },
          "image": {
            "$ref": "#/components/schemas/ImageResult"
          },
          "machine": {
            "$ref": "#/components/schemas/MachineResult"
          },
          "network": {
            "$ref": "#/components/schemas/Network"
          },
          "project": {
            "$ref": "#/components/schemas/Project"
          },
          "resourceName": {
            "type": "string"
          },
          "resourceType": {
            "type": "string"
          },
          "score": {
            "format": "float",
            "type": "number"
          },
          "virtualMachine": {
            "$ref": "#/components/schemas/VirtualMachineResult"
          },
          "volume": {
            "$ref": "#/components/schemas/Volume"
          }
        },
        "type": "object"
      },
      "Role": {
        "default": "UNKNOWN",
        "enum": [
          "UNKNOWN",
          "OWNER",
          "VIEWER",
          "EDITOR"
        ],
        "type": "string"
      },
      "Rule": {
        "properties": {
          "icmpType": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "ipRangeCidr": {
            "title": "single IP or CIDR format range to apply rule to",
            "type": "string"
          },
          "ports": {
            "type": "string"
          },
          "protocol": {
            "$ref": "#/components/schemas/Rule.Protocol"
          },
          "ruleType": {
            "$ref": "#/components/schemas/Rule.RuleType"
          }
        },
        "type": "object"
      },
      "Rule.Protocol": {
        "default": "PROTOCOL_UNKNOWN",
        "enum": [
          "PROTOCOL_UNKNOWN",
          "PROTOCOL_ALL",
          "PROTOCOL_TCP",
          "PROTOCOL_UDP",
          "PROTOCOL_ICMP",
          "PROTOCOL_ICMPv6",
          "PROTOCOL_IPSEC"
        ],
        "type": "string"
      },
      "Rule.RuleType": {
        "default": "RULE_TYPE_UNKNOWN",
        "enum": [
          "RULE_TYPE_UNKNOWN",
          "RULE_TYPE_INBOUND",
          "RULE_TYPE_OUTBOUND"
        ],
        "type": "string"
      },
      "SearchResourcesResponse": {
        "properties": {
          "results": {
            "items": {
              "$ref": "#/components/schemas/Result"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "SecurityGroup": {
        "properties": {
          "dataCenterId": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/Rule"
            },
            "type": "array"
          }
        },
        "required": [
          "dataCenterId",
          "id"
        ],
        "type": "object"
      },
      "SecurityGroupRule": {
        "properties": {
          "icmpType": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "ipRangeCidr": {
            "title": "single IP or CIDR format range to apply rule to",
            "type": "string"
          },
          "ports": {
            "type": "string"
          },
          "protocol": {
            "$ref": "#/components/schemas/SecurityGroupRule.Protocol"
          },
          "ruleType": {
            "$ref": "#/components/schemas/SecurityGroupRule.RuleType"
          }
        },
        "type": "object"
      },
      "SecurityGroupRule.Protocol": {
        "default": "PROTOCOL_UNKNOWN",
        "enum": [
          "PROTOCOL_UNKNOWN",
          "PROTOCOL_ALL",
          "PROTOCOL_TCP",
          "PROTOCOL_UDP",
          "PROTOCOL_ICMP",
          "PROTOCOL_ICMPv6",
          "PROTOCOL_IPSEC"
        ],
        "type": "string"
      },
      "SecurityGroupRule.RuleType": {
        "default": "RULE_TYPE_UNKNOWN",
        "enum": [
          "RULE_TYPE_UNKNOWN",
          "RULE_TYPE_INBOUND",
          "RULE_TYPE_OUTBOUND"
        ],
        "type": "string"
      },
      "SetBillingAccountDefaultPaymentMethodResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "paymentMethodId": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "paymentMethodId"
        ],
        "type": "object"
      },
      "SshKey": {
        "properties": {
          "comment": {
            "readOnly": true,
            "type": "string"
          },
          "createTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "fingerprint": {
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "publicKey": {
            "type": "string"
          },
          "type": {
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "publicKey"
        ],
        "type": "object"
      },
      "SshKeySource": {
        "default": "SSH_KEY_SOURCE_UNKNOWN",
        "enum": [
          "SSH_KEY_SOURCE_UNKNOWN",
          "SSH_KEY_SOURCE_PROJECT",
          "SSH_KEY_SOURCE_USER",
          "SSH_KEY_SOURCE_NONE"
        ],
        "type": "string"
      },
      "Status": {
        "properties": {
          "code": {
            "format": "int32",
            "type": "integer"
          },
          "details": {
            "items": {
              "$ref": "#/components/schemas/Any"
            },
            "type": "array"
          },
          "message": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "StripeCustomer": {
        "properties": {
          "balance": {
            "$ref": "#/components/schemas/Decimal"
          },
          "email": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "TaxId": {
        "properties": {
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "Transaction": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/Decimal"
          },
          "createTime": {
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "lastPaymentError": {
            "$ref": "#/components/schemas/LastPaymentError"
          },
          "latestCharge": {
            "$ref": "#/components/schemas/Charge"
          },
          "status": {
            "type": "string"
          },
          "succeeded": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "amount",
          "description",
          "createTime",
          "status",
          "succeeded",
          "latestCharge",
          "lastPaymentError"
        ],
        "type": "object"
      },
      "Unit": {
        "default": "UNIT_UNKNOWN",
        "enum": [
          "UNIT_UNKNOWN",
          "UNIT_GIB_HOUR",
          "UNIT_HOUR"
        ],
        "type": "string"
      },
      "UpdateBillingAccountBody": {
        "properties": {
          "billingAccount": {
            "properties": {
              "billingAddress": {
                "$ref": "#/components/schemas/BillingAddress"
              },
              "billingThreshold": {
                "$ref": "#/components/schemas/Decimal"
              },
              "createBy": {
                "readOnly": true,
                "type": "string"
              },
              "createTime": {
                "format": "date-time",
                "readOnly": true,
                "type": "string"
              },
              "creditBalance": {
                "$ref": "#/components/schemas/Decimal"
              },
              "creditBalanceRecharge": {
                "$ref": "#/components/schemas/CreditBalanceRecharge"
              },
              "deleteTime": {
                "format": "date-time",
                "readOnly": true,
                "type": "string"
              },
              "displayName": {
                "type": "string"
              },
              "hourlySpendLimit": {
                "$ref": "#/components/schemas/Decimal"
              },
              "hourlySpendRate": {
                "$ref": "#/components/schemas/Decimal"
              },
              "invoiceTime": {
                "format": "date-time",
                "readOnly": true,
                "type": "string"
              },
              "monthlySpend": {
                "readOnly": true,
                "type": "string"
              },
              "monthlySpendLimit": {
                "$ref": "#/components/schemas/Decimal"
              },
              "nextInvoiceTotal": {
                "$ref": "#/components/schemas/Decimal"
              },
              "paymentTerms": {
                "$ref": "#/components/schemas/PaymentTerms"
              },
              "purgeTime": {
                "format": "date-time",
                "readOnly": true,
                "type": "string"
              },
              "state": {
                "$ref": "#/components/schemas/BillingAccountState"
              },
              "stripeRef": {
                "type": "string"
              },
              "taxId": {
                "$ref": "#/components/schemas/TaxId"
              }
            },
            "title": "Update billing account params",
            "type": "object"
          },
          "updateMask": {
            "type": "string"
          }
        },
        "required": [
          "updateMask"
        ],
        "type": "object"
      },
      "UpdateVMAuthorizedSSHKeysBody": {
        "properties": {
          "customSshKeys": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sshKeySource": {
            "$ref": "#/components/schemas/SshKeySource"
          }
        },
        "type": "object"
      },
      "UpdateVMExpireTimeBody": {
        "properties": {
          "expireTime": {
            "format": "date-time",
            "type": "string"
          },
          "ttl": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdateVMExpireTimeResponse": {
        "properties": {
          "expireTime": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdateVMMetadataBody": {
        "properties": {
          "merge": {
            "type": "boolean"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "UpdateVMMetadataResponse": {
        "properties": {
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "UpdateVMPasswordBody": {
        "properties": {
          "password": {
            "type": "string"
          }
        },
        "required": [
          "password"
        ],
        "type": "object"
      },
      "UserPermission": {
        "properties": {
          "permissionRole": {
            "$ref": "#/components/schemas/Role"
          },
          "role": {
            "readOnly": true,
            "type": "string"
          },
          "userEmail": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          },
          "userPicture": {
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "permissionRole"
        ],
        "type": "object"
      },
      "VM": {
        "properties": {
          "authorizedSshKeys": {
            "type": "string"
          },
          "bootDisk": {
            "$ref": "#/components/schemas/Disk"
          },
          "bootDiskSizeGib": {
            "format": "int64",
            "type": "integer"
          },
          "commitmentEndTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "commitmentTerm": {
            "$ref": "#/components/schemas/CommitmentTerm"
          },
          "cpuModel": {
            "type": "string"
          },
          "createBy": {
            "readOnly": true,
            "type": "string"
          },
          "createTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "datacenterId": {
            "readOnly": true,
            "type": "string"
          },
          "expireTime": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "externalIpAddress": {
            "type": "string"
          },
          "gpuModel": {
            "type": "string"
          },
          "gpuModelId": {
            "type": "string"
          },
          "gpuQuantity": {
            "format": "int64",
            "type": "integer"
          },
          "id": {
            "type": "string"
          },
          "imageId": {
            "type": "string"
          },
          "imageName": {
            "type": "string"
          },
          "internalIpAddress": {
            "type": "string"
          },
          "machineType": {
            "type": "string"
          },
          "memory": {
            "format": "int64",
            "type": "integer"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "nics": {
            "items": {
              "$ref": "#/components/schemas/VM.NIC"
            },
            "type": "array"
          },
          "price": {
            "$ref": "#/components/schemas/VMPrice"
          },
          "privateImageId": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "publicImageId": {
            "type": "string"
          },
          "publicImageName": {
            "type": "string"
          },
          "publicIpAddress": {
            "type": "string"
          },
          "renewableEnergy": {
            "type": "boolean"
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/SecurityGroupRule"
            },
            "type": "array"
          },
          "securityGroupIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "securityGroups": {
            "items": {
              "$ref": "#/components/schemas/SecurityGroup"
            },
            "type": "array"
          },
          "shortState": {
            "type": "string"
          },
          "sshKeySource": {
            "$ref": "#/components/schemas/SshKeySource"
          },
          "state": {
            "$ref": "#/components/schemas/VmState"
          },
          "storageDisks": {
            "items": {
              "$ref": "#/components/schemas/Disk"
            },
            "type": "array"
          },
          "vcpus": {
            "format": "int64",
            "type": "integer"
          }
        },
        "required": [
          "commitmentTerm",
          "projectId"
        ],
        "type": "object"
      },
      "VM.NIC": {
        "properties": {
          "externalIpAddress": {
            "type": "string"
          },
          "internalIpAddress": {
            "type": "string"
          },
          "networkAddress": {
            "type": "string"
          },
          "networkId": {
            "type": "string"
          },
          "securityGroupIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "VMDataCenter": {
        "properties": {
          "diskPoolPricing": {
            "items": {
              "$ref": "#/components/schemas/DiskStoragePriceHr"
            },
            "type": "array"
          },
          "id": {
            "type": "string"
          },
          "ipv4Free": {
            "format": "int32",
            "type": "integer"
          },
          "ipv4PriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "location": {
            "$ref": "#/components/schemas/LatLng"
          },
          "networkPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "networkPricing": {
            "items": {
              "$ref": "#/components/schemas/NetworkPriceHr"
            },
            "type": "array"
          },
          "objectStorageGibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "renewableEnergy": {
            "type": "boolean"
          },
          "s3Endpoint": {
            "type": "string"
          },
          "supplierName": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "supplierName",
          "renewableEnergy",
          "ipv4Free",
          "s3Endpoint",
          "location"
        ],
        "type": "object"
      },
      "VMMachineType": {
        "properties": {
          "cpuModel": {
            "type": "string"
          },
          "dataCenterId": {
            "type": "string"
          },
          "gpuModel": {
            "type": "string"
          },
          "gpuModelId": {
            "type": "string"
          },
          "gpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "ipv4PriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "machineType": {
            "type": "string"
          },
          "maxGpuFree": {
            "format": "int32",
            "type": "integer"
          },
          "maxMemoryGibFree": {
            "format": "int32",
            "type": "integer"
          },
          "maxStorageGibFree": {
            "format": "int32",
            "type": "integer"
          },
          "maxVcpuFree": {
            "format": "int32",
            "type": "integer"
          },
          "maxVcpuPerGpu": {
            "format": "double",
            "type": "number"
          },
          "maxVcpuPerMemoryGib": {
            "format": "double",
            "type": "number"
          },
          "memoryGibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "minMemoryGib": {
            "format": "double",
            "type": "number"
          },
          "minStorageGibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "minVcpu": {
            "format": "double",
            "type": "number"
          },
          "minVcpuPerGpu": {
            "format": "double",
            "type": "number"
          },
          "minVcpuPerMemoryGib": {
            "format": "double",
            "type": "number"
          },
          "prices": {
            "items": {
              "$ref": "#/components/schemas/VirtualMachineTypePrice"
            },
            "type": "array"
          },
          "renewableEnergy": {
            "type": "boolean"
          },
          "totalGpuFree": {
            "format": "int32",
            "type": "integer"
          },
          "totalMemoryGibFree": {
            "format": "int32",
            "type": "integer"
          },
          "totalStorageGibFree": {
            "format": "int32",
            "type": "integer"
          },
          "totalVcpuFree": {
            "format": "int32",
            "type": "integer"
          },
          "vcpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          }
        },
        "required": [
          "dataCenterId",
          "machineType",
          "cpuModel",
          "gpuModel",
          "gpuModelId",
          "minVcpuPerMemoryGib",
          "maxVcpuPerMemoryGib",
          "minVcpuPerGpu",
          "maxVcpuPerGpu",
          "vcpuPriceHr",
          "memoryGibPriceHr",
          "gpuPriceHr",
          "minStorageGibPriceHr",
          "ipv4PriceHr",
          "renewableEnergy",
          "maxVcpuFree",
          "totalVcpuFree",
          "maxMemoryGibFree",
          "totalMemoryGibFree",
          "maxGpuFree",
          "totalGpuFree",
          "maxStorageGibFree",
          "totalStorageGibFree",
          "minVcpu",
          "minMemoryGib",
          "prices"
        ],
        "type": "object"
      },
      "VMMonitoringItem": {
        "properties": {
          "cpu": {
            "format": "float",
            "type": "number"
          },
          "diskRdBytes": {
            "format": "int64",
            "type": "string"
          },
          "diskRdIops": {
            "format": "int64",
            "type": "string"
          },
          "diskWrBytes": {
            "format": "int64",
            "type": "string"
          },
          "diskWrIops": {
            "format": "int64",
            "type": "string"
          },
          "guestPing": {
            "format": "int64",
            "type": "string"
          },
          "memory": {
            "format": "int64",
            "type": "string"
          },
          "netRx": {
            "format": "int64",
            "type": "string"
          },
          "netTx": {
            "format": "int64",
            "type": "string"
          },
          "timestamp": {
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "VMPrice": {
        "properties": {
          "gpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "ipv4AddressPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "memoryGibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "storageGibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "totalGpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "totalMemoryPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "totalPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "totalStoragePriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "totalVcpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "vcpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          }
        },
        "required": [
          "vcpuPriceHr",
          "totalVcpuPriceHr",
          "memoryGibPriceHr",
          "totalMemoryPriceHr",
          "gpuPriceHr",
          "totalGpuPriceHr",
          "storageGibPriceHr",
          "totalStoragePriceHr",
          "ipv4AddressPriceHr",
          "totalPriceHr"
        ],
        "type": "object"
      },
      "VirtualMachineResult": {
        "properties": {
          "bootDiskPrivateImageId": {
            "type": "string"
          },
          "bootDiskPublicImageId": {
            "type": "string"
          },
          "bootDiskSizeGib": {
            "format": "int32",
            "type": "integer"
          },
          "createTime": {
            "format": "date-time",
            "type": "string"
          },
          "dataCenterId": {
            "type": "string"
          },
          "gpuModelId": {
            "type": "string"
          },
          "gpus": {
            "format": "int32",
            "type": "integer"
          },
          "id": {
            "type": "string"
          },
          "memoryGib": {
            "format": "int32",
            "type": "integer"
          },
          "projectId": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/VmState"
          },
          "vcpus": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "VirtualMachineTypePrice": {
        "properties": {
          "commitmentTerm": {
            "$ref": "#/components/schemas/CommitmentTerm"
          },
          "gpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "memoryGibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "vcpuPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          }
        },
        "required": [
          "vcpuPriceHr",
          "memoryGibPriceHr",
          "gpuPriceHr",
          "commitmentTerm"
        ],
        "type": "object"
      },
      "VmState": {
        "default": "CLONING",
        "enum": [
          "CLONING",
          "CREATING_SNAPSHOT",
          "DELETED",
          "DELETING",
          "DELETING_SNAPSHOT",
          "FAILED",
          "HOTPLUGGING",
          "MIGRATING",
          "RECREATING",
          "REVERTING_SNAPSHOT",
          "RESIZING",
          "RESIZING_DISK",
          "ACTIVE",
          "STARTING",
          "STOPPED",
          "STOPPING",
          "SUSPENDED",
          "SUSPENDING",
          "UNKNOWN",
          "PENDING"
        ],
        "type": "string"
      },
      "Volume": {
        "properties": {
          "commitmentEndTime": {
            "format": "date-time",
            "type": "string"
          },
          "commitmentTerm": {
            "$ref": "#/components/schemas/CommitmentTerm"
          },
          "dataCenterId": {
            "type": "string"
          },
          "gibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          },
          "id": {
            "type": "string"
          },
          "nfsPath": {
            "readOnly": true,
            "type": "string"
          },
          "nfsServer": {
            "readOnly": true,
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "sizeGib": {
            "format": "int32",
            "type": "integer"
          },
          "sizeGibUsed": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "state": {
            "$ref": "#/components/schemas/Volume.State"
          },
          "totalPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          }
        },
        "required": [
          "projectId",
          "id",
          "dataCenterId",
          "sizeGib"
        ],
        "type": "object"
      },
      "Volume.State": {
        "default": "VOLUME_STATE_UNSPECIFIED",
        "enum": [
          "VOLUME_STATE_UNSPECIFIED",
          "CREATING",
          "ACTIVE",
          "UPDATING",
          "DELETING",
          "FAILED"
        ],
        "type": "string"
      },
      "VolumePrice": {
        "properties": {
          "commitmentTerm": {
            "$ref": "#/components/schemas/CommitmentTerm"
          },
          "dataCenterId": {
            "type": "string"
          },
          "gibPriceHr": {
            "$ref": "#/components/schemas/Decimal"
          }
        },
        "required": [
          "dataCenterId",
          "commitmentTerm",
          "gibPriceHr"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "description": "API key authentication. API keys should be passed using the format `Bearer API_KEY`.",
        "in": "header",
        "name": "Authorization",
        "type": "apiKey"
      }
    }
  },
  "info": {
    "description": "The CUDO Compute API is organized around [REST](http://en.wikipedia.org/wiki/Representational_State_Transfer). Our API uses predictable resource-oriented URLs, accepts and returns [JSON](http://www.json.org/)-encoded requests and responses, and uses standard HTTP response codes, authentication, and verbs where possible.",
    "title": "CUDO Compute service",
    "version": "1.0.0"
  },
  "openapi": "3.0.3",
  "paths": {
    "/v1/api-keys": {
      "get": {
        "description": "List all API keys created by the requesting user. This does not include the API key itself which is only returned when the API key is first created.",
        "operationId": "ListApiKeys",
        "parameters": [
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListApiKeysResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List API keys",
        "tags": [
          "API keys"
        ]
      },
      "post": {
        "description": "Generates a new API key for the requesting user. The API key is returned in the response, and this is the only time it can be retrieved.",
        "operationId": "GenerateApiKey",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateApiKeyRequest"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKey"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create an API key",
        "tags": [
          "API keys"
        ]
      }
    },
    "/v1/api-keys/{name}": {
      "delete": {
        "description": "Deletes an API key, revoking all access for requests that use the key.",
        "operationId": "DeleteApiKey",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete an API key",
        "tags": [
          "API keys"
        ]
      }
    },
    "/v1/billing-accounts": {
      "get": {
        "description": "Lists billing accounts that can be accessed by the current user.",
        "operationId": "ListBillingAccounts",
        "parameters": [
          {
            "in": "query",
            "name": "pageToken",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListBillingAccountsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List billing accounts",
        "tags": [
          "Billing"
        ]
      },
      "post": {
        "description": "Creates a new billing account.",
        "operationId": "CreateBillingAccount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBillingAccountRequest"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingAccount"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create a billing account",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{billingAccountId}/spend/details": {
      "get": {
        "description": "Retrieves a detailed spend report for a billing account during a specified time period.",
        "operationId": "GetBillingAccountSpendDetails",
        "parameters": [
          {
            "in": "path",
            "name": "billingAccountId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetBillingAccountSpendDetailsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get billing account spend details",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}": {
      "delete": {
        "description": "Deletes a billing account. The billing account must have no linked projects or outstanding invoices.",
        "operationId": "DeleteBillingAccount",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingAccount"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete a billing account",
        "tags": [
          "Billing"
        ]
      },
      "get": {
        "description": "Retrieves a billing account.",
        "operationId": "GetBillingAccount",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingAccount"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get a billing account",
        "tags": [
          "Billing"
        ]
      },
      "patch": {
        "description": "Updates the details of a billing account. Only the display name, invoice name, email, tax ID, and billing address can be updated.",
        "operationId": "UpdateBillingAccount",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBillingAccountBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingAccount"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Update a billing account",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}:add-permission": {
      "post": {
        "description": "Grants a user permission to access a billing account.",
        "operationId": "AddBillingAccountPermission",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserPermission"
              }
            }
          },
          "required": true,
          "x-originalParamName": "userPermission"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Add a billing account permission",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}:list-permissions": {
      "get": {
        "description": "Lists user permissions granted for a billing account.",
        "operationId": "GetBillingAccountPermissions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetBillingAccountPermissionsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List billing account permissions",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}:remove-permission": {
      "post": {
        "description": "Revokes a user's permission to access a billing account.",
        "operationId": "RemoveBillingAccountPermission",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserPermission"
              }
            }
          },
          "required": true,
          "x-originalParamName": "userPermission"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Remove a billing account permission",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}:undelete": {
      "post": {
        "description": "Cancel the deletion of a billing account.",
        "operationId": "UndeleteBillingAccount",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingAccount"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Undelete a billing account",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}/credit": {
      "post": {
        "description": "Adds credit to a billing account using a specified payment method.",
        "operationId": "CreateBillingAccountCreditPayment",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The decimal value, as a string.\n\nThe string representation consists of an optional sign, `+` (`U+002B`)\nor `-` (`U+002D`), followed by a sequence of zero or more decimal digits\n(\"the integer\"), optionally followed by a fraction, optionally followed\nby an exponent.\n\nThe fraction consists of a decimal point followed by zero or more decimal\ndigits. The string must contain at least one digit in either the integer\nor the fraction. The number formed by the sign, the integer and the\nfraction is referred to as the significand.\n\nThe exponent consists of the character `e` (`U+0065`) or `E` (`U+0045`)\nfollowed by one or more decimal digits.\n\nServices **should** normalize decimal values before storing them by:\n\n  - Removing an explicitly-provided `+` sign (`+2.5` -> `2.5`).\n  - Replacing a zero-length integer value with `0` (`.5` -> `0.5`).\n  - Coercing the exponent character to lower-case (`2.5E8` -> `2.5e8`).\n  - Removing an explicitly-provided zero exponent (`2.5e0` -> `2.5`).\n\nServices **may** perform additional normalization based on its own needs\nand the internal decimal implementation selected, such as shifting the\ndecimal point and exponent value together (example: `2.5e-1` <-> `0.25`).\nAdditionally, services **may** preserve trailing zeroes in the fraction\nto indicate increased precision, but are not required to do so.\n\nNote that only the `.` character is supported to divide the integer\nand the fraction; `,` **should not** be supported regardless of locale.\nAdditionally, thousand separators **should not** be supported. If a\nservice does support them, values **must** be normalized.\n\nThe ENBF grammar is:\n\n    DecimalString =\n      [Sign] Significand [Exponent];\n\n    Sign = '+' | '-';\n\n    Significand =\n      Digits ['.'] [Digits] | [Digits] '.' Digits;\n\n    Exponent = ('e' | 'E') [Sign] Digits;\n\n    Digits = { '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' };\n\nServices **should** clearly document the range of supported values, the\nmaximum supported precision (total number of digits), and, if applicable,\nthe scale (number of digits after the decimal point), as well as how it\nbehaves when receiving out-of-bounds values.\n\nServices **may** choose to accept values passed as input even when the\nvalue has a higher precision or scale than the service supports, and\n**should** round the value to fit the supported scale. Alternatively, the\nservice **may** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC)\nif precision would be lost.\n\nServices **should** error with `400 Bad Request` (`INVALID_ARGUMENT` in\ngRPC) if the service receives a value outside of the supported range.",
            "in": "query",
            "name": "amount.value",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "paymentMethod",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "radarSessionId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateBillingAccountCreditPaymentResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Add credit to a billing account",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}/credit-balance-transactions": {
      "get": {
        "description": "Lists credit balance transactions for a billing account.",
        "operationId": "ListBillingAccountCreditBalanceTransactions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "startingAfter",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListBillingAccountCreditBalanceTransactionsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List credit balance transactions",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}/credit-checkout-session": {
      "post": {
        "description": "Creates a checkout session for adding credit to a billing account.",
        "operationId": "CreateBillingAccountCreditCheckoutSession",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The decimal value, as a string.\n\nThe string representation consists of an optional sign, `+` (`U+002B`)\nor `-` (`U+002D`), followed by a sequence of zero or more decimal digits\n(\"the integer\"), optionally followed by a fraction, optionally followed\nby an exponent.\n\nThe fraction consists of a decimal point followed by zero or more decimal\ndigits. The string must contain at least one digit in either the integer\nor the fraction. The number formed by the sign, the integer and the\nfraction is referred to as the significand.\n\nThe exponent consists of the character `e` (`U+0065`) or `E` (`U+0045`)\nfollowed by one or more decimal digits.\n\nServices **should** normalize decimal values before storing them by:\n\n  - Removing an explicitly-provided `+` sign (`+2.5` -> `2.5`).\n  - Replacing a zero-length integer value with `0` (`.5` -> `0.5`).\n  - Coercing the exponent character to lower-case (`2.5E8` -> `2.5e8`).\n  - Removing an explicitly-provided zero exponent (`2.5e0` -> `2.5`).\n\nServices **may** perform additional normalization based on its own needs\nand the internal decimal implementation selected, such as shifting the\ndecimal point and exponent value together (example: `2.5e-1` <-> `0.25`).\nAdditionally, services **may** preserve trailing zeroes in the fraction\nto indicate increased precision, but are not required to do so.\n\nNote that only the `.` character is supported to divide the integer\nand the fraction; `,` **should not** be supported regardless of locale.\nAdditionally, thousand separators **should not** be supported. If a\nservice does support them, values **must** be normalized.\n\nThe ENBF grammar is:\n\n    DecimalString =\n      [Sign] Significand [Exponent];\n\n    Sign = '+' | '-';\n\n    Significand =\n      Digits ['.'] [Digits] | [Digits] '.' Digits;\n\n    Exponent = ('e' | 'E') [Sign] Digits;\n\n    Digits = { '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' };\n\nServices **should** clearly document the range of supported values, the\nmaximum supported precision (total number of digits), and, if applicable,\nthe scale (number of digits after the decimal point), as well as how it\nbehaves when receiving out-of-bounds values.\n\nServices **may** choose to accept values passed as input even when the\nvalue has a higher precision or scale than the service supports, and\n**should** round the value to fit the supported scale. Alternatively, the\nservice **may** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC)\nif precision would be lost.\n\nServices **should** error with `400 Bad Request` (`INVALID_ARGUMENT` in\ngRPC) if the service receives a value outside of the supported range.",
            "in": "query",
            "name": "amount.value",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "returnUrl",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutSession"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create a checkout session for credit payment",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}/details": {
      "get": {
        "description": "Retrieves detailed information about a billing account.",
        "operationId": "GetBillingAccountDetails",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetBillingAccountDetailsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get billing account details",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}/payment-methods": {
      "get": {
        "description": "Retrieves the payment methods associated with a billing account.",
        "operationId": "GetBillingAccountPaymentMethods",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingAccountPaymentMethods"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get payment methods",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}/payment-methods/{paymentMethodId}": {
      "delete": {
        "description": "Removes a payment method from a billing account.",
        "operationId": "RemoveBillingAccountPaymentMethod",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "paymentMethodId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemoveBillingAccountPaymentMethodResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Remove a payment method",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}/payment-methods/{paymentMethodId}/set-default": {
      "post": {
        "description": "Sets a payment method as the default for a billing account.",
        "operationId": "SetBillingAccountDefaultPaymentMethod",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "paymentMethodId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetBillingAccountDefaultPaymentMethodResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Set default payment method",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}/projects": {
      "get": {
        "description": "Lists projects that are billed to a billing account.",
        "operationId": "ListBillingAccountProjects",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListBillingAccountProjectsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List billing account projects",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}/setup-intent": {
      "get": {
        "description": "Retrieves a setup intent for adding a payment method to a billing account.",
        "operationId": "GetBillingAccountSetupIntent",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingAccountSetupIntent"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Add a payment method",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/{id}/transactions": {
      "get": {
        "description": "Lists transactions for a billing account.",
        "operationId": "ListBillingAccountTransactions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "startingAfter",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListBillingAccountTransactionsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List billing account transactions",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/billing-accounts/invoices/outstanding": {
      "get": {
        "description": "Lists all outstanding invoices across billing accounts that the current user has access to.",
        "operationId": "ListOutstandingInvoices",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListOutstandingInvoicesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List outstanding invoices",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/invoices": {
      "get": {
        "description": "Lists invoices for a billing account.",
        "operationId": "ListInvoices",
        "parameters": [
          {
            "in": "query",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "startingAfter",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListInvoicesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List invoices",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/clusters/data-centers/{dataCenterId}/machine-types/{machineTypeId}": {
      "get": {
        "description": "Gets the details of a cluster machine type.",
        "operationId": "GetClusterMachineType",
        "parameters": [
          {
            "in": "path",
            "name": "dataCenterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "machineTypeId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return custom prices for a specific project.",
            "in": "query",
            "name": "projectId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetClusterMachineTypeResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get a cluster machine type",
        "tags": [
          "Clusters"
        ]
      }
    },
    "/v1/clusters/machine-types": {
      "get": {
        "description": "Lists the types of cluster machines that can be provisioned.",
        "operationId": "ListClusterMachineTypes",
        "parameters": [
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Return custom prices for a specific project.",
            "in": "query",
            "name": "projectId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListClusterMachineTypesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List cluster machine types",
        "tags": [
          "Clusters"
        ]
      }
    },
    "/v1/projects/{projectId}/cluster-machines/{id}": {
      "delete": {
        "description": "Removes a machine from a cluster. All data on the machine will be lost.",
        "operationId": "DeleteClusterMachine",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete a cluster machine",
        "tags": [
          "Clusters"
        ]
      },
      "patch": {
        "description": "Updates a machine in a cluster.",
        "operationId": "UpdateClusterMachine",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "architecture": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "cpuCores": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "cpuModel": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "cpuSpeedMhz": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "createBy": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "createTime": {
                    "format": "date-time",
                    "readOnly": true,
                    "type": "string"
                  },
                  "dataCenterId": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "diskSizeGib": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "disks": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "externalIpAddress": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "gpuModelId": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "gpus": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "internalIpAddress": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "machineTypeId": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "memoryGib": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "powerState": {
                    "$ref": "#/components/schemas/MachinePowerState"
                  },
                  "priceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  },
                  "state": {
                    "$ref": "#/components/schemas/ClusterMachine.State"
                  },
                  "volumeIds": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "title": "Update cluster machine params",
                "type": "object"
              }
            }
          },
          "description": "Update cluster machine params",
          "required": true,
          "x-originalParamName": "clusterMachine"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClusterMachine"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Update a cluster machine",
        "tags": [
          "Clusters"
        ]
      }
    },
    "/v1/projects/{projectId}/cluster-machines/{id}:reboot": {
      "post": {
        "description": "Reboots a machine in a cluster.",
        "operationId": "RebootClusterMachine",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Reboot a cluster machine",
        "tags": [
          "Clusters"
        ]
      }
    },
    "/v1/projects/{projectId}/cluster-machines/{id}:rename": {
      "post": {
        "description": "Renames a machine in a cluster. This can be useful if you are assigning specific roles to machines in the cluster.",
        "operationId": "RenameClusterMachine",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "newId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Rename a cluster machine",
        "tags": [
          "Clusters"
        ]
      }
    },
    "/v1/projects/{projectId}/clusters": {
      "get": {
        "description": "Lists clusters within a project.",
        "operationId": "ListClusters",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListClustersResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List clusters",
        "tags": [
          "Clusters"
        ]
      },
      "post": {
        "description": "Creates a new cluster.",
        "operationId": "CreateCluster",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "architecture": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "commitmentEndTime": {
                    "format": "date-time",
                    "readOnly": true,
                    "type": "string"
                  },
                  "commitmentTerm": {
                    "$ref": "#/components/schemas/CommitmentTerm"
                  },
                  "cpuModel": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "cpuSpeedMhz": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "createBy": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "createTime": {
                    "format": "date-time",
                    "readOnly": true,
                    "type": "string"
                  },
                  "customSshKeys": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "dataCenterId": {
                    "type": "string"
                  },
                  "gpuModelId": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "ipoibConfig": {
                    "$ref": "#/components/schemas/ClusterIPOIBConfig"
                  },
                  "machineCount": {
                    "format": "int32",
                    "type": "integer"
                  },
                  "machinePriceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  },
                  "machineTypeId": {
                    "type": "string"
                  },
                  "machines": {
                    "items": {
                      "$ref": "#/components/schemas/ClusterMachine"
                    },
                    "readOnly": true,
                    "type": "array"
                  },
                  "networkType": {
                    "$ref": "#/components/schemas/NetworkType"
                  },
                  "sshKeySource": {
                    "$ref": "#/components/schemas/SshKeySource"
                  },
                  "startScript": {
                    "type": "string"
                  },
                  "state": {
                    "$ref": "#/components/schemas/Cluster.State"
                  },
                  "totalCpuCores": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "totalDiskSizeGib": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "totalGpus": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "totalMachinePriceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  },
                  "totalMemoryGib": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "totalPriceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  }
                },
                "required": [
                  "id",
                  "dataCenterId",
                  "machineTypeId",
                  "machineCount"
                ],
                "title": "Create cluster params",
                "type": "object"
              }
            }
          },
          "description": "Create cluster params",
          "required": true,
          "x-originalParamName": "cluster"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cluster"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create a cluster",
        "tags": [
          "Clusters"
        ]
      }
    },
    "/v1/projects/{projectId}/clusters/{id}": {
      "delete": {
        "description": "Deletes a cluster. All data on machines within the cluster will be lost.",
        "operationId": "DeleteCluster",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete a cluster",
        "tags": [
          "Clusters"
        ]
      },
      "get": {
        "description": "Gets the details of a cluster.",
        "operationId": "GetCluster",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cluster"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get a cluster",
        "tags": [
          "Clusters"
        ]
      },
      "patch": {
        "description": "Updates a cluster.",
        "operationId": "UpdateCluster",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "architecture": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "commitmentEndTime": {
                    "format": "date-time",
                    "readOnly": true,
                    "type": "string"
                  },
                  "commitmentTerm": {
                    "$ref": "#/components/schemas/CommitmentTerm"
                  },
                  "cpuModel": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "cpuSpeedMhz": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "createBy": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "createTime": {
                    "format": "date-time",
                    "readOnly": true,
                    "type": "string"
                  },
                  "customSshKeys": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "dataCenterId": {
                    "type": "string"
                  },
                  "gpuModelId": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "ipoibConfig": {
                    "$ref": "#/components/schemas/ClusterIPOIBConfig"
                  },
                  "machineCount": {
                    "format": "int32",
                    "type": "integer"
                  },
                  "machinePriceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  },
                  "machineTypeId": {
                    "type": "string"
                  },
                  "machines": {
                    "items": {
                      "$ref": "#/components/schemas/ClusterMachine"
                    },
                    "readOnly": true,
                    "type": "array"
                  },
                  "networkType": {
                    "$ref": "#/components/schemas/NetworkType"
                  },
                  "sshKeySource": {
                    "$ref": "#/components/schemas/SshKeySource"
                  },
                  "startScript": {
                    "type": "string"
                  },
                  "state": {
                    "$ref": "#/components/schemas/Cluster.State"
                  },
                  "totalCpuCores": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "totalDiskSizeGib": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "totalGpus": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "totalMachinePriceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  },
                  "totalMemoryGib": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "totalPriceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  }
                },
                "required": [
                  "dataCenterId",
                  "machineTypeId",
                  "machineCount"
                ],
                "title": "Update cluster params",
                "type": "object"
              }
            }
          },
          "description": "Update cluster params",
          "required": true,
          "x-originalParamName": "cluster"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cluster"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Update a cluster",
        "tags": [
          "Clusters"
        ]
      }
    },
    "/v1/projects/{projectId}/disks": {
      "get": {
        "description": "Lists virtual machine disks in a project.",
        "operationId": "ListDisks",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "dataCenterId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDisksResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List disks",
        "tags": [
          "Disks"
        ]
      },
      "post": {
        "description": "Creates a new virtual machine disk.",
        "operationId": "CreateStorageDisk",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "createTime": {
                    "format": "date-time",
                    "readOnly": true,
                    "type": "string"
                  },
                  "dataCenterId": {
                    "type": "string"
                  },
                  "diskState": {
                    "$ref": "#/components/schemas/DiskState"
                  },
                  "diskType": {
                    "$ref": "#/components/schemas/DiskType"
                  },
                  "id": {
                    "type": "string"
                  },
                  "privateImageId": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "publicImageId": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "sizeGib": {
                    "format": "int32",
                    "type": "integer"
                  },
                  "vmId": {
                    "readOnly": true,
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "dataCenterId",
                  "sizeGib"
                ],
                "title": "Create disk params",
                "type": "object"
              }
            }
          },
          "description": "Create disk params",
          "required": true,
          "x-originalParamName": "disk"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create a disk",
        "tags": [
          "Disks"
        ]
      }
    },
    "/v1/projects/{projectId}/disks/{id}": {
      "delete": {
        "description": "Deletes a virtual machine disk. The disk must be detached from any virtual machines before it can be deleted.",
        "operationId": "DeleteStorageDisk",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete a disk",
        "tags": [
          "Disks"
        ]
      },
      "get": {
        "description": "Retrieves the details of a virtual machine disk.",
        "operationId": "GetDisk",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDiskResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get a disk",
        "tags": [
          "Disks"
        ]
      }
    },
    "/v1/projects/{projectId}/vms/{id}/disks": {
      "patch": {
        "description": "Resizes a disk attached to a virtual machine. The new size must be larger than the current size.",
        "operationId": "ResizeVMDisk",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "diskId",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sizeGib",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Resize a virtual machine disk",
        "tags": [
          "Disks"
        ]
      }
    },
    "/v1/projects/{projectId}/images": {
      "get": {
        "description": "Lists private virtual machine images in a project.",
        "operationId": "ListPrivateVMImages",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPrivateVMImagesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List private virtual machine images",
        "tags": [
          "Images"
        ]
      },
      "post": {
        "description": "Creates a new private virtual machine image from an existing virtual machine's boot disk.",
        "operationId": "CreatePrivateVMImage",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "vmId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "description",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePrivateVMImageResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create a private virtual machine image",
        "tags": [
          "Images"
        ]
      }
    },
    "/v1/projects/{projectId}/images/{id}": {
      "delete": {
        "description": "Deletes a private virtual machine image.",
        "operationId": "DeletePrivateVMImage",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete a private virtual machine image",
        "tags": [
          "Images"
        ]
      },
      "get": {
        "description": "Retrieves the details of a private virtual machine image.",
        "operationId": "GetPrivateVMImage",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPrivateVMImageResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get a private virtual machine image",
        "tags": [
          "Images"
        ]
      },
      "post": {
        "description": "Updates the description of a private virtual machine image.",
        "operationId": "UpdatePrivateVMImage",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "description",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Update a private virtual machine image",
        "tags": [
          "Images"
        ]
      }
    },
    "/v1/vms/public-images": {
      "get": {
        "description": "Lists all public images available for virtual machines.",
        "operationId": "ListPublicVMImages",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPublicVMImagesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List public virtual machine images",
        "tags": [
          "Images"
        ]
      }
    },
    "/v1/machines-types": {
      "get": {
        "description": "Lists the types of bare-metal machines that can be provisioned.",
        "operationId": "ListMachineTypes",
        "parameters": [
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Return custom prices for a specific project.",
            "in": "query",
            "name": "projectId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMachineTypesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List machine types",
        "tags": [
          "Machines"
        ]
      }
    },
    "/v1/machines/operating-systems": {
      "get": {
        "description": "Lists operating systems that can be deployed to bare-metal machines.",
        "operationId": "ListMachineOperatingSystems",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMachineOperatingSystemsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List machine operating systems",
        "tags": [
          "Machines"
        ]
      }
    },
    "/v1/projects/{projectId}/machines": {
      "get": {
        "description": "Lists bare-metal machines within a project.",
        "operationId": "ListMachines",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMachinesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List machines",
        "tags": [
          "Machines"
        ]
      },
      "post": {
        "description": "Creates a new bare-metal machine.",
        "operationId": "CreateMachine",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "architecture": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "commitmentTerm": {
                    "$ref": "#/components/schemas/CommitmentTerm"
                  },
                  "cpuCores": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "cpuModel": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "cpuSpeedMhz": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "createBy": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "createTime": {
                    "format": "date-time",
                    "readOnly": true,
                    "type": "string"
                  },
                  "customSshKeys": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "dataCenterId": {
                    "type": "string"
                  },
                  "diskSizeGib": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "disks": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "externalIpAddresses": {
                    "items": {
                      "type": "string"
                    },
                    "readOnly": true,
                    "type": "array"
                  },
                  "gpuModelId": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "gpus": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "hostname": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "machineTypeId": {
                    "type": "string"
                  },
                  "memoryGib": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "os": {
                    "type": "string"
                  },
                  "powerState": {
                    "$ref": "#/components/schemas/MachinePowerState"
                  },
                  "priceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  },
                  "sshKeySource": {
                    "$ref": "#/components/schemas/SshKeySource"
                  },
                  "startScript": {
                    "type": "string"
                  },
                  "state": {
                    "$ref": "#/components/schemas/Machine.State"
                  },
                  "userData": {
                    "description": "DEPRECATED: use `startScript` to run a script on boot, and `sshKeySource` or `customSshKeys` to set authorized ssh keys",
                    "title": "userData",
                    "type": "string",
                    "deprecated": true
                  }
                },
                "required": [
                  "dataCenterId",
                  "id",
                  "machineTypeId",
                  "os"
                ],
                "title": "Create machine params",
                "type": "object"
              }
            }
          },
          "description": "Create machine params",
          "required": true,
          "x-originalParamName": "machine"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Machine"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create a machine",
        "tags": [
          "Machines"
        ]
      }
    },
    "/v1/projects/{projectId}/machines/{id}": {
      "delete": {
        "description": "Deletes a bare-metal machine. Machines that are still within a commitment term cannot be deleted.",
        "operationId": "DeleteMachine",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete a machine",
        "tags": [
          "Machines"
        ]
      },
      "get": {
        "description": "Gets the details of a bare-metal machine.",
        "operationId": "GetMachine",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Machine"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get a machine",
        "tags": [
          "Machines"
        ]
      },
      "patch": {
        "description": "Updates a bare-metal machine.",
        "operationId": "UpdateMachine",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "architecture": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "commitmentTerm": {
                    "$ref": "#/components/schemas/CommitmentTerm"
                  },
                  "cpuCores": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "cpuModel": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "cpuSpeedMhz": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "createBy": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "createTime": {
                    "format": "date-time",
                    "readOnly": true,
                    "type": "string"
                  },
                  "customSshKeys": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "dataCenterId": {
                    "type": "string"
                  },
                  "diskSizeGib": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "disks": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "externalIpAddresses": {
                    "items": {
                      "type": "string"
                    },
                    "readOnly": true,
                    "type": "array"
                  },
                  "gpuModelId": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "gpus": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "hostname": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "machineTypeId": {
                    "type": "string"
                  },
                  "memoryGib": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "os": {
                    "type": "string"
                  },
                  "powerState": {
                    "$ref": "#/components/schemas/MachinePowerState"
                  },
                  "priceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  },
                  "sshKeySource": {
                    "$ref": "#/components/schemas/SshKeySource"
                  },
                  "startScript": {
                    "type": "string"
                  },
                  "state": {
                    "$ref": "#/components/schemas/Machine.State"
                  },
                  "userData": {
                    "description": "DEPRECATED: use `startScript` to run a script on boot, and `sshKeySource` or `customSshKeys` to set authorized ssh keys",
                    "title": "userData",
                    "type": "string",
                    "deprecated": true
                  }
                },
                "required": [
                  "dataCenterId",
                  "machineTypeId",
                  "os"
                ],
                "title": "Update machine params",
                "type": "object"
              }
            }
          },
          "description": "Update machine params",
          "required": true,
          "x-originalParamName": "machine"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Machine"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Update a machine",
        "tags": [
          "Machines"
        ]
      }
    },
    "/v1/projects/{projectId}/machines/{id}/deploy": {
      "post": {
        "description": "Deploys an operating system onto a bare-metal machine. All data on the machine will be lost.",
        "operationId": "DeployMachineOS",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeployMachineOSBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Deploy an operating system onto a machine",
        "tags": [
          "Machines"
        ]
      }
    },
    "/v1/projects/{projectId}/networks": {
      "get": {
        "description": "Lists all virtual networks in a project.",
        "operationId": "ListNetworks",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListNetworksResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List networks",
        "tags": [
          "Networks"
        ]
      },
      "post": {
        "description": "Creates a new virtual network.",
        "operationId": "CreateNetwork",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "createTime": {
                    "format": "date-time",
                    "readOnly": true,
                    "type": "string"
                  },
                  "dataCenterId": {
                    "type": "string"
                  },
                  "externalIpAddress": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "gateway": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "internalIpAddress": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "ipRange": {
                    "type": "string"
                  },
                  "priceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  },
                  "state": {
                    "$ref": "#/components/schemas/Network.State"
                  },
                  "vmState": {
                    "$ref": "#/components/schemas/VmState"
                  }
                },
                "required": [
                  "id",
                  "dataCenterId",
                  "ipRange"
                ],
                "title": "Create network params",
                "type": "object"
              }
            }
          },
          "description": "Create network params",
          "required": true,
          "x-originalParamName": "network"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Network"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create a network",
        "tags": [
          "Networks"
        ]
      }
    },
    "/v1/projects/{projectId}/networks/{id}": {
      "delete": {
        "description": "Deletes a virtual network. A network cannot be deleted if there are any virtual machines attached to it.",
        "operationId": "DeleteNetwork",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete a network",
        "tags": [
          "Networks"
        ]
      },
      "get": {
        "description": "Retrieves the details of a virtual network.",
        "operationId": "GetNetwork",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Network"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get a network",
        "tags": [
          "Networks"
        ]
      }
    },
    "/v1/projects/{projectId}/networks/{id}/start": {
      "post": {
        "description": "Starts a virtual network.",
        "operationId": "StartNetwork",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Start a network",
        "tags": [
          "Networks"
        ]
      }
    },
    "/v1/projects/{projectId}/networks/{id}/stop": {
      "post": {
        "description": "Stops a virtual network. When a virtual network is stopped, no traffic will be routed between the virtual network and the internet.",
        "operationId": "StopNetwork",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Stop a network",
        "tags": [
          "Networks"
        ]
      }
    },
    "/v1/projects/{projectId}/security-groups": {
      "get": {
        "description": "Lists all security groups in a project.",
        "operationId": "ListSecurityGroups",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "dataCenterId",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSecurityGroupsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List security groups",
        "tags": [
          "Networks"
        ]
      },
      "post": {
        "description": "Creates a new security group.",
        "operationId": "CreateSecurityGroup",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "dataCenterId": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "rules": {
                    "items": {
                      "$ref": "#/components/schemas/Rule"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "dataCenterId",
                  "id"
                ],
                "title": "Create security group params",
                "type": "object"
              }
            }
          },
          "description": "Create security group params",
          "required": true,
          "x-originalParamName": "securityGroup"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecurityGroup"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create a security group",
        "tags": [
          "Networks"
        ]
      }
    },
    "/v1/projects/{projectId}/security-groups/{id}": {
      "delete": {
        "description": "Deletes a security group. The security group will be removed from any virtual machines that are using it.",
        "operationId": "DeleteSecurityGroup",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete a security group",
        "tags": [
          "Networks"
        ]
      },
      "get": {
        "description": "Retrieves the details of a security group.",
        "operationId": "GetSecurityGroup",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecurityGroup"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get a security group",
        "tags": [
          "Networks"
        ]
      },
      "patch": {
        "description": "Updates an existing security group.",
        "operationId": "UpdateSecurityGroup",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "dataCenterId": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "rules": {
                    "items": {
                      "$ref": "#/components/schemas/Rule"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "dataCenterId"
                ],
                "title": "Update security group params",
                "type": "object"
              }
            }
          },
          "description": "Update security group params",
          "required": true,
          "x-originalParamName": "securityGroup"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecurityGroup"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Update a security group",
        "tags": [
          "Networks"
        ]
      }
    },
    "/v1/projects/{projectId}/object-storage/buckets": {
      "get": {
        "description": "Lists object storage buckets within a project.",
        "operationId": "ListObjectStorageBuckets",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListObjectStorageBucketsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List buckets",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/projects/{projectId}/object-storage/buckets/{dataCenterId}/{id}": {
      "get": {
        "description": "Retrieves the details of an object storage bucket.",
        "operationId": "GetObjectStorageBucket",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "dataCenterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObjectStorageBucket"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get a bucket",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/projects/{projectId}/object-storage/session-key/{dataCenterId}": {
      "get": {
        "description": "Retrieves temporary session credentials for object storage access.",
        "operationId": "GetObjectStorageSessionKey",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "dataCenterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetObjectStorageSessionKeyResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get an object storage session key",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/projects/{projectId}/object-storage/users": {
      "get": {
        "description": "Lists object storage users within a project.",
        "operationId": "ListObjectStorageUsers",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListObjectStorageUsersResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List object storage users",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/projects/{projectId}/object-storage/users/{dataCenterId}": {
      "post": {
        "description": "Creates a new object storage user.",
        "operationId": "CreateObjectStorageUser",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "dataCenterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "createBy": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "createTime": {
                    "format": "date-time",
                    "readOnly": true,
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "keys": {
                    "items": {
                      "$ref": "#/components/schemas/ObjectStorageKey"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "id"
                ],
                "title": "Create object storage user params",
                "type": "object"
              }
            }
          },
          "description": "Create object storage user params",
          "required": true,
          "x-originalParamName": "objectStorageUser"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObjectStorageUser"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create an object storage user",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/projects/{projectId}/object-storage/users/{dataCenterId}/{id}": {
      "delete": {
        "description": "Deletes an object storage user.",
        "operationId": "DeleteObjectStorageUser",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "dataCenterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete an object storage user",
        "tags": [
          "Object storage"
        ]
      },
      "get": {
        "description": "Retrieves the details of an object storage user.",
        "operationId": "GetObjectStorageUser",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "dataCenterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObjectStorageUser"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get an object storage user",
        "tags": [
          "Object storage"
        ]
      },
      "post": {
        "description": "Generates a new key for an object storage user.",
        "operationId": "GenerateObjectStorageKey",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "dataCenterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObjectStorageKey"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Generate an object storage key",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/projects/{projectId}/object-storage/users/{dataCenterId}/{id}/keys/{accessKey}": {
      "delete": {
        "description": "Deletes an object storage key.",
        "operationId": "DeleteObjectStorageKey",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "dataCenterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "accessKey",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete an object storage key",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/project/{projectId}/ssh-keys": {
      "get": {
        "description": "Lists the SSH keys associated with members of a project.",
        "operationId": "ListProjectSshKeys",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListProjectSshKeysResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List project SSH keys",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/projects": {
      "get": {
        "description": "Lists projects that can be accessed by the current user.",
        "operationId": "ListProjects",
        "parameters": [
          {
            "in": "query",
            "name": "pageToken",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListProjectsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List projects",
        "tags": [
          "Projects"
        ]
      },
      "post": {
        "description": "Creates a new project.",
        "operationId": "CreateProject",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Project"
              }
            }
          },
          "description": "Create project params",
          "required": true,
          "x-originalParamName": "project"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create a project",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/projects/{id}": {
      "delete": {
        "description": "Deletes a project. Only empty projects can be deleted.",
        "operationId": "DeleteProject",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete a project",
        "tags": [
          "Projects"
        ]
      },
      "get": {
        "description": "Retrieves the details of a project.",
        "operationId": "GetProject",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get a project",
        "tags": [
          "Projects"
        ]
      },
      "patch": {
        "description": "Updates the details of a project.",
        "operationId": "UpdateProject",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "billingAccountId": {
                    "type": "string"
                  },
                  "createBy": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "resourceCount": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  }
                },
                "required": [
                  "billingAccountId"
                ],
                "title": "Update project params",
                "type": "object"
              }
            }
          },
          "description": "Update project params",
          "required": true,
          "x-originalParamName": "project"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Update a project",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/projects/{id}:add-permission": {
      "post": {
        "description": "Grants a user permission to access a project.",
        "operationId": "AddProjectPermission",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserPermission"
              }
            }
          },
          "required": true,
          "x-originalParamName": "userPermission"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Add a permission to a project",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/projects/{id}:list-permissions": {
      "get": {
        "description": "Lists all user permissions for a project.",
        "operationId": "GetProjectPermissions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetProjectPermissionsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get project permissions",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/projects/{id}:remove-permission": {
      "post": {
        "description": "Revokes a user's permission to access a project.",
        "operationId": "RemoveProjectPermission",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserPermission"
              }
            }
          },
          "required": true,
          "x-originalParamName": "userPermission"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Remove a permission from a project",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/resources/search": {
      "get": {
        "description": "Search for resources that can be accessed by the current user. The query\nstring is used to match against resource names and other relevant fields.",
        "operationId": "SearchResources",
        "parameters": [
          {
            "in": "query",
            "name": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResourcesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Search accessible resources",
        "tags": [
          "Resources"
        ]
      }
    },
    "/v1/ssh-keys": {
      "get": {
        "description": "Lists the SSH keys of the current user.",
        "operationId": "ListSshKeys",
        "parameters": [
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSshKeysResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List SSH keys",
        "tags": [
          "SSH keys"
        ]
      },
      "post": {
        "description": "Creates an SSH key that can be used to access bare-metal and virtual machines.",
        "operationId": "CreateSshKey",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SshKey"
              }
            }
          },
          "description": "Create SSH key params",
          "required": true,
          "x-originalParamName": "sshKey"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SshKey"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create an SSH key",
        "tags": [
          "SSH keys"
        ]
      }
    },
    "/v1/ssh-keys/{id}": {
      "delete": {
        "description": "Deletes an SSH key. This will not remove the SSH key from existing bare-metal and virtual machines.",
        "operationId": "DeleteSshKey",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete an SSH key",
        "tags": [
          "SSH keys"
        ]
      },
      "get": {
        "description": "Retrieves the details of an SSH key.",
        "operationId": "GetSshKey",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SshKey"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get an SSH key",
        "tags": [
          "SSH keys"
        ]
      }
    },
    "/v1/auth": {
      "delete": {
        "description": "Deletes the current user, revoking access to every resource.",
        "operationId": "DeleteUser",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete the current user",
        "tags": [
          "Users"
        ]
      },
      "get": {
        "description": "Returns details of the current user when suitable authentication credentials are sent with the request.",
        "operationId": "Get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Profile"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get the current user",
        "tags": [
          "Users"
        ]
      }
    },
    "/v1/projects/{projectId}/count-vms": {
      "get": {
        "description": "Returns the total number of virtual machines in a project.",
        "operationId": "CountVMs",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountVMsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Count virtual machines in a project",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/disk/{id}/attach": {
      "patch": {
        "description": "Attaches a virtual machine disk to a virtual machine.",
        "operationId": "AttachStorageDisk",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "vmId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Attach a disk to a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/disk/{id}/detach": {
      "put": {
        "description": "Detaches a virtual machine disk from a virtual machine.",
        "operationId": "DetachStorageDisk",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Detach a disk from a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vm": {
      "post": {
        "description": "Creates and starts a new virtual machine.",
        "operationId": "CreateVM",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVMBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateVMResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vm/{id}/authorized-ssh-keys": {
      "post": {
        "description": "Updates the authorized SSH keys of a virtual machine.",
        "operationId": "UpdateVMAuthorizedSSHKeys",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateVMAuthorizedSSHKeysBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Update virtual machine authorized SSH keys",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vm/{id}/commit": {
      "post": {
        "description": "Commits a virtual machine to a longer-term plan in exchange for a lower hourly rate. The virtual machine must not already be in a committed term.",
        "operationId": "CommitVM",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommitVMBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Purchase a commitment for a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vm/{id}/expire-time": {
      "post": {
        "description": "Updates the expiration time of a virtual machine. The virtual machine will be automatically deleted when it reaches its expiration time.",
        "operationId": "UpdateVMExpireTime",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateVMExpireTimeBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateVMExpireTimeResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Update virtual machine expiration time",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vm/{id}/metadata": {
      "post": {
        "description": "Updates the metadata of a virtual machine.",
        "operationId": "UpdateVMMetadata",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateVMMetadataBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateVMMetadataResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Update virtual machine metadata",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vm/{id}/password": {
      "post": {
        "description": "Updates the root or administrator password of a virtual machine.",
        "operationId": "UpdateVMPassword",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateVMPasswordBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Update virtual machine password",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vm/{id}/security-group/attach": {
      "patch": {
        "description": "Attaches a security group to a virtual machine.",
        "operationId": "AttachSecurityGroup",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "securityGroupId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Attach a security group to a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vm/{id}/security-group/detach": {
      "patch": {
        "description": "Detaches a security group from a virtual machine.",
        "operationId": "DetachSecurityGroup",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "securityGroupId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Detach a security group from a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vms": {
      "get": {
        "description": "Lists all virtual machines in a project.",
        "operationId": "ListVMs",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "networkId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListVMsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List virtual machines",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vms/{id}": {
      "get": {
        "description": "Retrieves the details of a virtual machine.",
        "operationId": "GetVM",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetVMResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vms/{id}/connect": {
      "get": {
        "description": "Provides a URL and token to connect to the virtual machine via a web-based VNC console.",
        "operationId": "ConnectVM",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "connectionId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectVMResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Connect to a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vms/{id}/monitor": {
      "get": {
        "description": "Returns live monitoring metrics for a virtual machine.",
        "operationId": "MonitorVM",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorVMResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Monitor a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vms/{id}/reboot": {
      "post": {
        "description": "Performs a soft reboot of a virtual machine. The operating system is instructed to reboot. If the OS does not respond, use StopVM and then StartVM.",
        "operationId": "RebootVM",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Reboot a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vms/{id}/resize": {
      "post": {
        "description": "Resizes a virtual machine. The size of the virtual machine cannot be reduced while it is in a committed term.",
        "operationId": "ResizeVM",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "vcpus",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "memoryGib",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResizeVMResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Resize a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vms/{id}/start": {
      "post": {
        "description": "Starts a stopped virtual machine.",
        "operationId": "StartVM",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Start a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vms/{id}/stop": {
      "post": {
        "description": "Stops a running virtual machine. The virtual machine can be started again later.",
        "operationId": "StopVM",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Stop a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/vms/{id}/terminate": {
      "post": {
        "description": "Permanently deletes a virtual machine. All data on the virtual machine's boot disk will be lost. Any attached storage disks will be detached but not deleted.",
        "operationId": "TerminateVM",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete a virtual machine",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/vms/data-centers": {
      "get": {
        "description": "Lists all data centers available for virtual machines.",
        "operationId": "ListVMDataCenters",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListVMDataCentersResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List virtual machine data centers",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/vms/data-centers/{dataCenterId}/machine_types/{machineTypeId}": {
      "get": {
        "description": "Retrieves the details of a virtual machine type.",
        "operationId": "GetVMMachineType",
        "parameters": [
          {
            "in": "path",
            "name": "dataCenterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "machineTypeId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return custom prices for a specific project.",
            "in": "query",
            "name": "projectId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetVMMachineTypeResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get a virtual machine type",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/vms/gpu-models": {
      "get": {
        "description": "Lists all GPU models available for virtual machines.",
        "operationId": "ListVMGpuModels",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListVMGpuModelsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List virtual machine GPU models",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/vms/machine-types": {
      "get": {
        "description": "Lists all virtual machine types available.",
        "operationId": "ListVMMachineTypes",
        "parameters": [
          {
            "description": "Return custom prices for a specific project.",
            "in": "query",
            "name": "projectId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListVMMachineTypesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List virtual machine types",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/vms/machine-types-2": {
      "get": {
        "deprecated": true,
        "description": "Lists all virtual machine types available.",
        "operationId": "ListVMMachineTypes2",
        "parameters": [
          {
            "description": "Return custom prices for a specific project.",
            "in": "query",
            "name": "projectId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListVMMachineTypesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Lists virtual machine types (deprecated)",
        "tags": [
          "Virtual machines"
        ]
      }
    },
    "/v1/projects/{projectId}/volumes": {
      "get": {
        "description": "Lists NFS volumes in a project.",
        "operationId": "ListVolumes",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListVolumesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List volumes",
        "tags": [
          "Volumes"
        ]
      },
      "post": {
        "description": "Creates a new NFS volume.",
        "operationId": "CreateVolume",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "commitmentEndTime": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "commitmentTerm": {
                    "$ref": "#/components/schemas/CommitmentTerm"
                  },
                  "dataCenterId": {
                    "type": "string"
                  },
                  "gibPriceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  },
                  "id": {
                    "type": "string"
                  },
                  "nfsPath": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "nfsServer": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "sizeGib": {
                    "format": "int32",
                    "type": "integer"
                  },
                  "sizeGibUsed": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "state": {
                    "$ref": "#/components/schemas/Volume.State"
                  },
                  "totalPriceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  }
                },
                "required": [
                  "id",
                  "dataCenterId",
                  "sizeGib"
                ],
                "title": "Create volume params",
                "type": "object"
              }
            }
          },
          "description": "Create volume params",
          "required": true,
          "x-originalParamName": "volume"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Volume"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Create a volume",
        "tags": [
          "Volumes"
        ]
      }
    },
    "/v1/projects/{projectId}/volumes/{id}": {
      "delete": {
        "description": "Deletes an NFS volume.",
        "operationId": "DeleteVolume",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Delete a volume",
        "tags": [
          "Volumes"
        ]
      },
      "get": {
        "description": "Retrieves the details of an NFS volume.",
        "operationId": "GetVolume",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Volume"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Get a volume",
        "tags": [
          "Volumes"
        ]
      },
      "patch": {
        "description": "Updates an NFS volume.",
        "operationId": "UpdateVolume",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "commitmentEndTime": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "commitmentTerm": {
                    "$ref": "#/components/schemas/CommitmentTerm"
                  },
                  "dataCenterId": {
                    "type": "string"
                  },
                  "gibPriceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  },
                  "nfsPath": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "nfsServer": {
                    "readOnly": true,
                    "type": "string"
                  },
                  "sizeGib": {
                    "format": "int32",
                    "type": "integer"
                  },
                  "sizeGibUsed": {
                    "format": "int32",
                    "readOnly": true,
                    "type": "integer"
                  },
                  "state": {
                    "$ref": "#/components/schemas/Volume.State"
                  },
                  "totalPriceHr": {
                    "$ref": "#/components/schemas/Decimal"
                  }
                },
                "required": [
                  "dataCenterId",
                  "sizeGib"
                ],
                "title": "Update volume params",
                "type": "object"
              }
            }
          },
          "description": "Update volume params",
          "required": true,
          "x-originalParamName": "volume"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Volume"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Update a volume",
        "tags": [
          "Volumes"
        ]
      }
    },
    "/v1/volumes/prices": {
      "get": {
        "description": "Lists all available NFS volume prices.",
        "operationId": "ListVolumePrices",
        "parameters": [
          {
            "in": "query",
            "name": "pageNumber",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListVolumePricesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "List volume prices",
        "tags": [
          "Volumes"
        ]
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "servers": [
    {
      "url": "https://rest.compute.cudo.org/"
    }
  ],
  "tags": [
    {
      "description": "API keys allow you to authenticate requests with the CUDO Compute API.",
      "name": "API keys"
    },
    {
      "description": "Billing accounts hold all billing related information such as credit balance, payment methods & transaction history. You can use the same billing account for multiple projects.\n\nRelated guide: [Billing](https://www.cudocompute.com/docs/billing)\n",
      "name": "Billing"
    },
    {
      "description": "Clusters are high-performance computing environments that can be used to run large-scale parallel and distributed applications.\n\nRelated guide: [Clusters](https://www.cudocompute.com/docs/clusters)\n",
      "name": "Clusters"
    },
    {
      "description": "Storage disks are virtual disks that operate just like physical disks. You can attach & detach created storage disks to and from virtual machines in the same data center.\n\nRelated guide: [Disks](https://www.cudocompute.com/docs/disks)\n",
      "name": "Disks"
    },
    {
      "description": "Images are boot disk templates used to create virtual machines.\n\nRelated guide: [Images](https://www.cudocompute.com/docs/images)\n",
      "name": "Images"
    },
    {
      "description": "Bare-metal machines are dedicated physical servers for high-performance computing, offering full control and isolation from other users.\n\nRelated guide: [Bare metal](https://www.cudocompute.com/docs/bare-metal)\n",
      "name": "Machines"
    },
    {
      "description": "Private networks allow you to securely connect your virtual machines together.\n\nRelated guide: [Networks](https://www.cudocompute.com/docs/networks)\n",
      "name": "Networks"
    },
    {
      "description": "Store large amounts of unstructured data, including audio, video and user uploaded files.\n\nRelated guide: [Object storage](https://www.cudocompute.com/docs/object-storage)\n",
      "name": "Object storage"
    },
    {
      "description": "Projects are containers for cloud resources, such as virtual machines & clusters.\n",
      "name": "Projects"
    },
    {
      "description": "Operations for searching available compute resources.",
      "name": "Resources"
    },
    {
      "description": "SSH keys are access credentials that are automatically added to bare-metal and virtual machines you create.\n",
      "name": "SSH keys"
    },
    {
      "description": "Operations related to user accounts and identity verification.",
      "name": "Users"
    },
    {
      "description": "A virtual machine (VM) is a software emulation of a physical computer.\n\nRelated guide: [Virtual machines](https://www.cudocompute.com/docs/virtual-machines)\n",
      "name": "Virtual machines"
    },
    {
      "description": "Volumes are high-performance Network File Systems that allow cluster machines to share training data and model checkpoints.\n\nRelated guide: [Volumes](https://www.cudocompute.com/docs/volumes)\n",
      "name": "Volumes"
    }
  ]
}
