openapi: 3.0.3 info: title: Region Service API description: >- Cloud region discovery and routing service. This is service not intended for direct access by end users. Region related functionality is typically exposed by higher level services e.g. Compute and Kubernetes, that provide subsets of resources that are compatible with that service. version: 1.13.0 paths: /api/v1/organizations/{organizationID}/regions: description: >- Regions define a cloud. This may be geographical or any logical partition. Either way, this is the primitive that is used to associate metadata such as geographical locale, an organization's reserved blob of compute etc. Each region has its own provider associated with it, for example OpenStack, and its own set of credentials so things can be scoped to a specific slice of a shared cloud through whatever mechanism is available on that cloud provider. parameters: - $ref: "#/components/parameters/organizationIDParameter" get: summary: List regions tags: - Regions description: List all regions. security: - oauth2Authentication: [] responses: "200": $ref: "#/components/responses/regionsResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v1/organizations/{organizationID}/regions/{regionID}/flavors: description: Compute flavor services. parameters: - $ref: "#/components/parameters/organizationIDParameter" - $ref: "#/components/parameters/regionIDParameter" get: summary: List flavors tags: - Flavors description: Lists all compute flavors. security: - oauth2Authentication: [] responses: "200": $ref: "#/components/responses/flavorsResponse" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v1/organizations/{organizationID}/regions/{regionID}/images: description: Compute image services. parameters: - $ref: "#/components/parameters/organizationIDParameter" - $ref: "#/components/parameters/regionIDParameter" post: summary: Create a compute image from a disk image URL. tags: - Images description: >- Create a compute image from a public URL. Only raw images are supported, other container formats such as qcow2 must be first converted to a raw image. security: - oauth2Authentication: [] requestBody: $ref: "#/components/requestBodies/imageCreateRequest" responses: "200": $ref: "#/components/responses/imageResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "422": $ref: "#/components/responses/unprocessableContentResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v1/organizations/{organizationID}/regions/{regionID}/images/{imageID}: description: Compute image services. parameters: - $ref: "#/components/parameters/organizationIDParameter" - $ref: "#/components/parameters/regionIDParameter" - $ref: "#/components/parameters/imageIDParameter" delete: summary: Delete a compute image. tags: - Images security: - oauth2Authentication: [] responses: "202": $ref: "#/components/responses/acceptedResponse" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/version: description: Service build version information. get: summary: Get the deployed service version description: |- Returns the build version stamped into the running binary at release time, allowing clients and CI gates to verify exactly which release is deployed. tags: - Version security: - oauth2Authentication: [] responses: "200": $ref: "#/components/responses/serviceVersionResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/networks: description: >- Manages region scoped layer 3 networks. Networks by default come with a default route to the internet that performs masquerading. This version of the API requires at least a /24 CIDR range. A portion of the network may be reserved for infrastructure use such as file storage and internal platform requirements as directed by the infrastructure provider. get: description: List networks. summary: List networks tags: - Networks security: - oauth2Authentication: [] parameters: - $ref: "#/components/parameters/tagSelectorParameter" - $ref: "#/components/parameters/organizationIDQueryParameter" - $ref: "#/components/parameters/projectIDQueryParameter" - $ref: "#/components/parameters/regionIDQueryParameter" responses: "200": $ref: "#/components/responses/networksV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" post: description: Create a new network. summary: Create network tags: - Networks security: - oauth2Authentication: [] requestBody: $ref: "#/components/requestBodies/networkV2CreateRequest" responses: "201": $ref: "#/components/responses/networkV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "422": $ref: "#/components/responses/unprocessableContentResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/networks/{networkID}: description: >- Manages region scoped layer 3 networks. Networks by default come with a default route to the internet that performs masquerading. This version of the API requires at least a /24 CIDR range. A portion of the network may be reserved for infrastructure use such as file storage and internal platform requirements as directed by the infrastructure provider. parameters: - $ref: "#/components/parameters/networkIDParameter" get: description: Get a network. summary: Get network tags: - Networks security: - oauth2Authentication: [] responses: "200": $ref: "#/components/responses/networkV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" put: description: Update a network's mutable fields. summary: Update network tags: - Networks security: - oauth2Authentication: [] requestBody: $ref: "#/components/requestBodies/networkV2UpdateRequest" responses: "202": $ref: "#/components/responses/networkV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "409": $ref: "#/components/responses/conflictResponse" "422": $ref: "#/components/responses/unprocessableContentResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" delete: description: Delete a network. summary: Delete network tags: - Networks security: - oauth2Authentication: [] responses: "202": $ref: "#/components/responses/acceptedResponse" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/securitygroups: description: >- Manages network scoped security groups. By default, security groups allow all egress traffic from a server, ingress traffic must be explcitly allowed. get: description: List security groups. summary: List security groups tags: - Security groups security: - oauth2Authentication: [] parameters: - $ref: "#/components/parameters/tagSelectorParameter" - $ref: "#/components/parameters/organizationIDQueryParameter" - $ref: "#/components/parameters/projectIDQueryParameter" - $ref: "#/components/parameters/regionIDQueryParameter" - $ref: "#/components/parameters/networkIDQueryParameter" responses: "200": $ref: "#/components/responses/securityGroupsV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" post: description: Create a new security group. summary: Create security group tags: - Security groups security: - oauth2Authentication: [] requestBody: $ref: "#/components/requestBodies/securityGroupV2CreateRequest" responses: "201": $ref: "#/components/responses/securityGroupV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/securitygroups/{securityGroupID}: description: >- Manages network scoped security groups. By default, security groups allow all egress traffic from a server, ingress traffic must be explcitly allowed. parameters: - $ref: "#/components/parameters/securityGroupIDParameter" get: description: Get a security group. summary: Get security group tags: - Security groups security: - oauth2Authentication: [] responses: "200": $ref: "#/components/responses/securityGroupV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" put: description: Update a security group. summary: Update security group tags: - Security groups security: - oauth2Authentication: [] requestBody: $ref: "#/components/requestBodies/securityGroupV2UpdateRequest" responses: "202": $ref: "#/components/responses/securityGroupV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "409": $ref: "#/components/responses/conflictResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" delete: description: Delete a security groups. summary: Delete security group tags: - Security groups security: - oauth2Authentication: [] responses: "202": $ref: "#/components/responses/acceptedResponse" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/loadbalancers: description: Manages network scoped layer 4 load balancers. get: description: List load balancers. summary: List load balancers tags: - Load balancers security: - oauth2Authentication: [] parameters: - $ref: "#/components/parameters/tagSelectorParameter" - $ref: "#/components/parameters/organizationIDQueryParameter" - $ref: "#/components/parameters/projectIDQueryParameter" - $ref: "#/components/parameters/regionIDQueryParameter" - $ref: "#/components/parameters/networkIDQueryParameter" responses: "200": $ref: "#/components/responses/loadBalancersV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" post: description: Create a new load balancer. summary: Create load balancer tags: - Load balancers security: - oauth2Authentication: [] requestBody: $ref: "#/components/requestBodies/loadBalancerV2CreateRequest" responses: "201": $ref: "#/components/responses/loadBalancerV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "422": $ref: "#/components/responses/unprocessableContentResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/loadbalancers/{loadBalancerID}: description: Manages network scoped layer 4 load balancers. parameters: - $ref: "#/components/parameters/loadBalancerIDParameter" get: description: Get a load balancer. summary: Get load balancer tags: - Load balancers security: - oauth2Authentication: [] responses: "200": $ref: "#/components/responses/loadBalancerV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" put: description: Update a load balancer. summary: Update load balancer tags: - Load balancers security: - oauth2Authentication: [] requestBody: $ref: "#/components/requestBodies/loadBalancerV2UpdateRequest" responses: "202": $ref: "#/components/responses/loadBalancerV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "409": $ref: "#/components/responses/conflictResponse" "422": $ref: "#/components/responses/unprocessableContentResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" delete: description: Delete a load balancer. summary: Delete load balancer tags: - Load balancers security: - oauth2Authentication: [] responses: "202": $ref: "#/components/responses/acceptedResponse" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/sshcertificateauthorities: description: Manages project scoped OpenSSH user certificate authorities. get: description: List SSH certificate authorities. summary: List SSH certificate authorities tags: - SSH certificate authorities security: - oauth2Authentication: [] parameters: - $ref: "#/components/parameters/tagSelectorParameter" - $ref: "#/components/parameters/organizationIDQueryParameter" - $ref: "#/components/parameters/projectIDQueryParameter" responses: "200": $ref: "#/components/responses/sshCertificateAuthoritiesV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" post: description: Create a new SSH certificate authority. summary: Create SSH certificate authority tags: - SSH certificate authorities security: - oauth2Authentication: [] requestBody: $ref: "#/components/requestBodies/sshCertificateAuthorityV2CreateRequest" responses: "201": $ref: "#/components/responses/sshCertificateAuthorityV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "422": $ref: "#/components/responses/unprocessableContentResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/sshcertificateauthorities/{sshCertificateAuthorityID}: description: Manages project scoped OpenSSH user certificate authorities. parameters: - $ref: "#/components/parameters/sshCertificateAuthorityIDParameter" get: description: Get an SSH certificate authority. summary: Get SSH certificate authority tags: - SSH certificate authorities security: - oauth2Authentication: [] responses: "200": $ref: "#/components/responses/sshCertificateAuthorityV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" delete: description: Delete an SSH certificate authority. summary: Delete SSH certificate authority tags: - SSH certificate authorities security: - oauth2Authentication: [] responses: "202": $ref: "#/components/responses/acceptedResponse" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/regions/{regionID}/images: description: Manage compute disk images get: summary: List compute disk images tags: - Images security: - oauth2Authentication: [] parameters: - $ref: "#/components/parameters/regionIDParameter" - $ref: "#/components/parameters/organizationIDQueryParameter" - $ref: "#/components/parameters/imageScopeQueryParameter" - $ref: "#/components/parameters/imageStatusQueryParameter" responses: "200": $ref: "#/components/responses/imagesResponse" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/filestorage: description: "Manages project scoped storage. Returns a list of all storage, regardless of type. " get: description: List storage for project. summary: List file storage tags: - File storage security: - oauth2Authentication: [] parameters: - $ref: "#/components/parameters/tagSelectorParameter" - $ref: "#/components/parameters/organizationIDQueryParameter" - $ref: "#/components/parameters/projectIDQueryParameter" - $ref: "#/components/parameters/regionIDQueryParameter" responses: "200": $ref: "#/components/responses/storageListV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" post: description: >- Create a new storage. Snapshot Policies are managed as inline parent File Storage desired state. Omitted or empty spec.snapshotPolicies stores no user-managed policies, and a non-empty list persists exactly the caller-supplied policies. Default Snapshot Protection is controlled separately by spec.defaultSnapshotProtectionEnabled. summary: Create file storage tags: - File storage security: - oauth2Authentication: [] requestBody: $ref: "#/components/requestBodies/storageV2CreateRequest" responses: "201": $ref: "#/components/responses/storageV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "422": $ref: "#/components/responses/unprocessableContentResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/filestorage/{filestorageID}: description: "Manages project scoped storage. " parameters: - $ref: "#/components/parameters/filestorageIDParameter" get: description: Get all storage information this ID. summary: Get file storage tags: - File storage security: - oauth2Authentication: [] responses: "200": $ref: "#/components/responses/storageV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" put: description: >- Update this storage. Snapshot Policies are managed as inline parent File Storage desired state. Omitted spec.snapshotPolicies preserves existing user-managed policies, an empty list clears all user-managed policies, and a non-empty list replaces the full user-managed policy list. For an existing policy name, protectedPath is immutable; schedule and retention may change. Default Snapshot Protection is controlled separately by spec.defaultSnapshotProtectionEnabled. summary: Update file storage tags: - File storage security: - oauth2Authentication: [] requestBody: $ref: "#/components/requestBodies/storageV2UpdateRequest" responses: "202": $ref: "#/components/responses/storageV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "409": $ref: "#/components/responses/conflictResponse" "422": $ref: "#/components/responses/unprocessableContentResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" delete: description: Delete a storage. summary: Delete file storage tags: - File storage security: - oauth2Authentication: [] responses: "202": $ref: "#/components/responses/acceptedResponse" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/filestorage/{filestorageID}/snapshots: description: Manual snapshots of a file storage resource. parameters: - $ref: "#/components/parameters/filestorageIDParameter" post: description: Create a Manual Snapshot under a File Storage. Returns the complete pending resource. A deleting parent conflicts. summary: Create a manual file storage snapshot tags: - File storage snapshots security: - oauth2Authentication: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/fileStorageSnapshotV2Create" responses: "202": $ref: "#/components/responses/fileStorageSnapshotV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "409": $ref: "#/components/responses/conflictResponse" "422": $ref: "#/components/responses/unprocessableContentResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" get: description: List Manual Snapshots of a File Storage, ordered by name then ID. Inaccessible and expired snapshots are omitted. summary: List manual file storage snapshots tags: - File storage snapshots security: - oauth2Authentication: [] parameters: - $ref: "#/components/parameters/tagSelectorParameter" responses: "200": $ref: "#/components/responses/fileStorageSnapshotsV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/filestorage/{filestorageID}/snapshots/{filestorageSnapshotID}: description: A manual snapshot of a file storage resource. parameters: - $ref: "#/components/parameters/filestorageIDParameter" - $ref: "#/components/parameters/filestorageSnapshotIDParameter" delete: description: Record deletion intent for a Manual Snapshot without provider calls. summary: Delete a manual file storage snapshot tags: - File storage snapshots security: - oauth2Authentication: [] responses: "202": $ref: "#/components/responses/acceptedResponse" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" get: description: Get a Manual Snapshot. Missing, inaccessible, and expired snapshots return not found. summary: Get a manual file storage snapshot tags: - File storage snapshots security: - oauth2Authentication: [] responses: "200": $ref: "#/components/responses/fileStorageSnapshotV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/filestorageclasses: description: Lists all available storage classes, detailing supported protocols, capacity limits, and service characteristics. Enables users to discover storage options suitable for their workloads. get: description: List storage classes. summary: List file storage classes tags: - File storage classes security: - oauth2Authentication: [] parameters: - $ref: "#/components/parameters/regionIDQueryParameter" responses: "200": $ref: "#/components/responses/storageClassListV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/volumes: description: Manages project-scoped block storage volumes anchored to a Network. get: description: List volumes visible to the caller, optionally narrowed by scope, Region, or Network. summary: List volumes tags: - Volumes security: - oauth2Authentication: [] parameters: - $ref: "#/components/parameters/tagSelectorParameter" - $ref: "#/components/parameters/organizationIDQueryParameter" - $ref: "#/components/parameters/projectIDQueryParameter" - $ref: "#/components/parameters/regionIDQueryParameter" - $ref: "#/components/parameters/networkIDQueryParameter" responses: "200": $ref: "#/components/responses/volumesV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" post: description: |- Create a volume on the Region and project implied by its Network. The VolumeClass and requested capacity are immutable after creation. summary: Create volume tags: - Volumes security: - oauth2Authentication: [] requestBody: $ref: "#/components/requestBodies/volumeV2CreateRequest" responses: "202": $ref: "#/components/responses/volumeV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "422": $ref: "#/components/responses/unprocessableContentResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/volumes/{volumeID}: description: Manages a project-scoped block storage volume. parameters: - $ref: "#/components/parameters/volumeIDParameter" get: description: Get a volume, including its desired capacity and provider-observed state. summary: Get volume tags: - Volumes security: - oauth2Authentication: [] responses: "200": $ref: "#/components/responses/volumeV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" put: description: Update a volume's mutable metadata and tags. summary: Update volume tags: - Volumes security: - oauth2Authentication: [] requestBody: $ref: "#/components/requestBodies/volumeV2UpdateRequest" responses: "200": $ref: "#/components/responses/volumeV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "409": $ref: "#/components/responses/conflictResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" delete: description: Delete a volume. A volume in use must be detached before deletion. summary: Delete volume tags: - Volumes security: - oauth2Authentication: [] responses: "202": $ref: "#/components/responses/acceptedResponse" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "404": $ref: "#/components/responses/notFoundResponse" "409": $ref: "#/components/responses/conflictResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" /api/v2/volumeclasses: description: Lists provider-neutral block-storage classes available from Regions visible to the caller. Results can be narrowed to one or more Regions. get: description: Lists provider-neutral VolumeClasses from Regions visible to the caller. Repeat the regionID query parameter to narrow results to one or more Regions. Missing or inaccessible Regions are omitted, so selectors can produce an empty or partial list. Without a regionID filter, Regions whose provider inventory cannot be fetched are logged and omitted so available Regions can still be returned. Provider failures for explicitly selected Regions fail the request. Media and performance caps are returned only when published by the Region. summary: List volume classes tags: - Volume classes security: - oauth2Authentication: [] parameters: - $ref: "#/components/parameters/regionIDQueryParameter" responses: "200": $ref: "#/components/responses/volumeClassListV2Response" "400": $ref: "#/components/responses/badRequestResponse" "401": $ref: "#/components/responses/unauthorizedResponse" "403": $ref: "#/components/responses/forbiddenResponse" "500": $ref: "#/components/responses/internalServerErrorResponse" components: parameters: organizationIDParameter: name: organizationID in: path description: An organization ID. required: true schema: $ref: "#/components/schemas/organizationId" projectIDParameter: name: projectID in: path description: The project ID. required: true schema: $ref: "#/components/schemas/projectId" regionIDParameter: name: regionID in: path description: The region ID. required: true schema: $ref: "#/components/schemas/regionId" identityIDParameter: name: identityID in: path description: The identity ID. required: true schema: $ref: "#/components/schemas/identityId" imageIDParameter: name: imageID in: path description: The image ID. required: true schema: $ref: "#/components/schemas/imageId" networkIDParameter: name: networkID in: path description: The network ID. required: true schema: $ref: "#/components/schemas/networkId" securityGroupIDParameter: name: securityGroupID in: path description: The security group ID. required: true schema: $ref: "#/components/schemas/securityGroupId" loadBalancerIDParameter: name: loadBalancerID in: path description: The load balancer ID. required: true schema: $ref: "#/components/schemas/loadBalancerId" sshCertificateAuthorityIDParameter: name: sshCertificateAuthorityID in: path description: The SSH certificate authority ID. required: true schema: $ref: "#/components/schemas/sshCertificateAuthorityId" serverIDParameter: name: serverID in: path description: The server ID. required: true schema: $ref: "#/components/schemas/serverId" volumeIDParameter: name: volumeID in: path description: The volume ID. required: true schema: $ref: "#/components/schemas/volumeId" referenceParameter: name: reference in: path description: A resource reference. required: true schema: type: string lengthParameter: name: length in: query description: The requested output length. schema: type: integer organizationIDQueryParameter: name: organizationID in: query description: Allows resources to be filtered by organization. schema: type: array items: type: string filestorageIDParameter: name: filestorageID in: path description: The storage unique identifier. required: true schema: $ref: "#/components/schemas/fileStorageId" filestorageSnapshotIDParameter: name: filestorageSnapshotID in: path description: The Manual Snapshot unique identifier. required: true schema: $ref: "#/components/schemas/fileStorageSnapshotId" projectIDQueryParameter: name: projectID in: query description: Allows resources to be filtered by project. schema: type: array items: type: string regionIDQueryParameter: name: regionID in: query description: Allows resources to be filtered by region. schema: type: array items: type: string networkIDQueryParameter: name: networkID in: query description: Allows resources to be filtered by network. schema: type: array items: type: string imageScopeQueryParameter: name: scope in: query description: Filter for images owned by the organization specified, or available (either globally or to the organization given). schema: type: string enum: - owned - available imageStatusQueryParameter: name: status in: query description: Filter for images by status schema: type: array items: $ref: "#/components/schemas/imageState" tagSelectorParameter: name: tag in: query description: |- A set of tags to match against resources in the form "name=value", thus when encoded you get "?tag=foo%3Dcat&tag=bar%3Ddog". schema: type: array items: type: string schemas: kubernetesNameParameter: description: A Kubernetes name. Must be a valid DNS containing only lower case characters, numbers or hyphens, start and end with a character or number, and be at most 63 characters in length. type: string minLength: 1 maxLength: 63 regionId: description: A region ID. type: string format: uuid identityId: description: A cloud identity ID. type: string format: uuid networkId: description: A network ID. type: string format: uuid securityGroupId: description: A security group ID. type: string format: uuid loadBalancerId: description: A load balancer ID. type: string format: uuid serverId: description: A server ID. type: string format: uuid volumeId: description: A volume ID. type: string format: uuid sshCertificateAuthorityId: description: An SSH certificate authority ID. type: string format: uuid fileStorageId: description: A file storage ID. type: string format: uuid fileStorageSnapshotId: description: A Manual File Storage Snapshot ID. type: string format: uuid imageId: description: An image ID. type: string format: uuid flavorId: description: A flavor ID. type: string format: uuid regionType: description: The region's provider type. type: string enum: - openstack - kubernetes - simulated regionFeatures: description: A set of features the region may provide to clients. type: object required: - physicalNetworks properties: physicalNetworks: description: > If set, this indicates that the region supports physical networks and one should be provisioned for clusters to use. The implication here is the region supports base-metal machines, and these must be provisioned on a physical VLAN etc. type: boolean regionSpec: description: Information about the region. type: object required: - type - features properties: type: $ref: "#/components/schemas/regionType" features: $ref: "#/components/schemas/regionFeatures" regionDetailKubernetes: description: Region specific information when the type is "kubernetes". type: object required: - kubeconfig properties: kubeconfig: description: The region's base64 encoded Kubernetes configuration file. type: string domainName: description: The region's requested domain name for consuming services. type: string regionDetailSpec: description: Information about the region. type: object required: - type - features properties: type: $ref: "#/components/schemas/regionType" kubernetes: $ref: "#/components/schemas/regionDetailKubernetes" features: $ref: "#/components/schemas/regionFeatures" regionRead: description: A region. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceReadMetadata" spec: $ref: "#/components/schemas/regionSpec" regionDetailRead: description: A region. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceReadMetadata" spec: $ref: "#/components/schemas/regionDetailSpec" regions: description: A list of regions. type: array items: $ref: "#/components/schemas/regionRead" imageVirtualization: description: What type of machine the image is for. type: string enum: - virtualized - baremetal - any softwareVersions: description: Image preinstalled version version metadata. type: object additionalProperties: $ref: "#/components/schemas/semver" gpuVendor: description: The GPU vendor. type: string enum: - NVIDIA - AMD gpuModel: description: A GPU model number. type: string gpuModelList: description: A list of GPU model numbers. type: array items: $ref: "#/components/schemas/gpuModel" architecture: type: string description: CPU architecture. enum: - x86_64 - aarch64 imageGpu: description: The GPU driver if installed. type: object required: - vendor - driver properties: vendor: $ref: "#/components/schemas/gpuVendor" driver: description: The GPU driver version, this is vendor specific. type: string models: $ref: "#/components/schemas/gpuModelList" osKernel: description: A kernel type. type: string enum: - linux osFamily: description: A family of operating systems. This typically defines the package format. type: string osDistro: description: A distribution name. type: string imageOS: description: An operating system description. type: object required: - kernel - family - distro - version properties: kernel: $ref: "#/components/schemas/osKernel" family: $ref: "#/components/schemas/osFamily" distro: $ref: "#/components/schemas/osDistro" variant: description: A free form variant e.g. desktop/server. type: string codename: description: A free form code name e.g. warty/bionic. type: string version: description: Version of the operating system e.g. "24.04". type: string imageSpec: description: An image. type: object required: - sizeGiB - virtualization - os - architecture properties: architecture: $ref: "#/components/schemas/architecture" sizeGiB: description: Minimum disk size required to use the image in GiB. type: integer virtualization: $ref: "#/components/schemas/imageVirtualization" os: $ref: "#/components/schemas/imageOS" softwareVersions: $ref: "#/components/schemas/softwareVersions" gpu: $ref: "#/components/schemas/imageGpu" imageState: description: The images's lifecycle state. type: string enum: - pending - creating - ready - failed imageStatus: description: The image's status. type: object required: - state properties: state: $ref: "#/components/schemas/imageState" image: description: An image. type: object required: - metadata - spec - status properties: metadata: $ref: "#/components/schemas/staticResourceMetadata" spec: $ref: "#/components/schemas/imageSpec" status: $ref: "#/components/schemas/imageStatus" images: description: A list of images that are compatible with this platform. type: array items: $ref: "#/components/schemas/image" imageCreateSpec: description: A compute image specification. type: object required: - uri - virtualization - os - architecture properties: uri: description: A URI to upload the image from. type: string format: uri architecture: $ref: "#/components/schemas/architecture" virtualization: $ref: "#/components/schemas/imageVirtualization" os: $ref: "#/components/schemas/imageOS" softwareVersions: $ref: "#/components/schemas/softwareVersions" gpu: $ref: "#/components/schemas/imageGpu" imageCreate: description: A compute image create request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/imageCreateSpec" snapshotCreateSpec: description: A compute image snapshot specification. type: object properties: {} snapshotCreate: description: A compute image create request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/snapshotCreateSpec" gpuSpec: description: GPU specification. type: object required: - vendor - model - memory - physicalCount - logicalCount properties: vendor: $ref: "#/components/schemas/gpuVendor" model: description: A GPU model. type: string memory: description: GPU memory in GiB. type: integer physicalCount: description: The physical number of GPUs (cards) available. type: integer logicalCount: description: The logical number of GPUs available as seen in the OS. type: integer infiniBandSpec: description: InfiniBand specification. type: object required: - portCount properties: portCount: description: The number of InfiniBand ports available to the flavor. type: integer minimum: 1 flavorSpec: description: A flavor. type: object required: - cpus - memory - disk - architecture properties: baremetal: description: Whether the flavor is for a dedicated machine. type: boolean cpus: description: The number of CPUs. type: integer cpuFamily: description: A free form CPU family description e.g. model number, architecture. type: string memory: description: The amount of memory in GiB. type: integer disk: description: The amount of ephemeral disk in GB. type: integer architecture: $ref: "#/components/schemas/architecture" gpu: $ref: "#/components/schemas/gpuSpec" infiniBand: $ref: "#/components/schemas/infiniBandSpec" pinnedOnly: description: When true, a server using this flavor must specify an infrastructureRef to identify the target host. type: boolean flavor: description: A flavor. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/staticResourceMetadata" spec: $ref: "#/components/schemas/flavorSpec" flavors: description: A list of flavors. type: array items: $ref: "#/components/schemas/flavor" identityWriteSpec: description: Request parameters for creating an identity. type: object required: - regionId properties: regionId: $ref: "#/components/schemas/regionId" identityWrite: description: An identity request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/identityWriteSpec" identitySpecOpenStack: description: Everything an OpenStack client needs to function. type: object properties: cloud: description: The name of the cloud in the cloud config. type: string cloudConfig: description: A base64 encoded cloud config file. type: string userId: description: User identitifer allocated for the infrastructure. type: string projectId: description: Project identifier allocated for the infrastructure. type: string serverGroupId: description: Server group identifier allocated for the intrastructure. type: string sshKeyName: description: Ephemeral SSH key generated for the identity. type: string sshPrivateKey: description: Ephemeral SSH private key to be used by higher order services. type: string identitySpec: description: A provider specific identity. type: object required: - type - regionId properties: type: $ref: "#/components/schemas/regionType" regionId: description: The region an identity is provisioned in. type: string openstack: $ref: "#/components/schemas/identitySpecOpenStack" identityRead: description: A provider specific identity. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/projectScopedResourceReadMetadata" spec: $ref: "#/components/schemas/identitySpec" identitiesRead: description: A list of provider specific identities. type: array items: $ref: "#/components/schemas/identityRead" ipv4Address: description: An IPv4 address. type: string format: ipv4 ipv4AddressList: description: A list of IPv4 addresses. type: array items: $ref: "#/components/schemas/ipv4Address" networkReadSpec: description: A physical network's specification. type: object required: - regionId - prefix - dnsNameservers properties: prefix: description: An IPv4 prefix for the network. type: string dnsNameservers: $ref: "#/components/schemas/ipv4AddressList" regionId: description: The region an identity is provisioned in. type: string openstack: $ref: "#/components/schemas/networkSpecOpenstack" networkSpecOpenstack: description: An openstack network. properties: vlanId: description: The allocated VLAN ID. type: integer networkId: description: The openstack network ID. type: string subnetId: description: The openstack subnet ID. type: string routerId: description: The openstack router ID. type: string networkWriteSpec: description: A physical network's specification. type: object required: - prefix - dnsNameservers properties: prefix: description: An IPv4 prefix for the network. type: string dnsNameservers: $ref: "#/components/schemas/ipv4AddressList" networkWrite: description: A network request. type: object required: - metadata properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/networkWriteSpec" networkRead: description: A network. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/projectScopedResourceReadMetadata" spec: $ref: "#/components/schemas/networkReadSpec" networksRead: description: A list of networks. type: array items: $ref: "#/components/schemas/networkRead" route: description: A network route. type: object required: - prefix - nexthop properties: prefix: description: An IPv4 prefix for the route. type: string nexthop: description: An IPv4 address for the route's next hop. type: string routes: description: A list of network routes. type: array items: $ref: "#/components/schemas/route" networkReservations: description: |- Network reservations carve a prefix from the start of the network CIDR for infrastructure use such as file storage and internal platform services as directed by the infrastructure provider. For example, on a /24 network a reservation prefix length of 25 reserves 192.168.0.0/25, leaving 192.168.0.128-192.168.0.254 for DHCP. Reservations are fixed when the network is created and are immutable afterwards. type: object required: - prefixLength properties: prefixLength: description: |- Defines how much of the network to reserve, starting at the beginning of the network CIDR. For example, on a /24 network a value of 25 reserves the lower half of the network, i.e. 192.168.0.0/25. The network address (.0) and gateway (.1) are platform-reserved within that space, so usable reserved addresses begin at .2. The reservation prefix length must be greater than the network prefix length. type: integer minimum: 0 maximum: 30 providerReservedPrefixLength: description: >- Optionally carves a prefix from the start of the reserved space for provider use. For example, on a /24 network with prefixLength=25 and providerReservedPrefixLength=28, 192.168.0.0/28 is reserved for provider use and storage uses the remainder of the reserved space, 192.168.0.16-192.168.0.127. If this matches prefixLength, the full reservation is treated as provider-reserved space and no storage range is left. type: integer minimum: 0 maximum: 30 networkV2Spec: description: A network's specification. type: object required: - dnsNameservers properties: dnsNameservers: description: |- DNS nameservers to use. If empty this will use the platform's internal DNS server and allow hosts to resolve each other. If it is populated then no internal host resolution will be possible. allOf: - $ref: "#/components/schemas/ipv4AddressList" routes: $ref: "#/components/schemas/routes" networkV2CreateSpec: description: A network's specification. type: object allOf: - $ref: "#/components/schemas/networkV2Spec" - type: object required: - organizationId - projectId - regionId - prefix properties: organizationId: description: The organization to provision the resource in. type: string projectId: description: The project to provision the resource in. type: string regionId: $ref: "#/components/schemas/regionId" prefix: description: |- An IPv4 prefix for the network. Dynamic modification of the network prefix is not supported at this time, and doing so would involve adding a route between discrete broadcast domains so ensure this is large enough for your potential requirements during the life time of your infrastructure. type: string reservations: description: |- Optional reservations to apply when the network is created. If omitted, the platform default of a /25 reservation with a /28 provider carve-out is applied. allOf: - $ref: "#/components/schemas/networkReservations" networkV2Status: description: Read only status about a network. type: object required: - regionId - prefix properties: regionId: description: The region a network is provisioned in. type: string prefix: description: An IPv4 prefix for the network. type: string reservations: $ref: "#/components/schemas/networkReservations" networkV2Read: description: A network. type: object required: - metadata - spec - status properties: metadata: $ref: "#/components/schemas/projectScopedResourceReadMetadata" spec: $ref: "#/components/schemas/networkV2Spec" status: $ref: "#/components/schemas/networkV2Status" networksV2Read: description: A list of networks. type: array items: $ref: "#/components/schemas/networkV2Read" networkV2Create: description: A network request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/networkV2CreateSpec" networkV2Update: description: A network update request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/networkV2Spec" externalNetwork: description: An Openstack external network. type: object required: - id - name properties: id: description: The resource ID. type: string name: description: The resource name. type: string externalNetworks: description: A list of openstack external networks. type: array items: $ref: "#/components/schemas/externalNetwork" securityGroupRulePort: description: The port definition to allow traffic. type: object properties: number: description: The port to allow. type: integer minimum: 1 maximum: 65535 range: $ref: "#/components/schemas/securityGroupRulePortRange" securityGroupRulePortRange: description: The port range to allow traffic, valid for layer 4 protocols only e.g. TCP, UDP. type: object required: - start - end properties: start: description: The start of the port range. type: integer minimum: 1 maximum: 65535 end: description: The end of the port range. type: integer minimum: 1 maximum: 65535 networkDirection: description: The direction of the rule. type: string enum: - ingress - egress networkProtocol: description: The layer 3+ protocol to allow. type: string enum: - any - icmp - tcp - udp - vrrp securityGroupRule: description: >- A security group rule's specification, this operates at OSI layer 3 and above. If omitted the CIDR prefix defaults to 0.0.0.0/0 e.g. allow from anywhere. The port can only be specified for layer 4 protocols e.g. TCP or UDP, and if omitted this default to all ports. type: object required: - direction - protocol properties: direction: $ref: "#/components/schemas/networkDirection" protocol: $ref: "#/components/schemas/networkProtocol" port: $ref: "#/components/schemas/securityGroupRulePort" cidr: $ref: "#/components/schemas/ipv4Address" securityGroupRuleList: description: A set of security group rules to apply. type: array items: $ref: "#/components/schemas/securityGroupRule" securityGroupRuleV2: description: >- A security group rule's specification, this operates at OSI layer 3 and above. If omitted the prefix defaults to 0.0.0.0/0 e.g. allow from anywhere. type: object required: - direction - protocol properties: direction: $ref: "#/components/schemas/networkDirection" protocol: $ref: "#/components/schemas/networkProtocol" port: description: Port number for layer 4 protocols, if not specified matches all ports. type: integer minimum: 1 maximum: 65535 portMax: description: maxumum port number for layer 4 protocols to include a range. type: integer minimum: 1 maximum: 65535 prefix: $ref: "#/components/schemas/ipv4Address" securityGroupRuleV2List: description: A set of security group rules to apply. type: array items: $ref: "#/components/schemas/securityGroupRuleV2" securityGroupSpec: description: A security group's specification. type: object required: - rules properties: rules: $ref: "#/components/schemas/securityGroupRuleList" securityGroupWrite: description: A security group request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/securityGroupSpec" securityGroupRead: description: A security group. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/projectScopedResourceReadMetadata" spec: $ref: "#/components/schemas/securityGroupSpec" securityGroupsRead: description: A list of security groups. type: array items: $ref: "#/components/schemas/securityGroupRead" securityGroupV2Spec: description: A security group's specification. type: object required: - rules properties: rules: $ref: "#/components/schemas/securityGroupRuleV2List" securityGroupV2CreateSpec: description: A security group's specification. type: object allOf: - $ref: "#/components/schemas/securityGroupV2Spec" - type: object required: - networkId properties: networkId: $ref: "#/components/schemas/networkId" securityGroupV2Status: description: Read only status information about a security group. type: object required: - regionId - networkId properties: regionId: description: The region a security group belongs to. type: string networkId: description: The network a security group belongs to. type: string securityGroupV2Create: description: A security group request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/securityGroupV2CreateSpec" securityGroupV2Update: description: A security group request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/securityGroupV2Spec" securityGroupV2Read: description: A security group. type: object required: - metadata - spec - status properties: metadata: $ref: "#/components/schemas/projectScopedResourceReadMetadata" spec: $ref: "#/components/schemas/securityGroupV2Spec" status: $ref: "#/components/schemas/securityGroupV2Status" securityGroupsV2Read: description: A list of security groups. type: array items: $ref: "#/components/schemas/securityGroupV2Read" loadBalancerListenerProtocolV2: description: The load balancer listener protocol. type: string enum: - tcp - udp loadBalancerListenerNameV2: description: A load balancer listener name. Must start with a lower-case letter and otherwise be a valid DNS label. type: string maxLength: 63 pattern: ^[a-z]([-a-z0-9]*[a-z0-9])?$ loadBalancerMemberV2: description: A load balancer pool member. type: object required: - address - port properties: address: $ref: "#/components/schemas/ipv4Address" port: type: integer minimum: 1 maximum: 65535 loadBalancerHealthCheckV2: description: A load balancer pool health check. type: object properties: intervalSeconds: type: integer minimum: 1 maximum: 300 timeoutSeconds: type: integer minimum: 1 maximum: 300 healthyThreshold: type: integer minimum: 1 maximum: 10 unhealthyThreshold: type: integer minimum: 1 maximum: 10 loadBalancerPoolV2: description: A load balancer listener pool. type: object required: - members properties: proxyProtocolV2: description: Whether to enable Proxy Protocol v2. type: boolean members: description: A list of pool members. type: array items: $ref: "#/components/schemas/loadBalancerMemberV2" healthCheck: $ref: "#/components/schemas/loadBalancerHealthCheckV2" loadBalancerListenerV2: description: A load balancer listener. type: object required: - name - protocol - port - pool properties: name: description: The listener name. allOf: - $ref: "#/components/schemas/loadBalancerListenerNameV2" protocol: $ref: "#/components/schemas/loadBalancerListenerProtocolV2" port: description: The listener port. type: integer minimum: 1 maximum: 65535 allowedCidrs: description: A list of source IPv4 CIDRs allowed to access the listener. type: array items: type: string pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\/(?:3[0-2]|[1-2]?[0-9])$ idleTimeoutSeconds: description: The idle timeout in seconds. Defaults to 60 for TCP listeners and is unsupported for UDP listeners. type: integer minimum: 1 maximum: 86400 pool: $ref: "#/components/schemas/loadBalancerPoolV2" loadBalancerV2Spec: description: A load balancer's specification. type: object required: - listeners properties: publicIP: description: Whether to allocate a public IP. type: boolean listeners: description: A list of load balancer listeners. type: array minItems: 1 items: $ref: "#/components/schemas/loadBalancerListenerV2" loadBalancerV2CreateSpec: description: A load balancer creation specification. type: object allOf: - $ref: "#/components/schemas/loadBalancerV2Spec" - type: object required: - networkId properties: networkId: $ref: "#/components/schemas/networkId" vipAddress: description: The requested virtual IP address. When provided, it must fall within the selected network CIDR. allOf: - $ref: "#/components/schemas/ipv4Address" loadBalancerV2Status: description: Read only status information about a load balancer. type: object required: - regionId - networkId properties: regionId: description: The region the load balancer belongs to. type: string networkId: description: The network the load balancer belongs to. type: string vipAddress: description: The provisioned virtual IP address. allOf: - $ref: "#/components/schemas/ipv4Address" publicIP: description: The provisioned public IP address. allOf: - $ref: "#/components/schemas/ipv4Address" loadBalancerV2Create: description: A load balancer creation request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/loadBalancerV2CreateSpec" loadBalancerV2Update: description: A load balancer update request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/loadBalancerV2Spec" loadBalancerV2Read: description: A load balancer. type: object required: - metadata - spec - status properties: metadata: $ref: "#/components/schemas/projectScopedResourceReadMetadata" spec: $ref: "#/components/schemas/loadBalancerV2Spec" status: $ref: "#/components/schemas/loadBalancerV2Status" loadBalancersV2Read: description: A list of load balancers. type: array items: $ref: "#/components/schemas/loadBalancerV2Read" sshCertificateAuthorityV2Spec: description: An OpenSSH user certificate authority trust anchor. type: object required: - publicKey properties: publicKey: description: A single-line OpenSSH-formatted CA public key. type: string sshCertificateAuthorityV2CreateSpec: description: An SSH certificate authority creation specification. type: object allOf: - $ref: "#/components/schemas/sshCertificateAuthorityV2Spec" - type: object required: - organizationId - projectId properties: organizationId: description: The organization the SSH certificate authority belongs to. type: string projectId: description: The project the SSH certificate authority belongs to. type: string sshCertificateAuthorityV2Create: description: An SSH certificate authority creation request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/sshCertificateAuthorityV2CreateSpec" sshCertificateAuthorityV2Read: description: An SSH certificate authority. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/projectScopedResourceReadMetadata" spec: $ref: "#/components/schemas/sshCertificateAuthorityV2Spec" sshCertificateAuthoritiesV2Read: description: A list of SSH certificate authorities. type: array items: $ref: "#/components/schemas/sshCertificateAuthorityV2Read" sshCertificateAuthorityID: description: The SSH certificate authority ID. type: string sshInjection: description: The create-time SSH access material Region should arrange for a server. type: string enum: - ca - identityKeypair - none infrastructureRef: description: A provider-specific identifier for a physical host. When set, the provider's scheduler is bypassed and the server is provisioned directly onto the identified host. type: string serverSpec: description: A server's specification. type: object required: - flavorId - imageId - networks properties: flavorId: $ref: "#/components/schemas/flavorId" imageId: description: |- The server image. On update this field is ignored: the image is immutable through the v1 API and the stored value is preserved. allOf: - $ref: "#/components/schemas/imageId" securityGroups: $ref: "#/components/schemas/serverSecurityGroupList" publicIPAllocation: $ref: "#/components/schemas/serverPublicIPAllocation" networks: $ref: "#/components/schemas/serverNetworkList" userData: description: UserData contains base64-encoded configuration information or scripts to use upon launch. type: string format: byte serverNetworkList: description: A list of networks. type: array minItems: 1 maxItems: 1 items: $ref: "#/components/schemas/serverNetwork" serverNetwork: description: The server's network. type: object required: - id properties: id: description: Network to attach the server to type: string allowedAddressPairs: $ref: "#/components/schemas/serverNetworkAllowedAddressPairList" serverNetworkAllowedAddressPairList: description: A list of allowed address pairs. type: array items: $ref: "#/components/schemas/serverNetworkAllowedAddressPair" serverNetworkAllowedAddressPair: description: Allow multiple MAC/IP address (range) pairs to pass through this network port. type: object required: - cidr properties: cidr: description: The CIDR to allow. type: string macAddress: description: The MAC address to allow. type: string serverPublicIPAllocation: description: The server's public IP allocation. type: object required: - enabled properties: enabled: description: Whether to allocate a public IP. type: boolean serverSecurityGroupList: description: A list of security groups. type: array items: $ref: "#/components/schemas/serverSecurityGroup" serverSecurityGroup: description: A security group. type: object required: - id properties: id: description: The security group ID. type: string instanceLifecyclePhase: description: | The lifecycle phase of an instance. Once provisioning_status reaches provisioned, this becomes the live readiness signal: API consumers should treat Running (not provisioned) as the "ready to use" state. Queued and Building are observed during create — Queued for baremetal servers waiting on hardware, Building for servers the provider is actively bringing up. Rebuilding means an already provisioned server is being reimaged in place and is not usable until it completes. Rebooting means a soft or hard reboot has been accepted and is in flight; it returns to Running once the provider has processed the request. To confirm the guest actually restarted, use OS-level evidence such as a changed boot ID or boot time. Error means the provider reported the server in a terminal error state. type: string enum: - Pending - Queued - Building - Rebuilding - Rebooting - Running - Stopping - Stopped - Error serverStatus: description: A server's status. type: object properties: phase: $ref: "#/components/schemas/instanceLifecyclePhase" privateIP: description: The private IP address of the server. type: string publicIP: description: The public IP address of the server. type: string serverRead: description: A server. type: object required: - metadata - spec - status properties: metadata: $ref: "#/components/schemas/projectScopedResourceReadMetadata" spec: $ref: "#/components/schemas/serverSpec" status: $ref: "#/components/schemas/serverStatus" serverWrite: description: A server request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/serverSpec" serversRead: description: A list of servers. type: array items: $ref: "#/components/schemas/serverRead" allowedSourceAddresses: description: >- A list of network prefixes that are allowed to egress from the server. By default, only packets from the server's network interface's IP address are allowed to enter the network. Use of this option allows the server to act as a router without SNAT rules. type: array items: description: An allowed source address prefix. type: string serverV2SecurityGroupIDList: description: A list of security group IDs. type: array items: $ref: "#/components/schemas/securityGroupId" serverProviderCreateGateType: description: A provider-create gate condition type. type: string minLength: 1 serverProviderCreateGate: description: A gate that must be satisfied before provider create starts. type: object required: - conditionType properties: conditionType: $ref: "#/components/schemas/serverProviderCreateGateType" serverProviderCreateGates: description: Provider-create gates requested at server creation time. type: array items: $ref: "#/components/schemas/serverProviderCreateGate" serverRemainingProviderCreateGates: description: Configured provider-create gates that are not currently satisfied. type: array items: $ref: "#/components/schemas/serverProviderCreateGateType" serverProviderCreateGateAction: description: Request to satisfy a configured provider-create gate. type: object required: - conditionType - reason - message properties: conditionType: $ref: "#/components/schemas/serverProviderCreateGateType" reason: description: Machine-readable reason for satisfying the gate. type: string minLength: 1 message: description: Human-readable details for operators. type: string minLength: 1 serverV2Networking: description: A server's network configuration. type: object properties: securityGroups: $ref: "#/components/schemas/serverV2SecurityGroupIDList" publicIP: description: Whether or not to provision a public IP. type: boolean allowedSourceAddresses: $ref: "#/components/schemas/allowedSourceAddresses" serverV2VolumeStatus: description: Observed attachment state for a desired Volume. type: object required: - id - provisioningStatus properties: id: description: The attached Volume ID. allOf: - $ref: "#/components/schemas/volumeId" provisioningStatus: $ref: "#/components/schemas/resourceProvisioningStatus" device: description: The provider-assigned guest device name, when available. type: string message: description: Optional safe human-readable description of the attachment state. type: string serverV2VolumeStatusList: description: Observed attachment state for the Server's desired Volumes. type: array items: $ref: "#/components/schemas/serverV2VolumeStatus" serverV2VolumeList: description: Complete desired set of existing Volumes to attach to the Server. type: array items: $ref: "#/components/schemas/volumeId" serverV2Spec: description: A server's specification. type: object required: - flavorId - imageId properties: flavorId: description: The server flavor. This field is immutable after creation. allOf: - $ref: "#/components/schemas/flavorId" imageId: description: |- The desired server image. Changing this field rebuilds the server, recreating the root disk and destroying its contents. allOf: - $ref: "#/components/schemas/imageId" networking: $ref: "#/components/schemas/serverV2Networking" userData: description: >- Contains base64-encoded configuration information or scripts to use upon launch. The format of the data is governed by the cloud-init standard, and may be a script, a MIME multipart archive, etc. Cloud-init part-handlers (#part-handler) are rejected, as the payload or as a top-level MIME part. On update the field is replaced wholesale: omitting it clears the stored value. A changed value is not applied to the running guest — it takes effect only when the server is next rebuilt (image change) or recreated. type: string format: byte volumes: $ref: "#/components/schemas/serverV2VolumeList" serverV2CreateSpec: description: A server's specification. type: object allOf: - $ref: "#/components/schemas/serverV2Spec" - type: object required: - networkId properties: networkId: $ref: "#/components/schemas/networkId" sshCertificateAuthorityId: description: The SSH certificate authority used to bootstrap login trust when the server is created. allOf: - $ref: "#/components/schemas/sshCertificateAuthorityID" sshInjection: description: The create-time SSH access material Region should arrange for the server. If omitted, Region uses ca when sshCertificateAuthorityId is set, otherwise identityKeypair. allOf: - $ref: "#/components/schemas/sshInjection" infrastructureRef: $ref: "#/components/schemas/infrastructureRef" providerCreateGates: $ref: "#/components/schemas/serverProviderCreateGates" serverV2Status: description: Read only status information about a server. type: object required: - regionId - networkId properties: regionId: description: The region the server belongs to. allOf: - $ref: "#/components/schemas/regionId" networkId: description: The network the server belongs to. allOf: - $ref: "#/components/schemas/networkId" sshCertificateAuthorityId: description: The SSH certificate authority configured when the server was created. allOf: - $ref: "#/components/schemas/sshCertificateAuthorityID" sshInjection: description: The resolved create-time SSH access material Region arranged for the server. allOf: - $ref: "#/components/schemas/sshInjection" infrastructureRef: $ref: "#/components/schemas/infrastructureRef" powerState: $ref: "#/components/schemas/instanceLifecyclePhase" privateIP: description: The private IP address of the server. type: string publicIP: description: The public IP address of the server. type: string macAddress: description: The MAC address of the server. type: string remainingProviderCreateGates: $ref: "#/components/schemas/serverRemainingProviderCreateGates" volumes: $ref: "#/components/schemas/serverV2VolumeStatusList" serverV2Read: description: A server. type: object required: - metadata - spec - status properties: metadata: $ref: "#/components/schemas/projectScopedResourceReadMetadata" spec: $ref: "#/components/schemas/serverV2Spec" status: $ref: "#/components/schemas/serverV2Status" serversV2Read: description: A list of servers. type: array items: $ref: "#/components/schemas/serverV2Read" serverV2Create: description: A server creation request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/serverV2CreateSpec" serverV2Update: description: A server update request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/serverV2Spec" volumeV2Spec: description: A volume's immutable desired Network anchor and capacity. type: object required: - networkId - volumeClassId - sizeGiB properties: networkId: description: The Network that determines the volume's Region and project association. allOf: - $ref: "#/components/schemas/networkId" volumeClassId: description: The provider-neutral VolumeClass used to provision the volume. type: string sizeGiB: description: The requested volume capacity in whole GiB. type: integer format: int64 minimum: 1 volumeV2Status: description: Provider-observed volume state. type: object required: - regionId properties: attachedAt: description: Timestamp when the current volume attachment was first confirmed. Omitted when no current attachment is recorded. type: string format: date-time regionId: description: The Region in which the volume is provisioned. allOf: - $ref: "#/components/schemas/regionId" sizeGiB: description: The provider-observed volume capacity in whole GiB. type: integer format: int64 minimum: 1 volumeV2Create: description: A volume creation request. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/volumeV2Spec" volumeV2Update: description: A volume metadata update request. Network, VolumeClass, and capacity are immutable. type: object required: - metadata properties: metadata: $ref: "#/components/schemas/resourceMetadata" volumeV2Read: description: A block storage volume. type: object required: - metadata - spec - status properties: metadata: $ref: "#/components/schemas/projectScopedResourceReadMetadata" spec: $ref: "#/components/schemas/volumeV2Spec" status: $ref: "#/components/schemas/volumeV2Status" volumesV2Read: description: A list of volumes. type: array items: $ref: "#/components/schemas/volumeV2Read" consoleSession: description: A console session response. type: object required: - url properties: url: description: The URL to access the console session. type: string consoleOutput: description: Console output type: object required: - contents properties: contents: description: Console output. type: string sshKey: description: An SSH key. type: object required: - privateKey properties: privateKey: description: The SSH private key. type: string storageTypeV2Spec: description: A storage's type type: object properties: NFS: $ref: "#/components/schemas/NFSV2Spec" NFSV2Spec: description: NFS settings supplied during create or update. type: object required: - rootSquash properties: rootSquash: description: root squash type: boolean posixAcl: description: > Whether extended POSIX ACL support is enabled. Omission or explicit null resolves to false. Enabling POSIX ACLs may reduce metadata performance. Extended POSIX ACLs must be managed over NFSv3. Disabling this option does not remove existing ACLs; they may remain enforced. type: boolean nullable: true default: false atimeUpdateIntervalSeconds: description: > Omission or explicit null resolves to 0. Set to 0 to disable read-driven atime updates. A positive value updates atime during a read only when the existing atime is older than this number of seconds. Maximum: 86,399,999,999,999 seconds. type: integer format: int64 nullable: true default: 0 minimum: 0 maximum: 86399999999999 storageAttachmentV2Spec: description: Describes the network attachment for storage type: object required: - networkIds properties: networkIds: $ref: "#/components/schemas/networkIDList" networkIDList: description: A list of network IDs type: array items: description: A network identifier type: string storageAttachmentListV2Status: description: > Describes the network attachments for storage. This is the union of desired and observed attachments, so it may contain networks that are absent from spec.attachments.networkIds but are still attached pending removal. It is not index-aligned with spec.attachments.networkIds. type: array items: $ref: "#/components/schemas/storageAttachmentV2Status" storageAttachmentV2Status: description: Describes the network attachment for storage type: object required: - networkId - provisioningStatus properties: networkId: description: The network ID type: string mountSource: description: The mount source for the attached storage in the format :. type: string mountOptions: description: Optional NFS mount options for the attached storage. type: object additionalProperties: type: string provisioningStatus: $ref: "#/components/schemas/resourceProvisioningStatus" storageSnapshotPolicyListV2Spec: description: A list of named snapshot policies for storage. type: array maxItems: 4 items: $ref: "#/components/schemas/storageSnapshotPolicyV2Spec" storageSnapshotPolicyV2Spec: description: A named snapshot policy for storage. type: object required: - name - schedule - retention properties: name: description: Stable identity key for the snapshot policy. type: string maxLength: 19 pattern: ^[a-z]([-a-z0-9]*[a-z0-9])?$ protectedPath: description: Optional relative path protected by this policy. Omission protects the File Storage root. It is immutable for an existing policy name. type: string maxLength: 1024 pattern: ^([^/]+/)*[^/]+$ schedule: $ref: "#/components/schemas/storageSnapshotScheduleV2Spec" retention: $ref: "#/components/schemas/storageSnapshotRetentionV2Spec" storageSnapshotScheduleV2Spec: description: Schedule for a storage snapshot policy. type: object required: - interval properties: interval: $ref: "#/components/schemas/storageSnapshotScheduleIntervalV2" timeOfDay: description: UTC time of day in HH:MMZ form. type: string pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]Z$ dayOfWeek: $ref: "#/components/schemas/storageSnapshotDayOfWeekV2" dayOfMonth: description: UTC day of month for monthly snapshot policies. type: integer minimum: 1 maximum: 28 storageSnapshotScheduleIntervalV2: description: Snapshot policy cadence. type: string enum: - hourly - daily - weekly - monthly storageSnapshotDayOfWeekV2: description: UTC day of week for weekly snapshot policies. type: string enum: - monday - tuesday - wednesday - thursday - friday - saturday - sunday storageSnapshotRetentionV2Spec: description: Retention policy for storage snapshots. type: object required: - keep properties: keep: description: Number of snapshots to retain. type: integer minimum: 1 storageSnapshotPolicyListV2Status: description: A list of observed snapshot policy states for storage. type: array items: $ref: "#/components/schemas/storageSnapshotPolicyV2Status" storageSnapshotPolicyV2Status: description: Observed state for a named storage snapshot policy. type: object required: - name - provisioningStatus properties: name: description: Stable identity key for the snapshot policy. type: string maxLength: 19 pattern: ^[a-z]([-a-z0-9]*[a-z0-9])?$ provisioningStatus: $ref: "#/components/schemas/resourceProvisioningStatus" message: description: Optional human-readable status detail for the snapshot policy. type: string storageV2Spec: description: A storage's specification. type: object required: - sizeGiB - storageType properties: sizeGiB: description: size in GiB of the storage type: integer format: int64 storageType: $ref: "#/components/schemas/storageTypeV2Spec" attachments: $ref: "#/components/schemas/storageAttachmentV2Spec" defaultSnapshotProtectionEnabled: description: Whether platform-managed Default Snapshot Protection is enabled. On create, omission resolves to enabled. On update, omission preserves the current setting. Reads return the resolved setting. Explicit null is invalid. type: boolean snapshotPolicies: $ref: "#/components/schemas/storageSnapshotPolicyListV2Spec" storageV2Status: description: Read only status about storage type: object required: - storageClassId - regionId - snapshotPolicies properties: storageClassId: description: identifier for the storage type: string regionId: description: The region an identity is provisioned in. type: string usage: $ref: "#/components/schemas/storageUsageV2Status" attachments: $ref: "#/components/schemas/storageAttachmentListV2Status" snapshotPolicies: $ref: "#/components/schemas/storageSnapshotPolicyListV2Status" storageUsageV2Status: description: Information about the usage of the storage in bytes type: object required: - capacityBytes properties: capacityBytes: description: total space allotted in bytes type: integer format: int64 usedBytes: description: amount of storage space used in bytes type: integer format: int64 updatedAt: description: timestamp when the usage was last updated type: string format: date-time storageV2Create: description: A storage create request. Omitted or null NFS POSIX ACL and atime settings resolve to false and 0. When spec.defaultSnapshotProtectionEnabled is omitted, Default Snapshot Protection is enabled. Explicit null defaultSnapshotProtectionEnabled is invalid. When spec.snapshotPolicies is omitted or empty, the API stores no user-managed Snapshot Policies. Non-empty policy lists are stored exactly as supplied. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: allOf: - type: object required: - organizationId - projectId - regionId - storageClassId - sizeGiB properties: storageClassId: description: The storage class ID to provision the storage into. type: string organizationId: description: The organization to provision the resource in. type: string regionId: $ref: "#/components/schemas/regionId" projectId: description: The project to provision the resource in. type: string - $ref: "#/components/schemas/storageV2Spec" storageV2Update: description: A storage update request. Omitted or null NFS POSIX ACL and atime settings resolve to false and 0 rather than preserving prior state. Omitted spec.defaultSnapshotProtectionEnabled preserves the current Default Snapshot Protection setting, and explicit null is invalid. Omitted spec.snapshotPolicies preserves existing desired user-managed Snapshot Policies, an empty list clears them, and a non-empty list replaces the full list. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/storageV2Spec" storageV2Read: description: A storage read only group. type: object required: - metadata - spec - status properties: metadata: $ref: "#/components/schemas/projectScopedResourceReadMetadata" spec: $ref: "#/components/schemas/storageV2Spec" status: $ref: "#/components/schemas/storageV2Status" storageV2List: description: A list of storage type: array items: $ref: "#/components/schemas/storageV2Read" fileStorageSnapshotV2Create: description: Manual Snapshot resource. type: object additionalProperties: false required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceMetadata" spec: $ref: "#/components/schemas/fileStorageSnapshotV2CreateSpec" fileStorageSnapshotV2CreateSpec: description: Capture intent. Omitted expiration means no automatic expiration; omitted protected path selects the File Storage root. type: object additionalProperties: false properties: expirationTime: description: Optional expiration deadline using the platform date-time format. Fractional seconds are truncated before validating that the normalized deadline is strictly later than request acceptance time. Malformed timestamps return 400; non-future normalized deadlines return 422. type: string format: date-time example: 2030-01-01T00:00:00Z protectedPath: description: Optional canonical relative path within the File Storage. Empty, absolute, repeated or trailing slashes and exact dot or dot-dot components are rejected. type: string maxLength: 1024 pattern: ^([^/]+/)*[^/]+$ example: datasets/model fileStorageSnapshotV2Read: description: A manual file storage snapshot. Health and snapshot details record capture readiness, not current availability. type: object required: - metadata - spec - status properties: metadata: $ref: "#/components/schemas/projectScopedResourceReadMetadata" spec: $ref: "#/components/schemas/fileStorageSnapshotV2Spec" status: $ref: "#/components/schemas/fileStorageSnapshotV2Status" fileStorageSnapshotV2Spec: description: Immutable Manual Snapshot capture intent. type: object required: - fileStorageId properties: fileStorageId: $ref: "#/components/schemas/fileStorageId" expirationTime: description: Optional immutable expiration deadline. The snapshot is hidden once the deadline is reached. Omission means no automatic expiration. type: string format: date-time protectedPath: description: Optional immutable canonical relative protected path within the File Storage. Omission selects the File Storage root. type: string maxLength: 1024 pattern: ^([^/]+/)*[^/]+$ fileStorageSnapshotV2Status: description: Snapshot details observed during capture. type: object properties: snapshotTime: description: Optional provider-observed capture time; distinct from Region creation time. type: string format: date-time absoluteProtectedPath: description: Optional absolute path captured by the snapshot. type: string fileStorageSnapshotsV2Read: description: A list of manual file storage snapshots. type: array items: $ref: "#/components/schemas/fileStorageSnapshotV2Read" storageClassListV2Read: description: A list of storage classes. type: array items: $ref: "#/components/schemas/storageClassV2Read" storageClassV2Read: description: A storage class. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/resourceReadMetadata" spec: $ref: "#/components/schemas/storageClassV2Spec" storageClassV2Spec: description: A storage class's specification. type: object required: - regionId - protocols - parallelism properties: regionId: description: The region an storage class is provisioned in. type: string protocols: type: array items: $ref: "#/components/schemas/storageClassProtocolType" parallelism: description: |- Defines the target number of IP addresses assigned to storage. More IP addresses can improve performance. Attachments use min(parallelism, usable IPs in the network storage range). type: integer minimum: 1 storageClassProtocolType: description: The protocol type of the storage class. type: string enum: - nfsv3 - nfsv4 volumeClassListV2Read: description: A list of provider-neutral block-storage volume classes. type: array items: $ref: "#/components/schemas/volumeClassV2Read" volumeClassV2Read: description: A provider-neutral block-storage volume class available in a Region. type: object required: - metadata - spec properties: metadata: $ref: "#/components/schemas/staticResourceMetadata" spec: $ref: "#/components/schemas/volumeClassV2Spec" volumeClassV2Spec: description: Provider-neutral capabilities advertised by a block-storage volume class. type: object required: - regionId - encrypted properties: regionId: description: The Region that owns this volume class inventory entry. allOf: - $ref: "#/components/schemas/regionId" minimumSizeGiB: description: Operator-configured minimum volume capacity accepted by this class, in whole GiB. type: integer format: int64 minimum: 1 maximumSizeGiB: description: Operator-configured maximum volume capacity accepted by this class, in whole GiB. type: integer format: int64 minimum: 1 supportedFlavorIds: description: Optional allowlist of Region flavors that can attach Volumes of this class to Servers. Omitted or empty means Server attachment is not supported; standalone Volume creation remains available. type: array uniqueItems: true items: $ref: "#/components/schemas/flavorId" media: $ref: "#/components/schemas/volumeClassV2Media" performance: $ref: "#/components/schemas/volumeClassV2Performance" encrypted: description: Whether volumes created from this class are encrypted at rest by the provider. type: boolean volumeClassV2Media: description: The physical storage medium backing a volume class. type: string enum: - hdd - ssd - nvme volumeClassV2Performance: description: Advertised performance caps; these are not guaranteed reservations. type: object properties: maxIOPS: description: Advertised maximum input/output operations per second. type: integer minimum: 1 maxThroughputMiBps: description: Advertised maximum throughput in mebibytes per second. type: integer minimum: 1 authorizationServerList: description: List of authorization servers that can grant access to the resource. type: array items: description: An authorization server's scheme and hostname. type: string scopeList: description: A set of OIDC scopes that are required for authorization. type: array items: type: string bearerMethod: description: Bearer token transport method type: string enum: - header - body - query bearerMethodList: description: A set of bearer token transport methods supported by the protected endpoint. type: array items: $ref: "#/components/schemas/bearerMethod" openidProtectedResource: description: OpenID athentication server discovery configuration. type: object required: - resource - authorization_servers - scopes_supported - bearer_methods_supported properties: resource: description: The protected resource's scheme and hostname. type: string authorization_servers: $ref: "#/components/schemas/authorizationServerList" scopes_supported: $ref: "#/components/schemas/scopeList" bearer_methods_supported: $ref: "#/components/schemas/bearerMethodList" organizationId: description: An organization ID. type: string format: uuid kubernetesLabelValue: description: >- A valid Kubernetes label value, typically used for resource names that can be indexed in the database. type: string pattern: ^[0-9A-Za-z](?:[0-9A-Za-z-_.]{0,61}[0-9A-Za-z])?$ tag: description: >- A tag mapping arbitrary names to values. These have no special meaning for any component are are intended for use by end users to add additional context to a resource, for example to categorize it. type: object required: - name - value properties: name: description: A unique tag name. type: string value: description: The value of the tag. type: string tagList: description: A list of tags. type: array items: $ref: "#/components/schemas/tag" resourceMetadata: description: Metadata required for all API resource reads and writes. required: - name properties: name: $ref: "#/components/schemas/kubernetesLabelValue" description: description: The resource description, this optionally augments the name with more context. type: string tags: $ref: "#/components/schemas/tagList" staticResourceMetadata: description: | This metadata is for resources that just exist, and don't require any provisioning and health status, but benefit from a standardized metadata format. type: object allOf: - $ref: "#/components/schemas/resourceMetadata" - type: object required: - id - creationTime properties: id: description: The unique resource ID. type: string creationTime: description: The time the resource was created. type: string format: date-time createdBy: description: The user who created the resource. type: string modifiedTime: description: The time a resource was updated. type: string format: date-time modifiedBy: description: The user who updated the resource. type: string resourceProvisioningStatus: description: The provisioning state of a resource. type: string enum: - unknown - pending - provisioning - provisioned - deprovisioning - error resourceHealthStatus: description: The health state of a resource. type: string enum: - unknown - healthy - degraded - error resourceReadMetadata: description: Metadata required by all resource reads. allOf: - $ref: "#/components/schemas/staticResourceMetadata" - type: object required: - provisioningStatus - healthStatus properties: deletionTime: description: The time the resource was deleted. type: string format: date-time provisioningStatus: $ref: "#/components/schemas/resourceProvisioningStatus" healthStatus: $ref: "#/components/schemas/resourceHealthStatus" error: description: Generic error message, compatible with oauth2. type: object required: - error - error_description properties: error: description: A terse error string expanding on the HTTP error code. Errors are based on the OAuth 2.02 specification, but are expanded with proprietary status codes for APIs other than those specified by OAuth 2.02. type: string enum: - invalid_request - server_error - access_denied - not_found - conflict - method_not_allowed - unsupported_media_type - request_entity_too_large - unprocessable_content - forbidden error_description: description: Verbose message describing the error. type: string trace_id: description: Unique trace identifier for the request. type: string semver: description: |- A semantic version in the form v1.2.3. Pre-releases and variants are not currently supported. type: string pattern: ^v\d+\.\d+\.\d+$ organizationScopedResourceReadMetadata: description: Metadata required by organization scoped resource reads. allOf: - $ref: "#/components/schemas/resourceReadMetadata" - type: object required: - organizationId properties: organizationId: description: The organization identifier the resource belongs to. type: string projectScopedResourceReadMetadata: description: Metadata required by project scoped resource reads. allOf: - $ref: "#/components/schemas/organizationScopedResourceReadMetadata" - type: object required: - projectId properties: projectId: description: The project identifier the resource belongs to. type: string projectId: description: A project ID. type: string format: uuid serviceVersionRead: description: |- Build version information for the running service, stamped into the binary at release time. Developer builds report version 0.0.0. type: object required: - name - version properties: name: description: The service application name. type: string version: description: The service release version, e.g. v1.2.3. type: string requestBodies: identityRequest: description: A request for an identity. required: true content: application/json: schema: $ref: "#/components/schemas/identityWrite" example: metadata: name: identity-name description: A verbose description tags: - name: cluster-id value: 9361402c-f998-49cc-ab21-9bb99afcfde8 spec: regionId: c7568e2d-f9ab-453d-9a3a-51375f78426b imageCreateRequest: description: A request to create an image. content: application/json: schema: $ref: "#/components/schemas/imageCreate" example: metadata: name: ubu2204-v1.25.6-gpu-525.85.05-7ced4154 spec: uri: https://example.com/buckets/myimages/ubu2204-v1.25.6-gpu-525.85.05-7ced4154.raw architecture: x86_64 virtualization: virtualized os: kernel: linux family: debian distro: ubuntu variant: server codename: noble version: "24.04" softwareVersions: kubernetes: v1.25.6 gpu: vendor: NVIDIA driver: 525.85.05 models: - A100 - H100 - H200 networkRequest: description: A request for a network. content: application/json: schema: $ref: "#/components/schemas/networkWrite" example: metadata: name: network-name description: A verbose description tags: - name: cluster-id value: 9361402c-f998-49cc-ab21-9bb99afcfde8 spec: prefix: 192.168.0.0/24 dnsNameservers: - 8.8.8.8 networkV2CreateRequest: description: A request for a network create. content: application/json: schema: $ref: "#/components/schemas/networkV2Create" example: metadata: name: network-name description: A verbose description tags: - name: cluster-id value: 9361402c-f998-49cc-ab21-9bb99afcfde8 spec: organizationId: 161b9d5a-701d-4fea-848d-0e345edf16e9 projectId: f113be96-4dd2-4c14-9c0e-e96c500f21e0 regionId: c7568e2d-f9ab-453d-9a3a-51375f78426b prefix: 192.168.0.0/24 reservations: prefixLength: 25 providerReservedPrefixLength: 28 dnsNameservers: - 8.8.8.8 routes: - prefix: 10.0.0.0/8 nexthop: 192.168.0.10 networkV2UpdateRequest: description: A request for a network create. content: application/json: schema: $ref: "#/components/schemas/networkV2Update" example: metadata: name: network-name description: A verbose description tags: - name: cluster-id value: 9361402c-f998-49cc-ab21-9bb99afcfde8 spec: dnsNameservers: - 8.8.8.8 routes: - prefix: 10.0.0.0/8 nexthop: 192.168.0.10 securityGroupRequest: description: A request for a security group. content: application/json: schema: $ref: "#/components/schemas/securityGroupWrite" example: metadata: name: security-group-name description: A verbose description tags: - name: cluster-id value: 9361402c-f998-49cc-ab21-9bb99afcfde8 spec: rules: - direction: ingress protocol: tcp port: number: 80 cidr: 172.16.0.0/12 securityGroupV2CreateRequest: description: A request for a security group. content: application/json: schema: $ref: "#/components/schemas/securityGroupV2Create" example: metadata: name: security-group-name description: A verbose description tags: - name: cluster-id value: 9361402c-f998-49cc-ab21-9bb99afcfde8 spec: networkId: 61f0ad85-3001-41cb-824a-e6a047668dfe rules: - direction: ingress protocol: tcp port: 80 cidr: 172.16.0.0/12 securityGroupV2UpdateRequest: description: A request for a security group. content: application/json: schema: $ref: "#/components/schemas/securityGroupV2Update" example: metadata: name: security-group-name description: A verbose description tags: - name: cluster-id value: 9361402c-f998-49cc-ab21-9bb99afcfde8 spec: rules: - direction: ingress protocol: tcp port: 80 cidr: 172.16.0.0/12 loadBalancerV2CreateRequest: description: A request for a load balancer. content: application/json: schema: $ref: "#/components/schemas/loadBalancerV2Create" example: metadata: name: web-lb description: Public TCP load balancer tags: - name: service value: ingress spec: networkId: 61f0ad85-3001-41cb-824a-e6a047668dfe publicIP: true vipAddress: 192.168.10.20 listeners: - name: http protocol: tcp port: 80 allowedCidrs: - 0.0.0.0/0 idleTimeoutSeconds: 30 pool: proxyProtocolV2: false members: - address: 10.0.0.10 port: 8080 healthCheck: intervalSeconds: 10 timeoutSeconds: 5 healthyThreshold: 2 unhealthyThreshold: 2 loadBalancerV2UpdateRequest: description: A request to update a load balancer. content: application/json: schema: $ref: "#/components/schemas/loadBalancerV2Update" example: metadata: name: web-lb description: Public TCP load balancer tags: - name: service value: ingress spec: publicIP: true listeners: - name: http protocol: tcp port: 80 allowedCidrs: - 0.0.0.0/0 idleTimeoutSeconds: 30 pool: proxyProtocolV2: false members: - address: 10.0.0.10 port: 8080 healthCheck: intervalSeconds: 10 timeoutSeconds: 5 healthyThreshold: 2 unhealthyThreshold: 2 sshCertificateAuthorityV2CreateRequest: description: A request for an SSH certificate authority. content: application/json: schema: $ref: "#/components/schemas/sshCertificateAuthorityV2Create" example: metadata: name: ssh-ca-name description: A verbose description tags: - name: cluster-id value: 9361402c-f998-49cc-ab21-9bb99afcfde8 spec: organizationId: 161b9d5a-701d-4fea-848d-0e345edf16e9 projectId: f113be96-4dd2-4c14-9c0e-e96c500f21e0 publicKey: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBuildOnlyTrustAnchor comment serverRequest: description: A request for a server. content: application/json: schema: $ref: "#/components/schemas/serverWrite" example: metadata: name: server-name description: A verbose description tags: - name: tag-name value: tag-value spec: flavorId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d imageId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d securityGroups: - id: 9a8c6370-4065-4d4a-9da0-7678df40cd9d - id: 9a8c6370-4065-4d4a-9da0-7678df40cd9e publicIPAllocation: enabled: true networks: - id: 9a8c6370-4065-4d4a-9da0-7678df40cd9d allowedAddressPairs: - cidr: 192.168.192.0/24 userData: I2Nsb3VkLWNvbmZpZwpib290Y21kOgogLSBlY2hvIDE5Mi4xNjguMi45OSBteWhvc3QgPj4gL2V0Yy9ob3N0cwpwYWNrYWdlX3VwZ3JhZGU6IHRydWUKcGFja2FnZXM6CiAtIHZpbQo= serverV2CreateRequest: description: A request for a server. content: application/json: schema: $ref: "#/components/schemas/serverV2Create" example: metadata: name: server-name description: A verbose description tags: - name: tag-name value: tag-value spec: networkId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d flavorId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d imageId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d networking: securityGroups: - 9a8c6370-4065-4d4a-9da0-7678df40cd9d - 9a8c6370-4065-4d4a-9da0-7678df40cd9e publicIP: true allowedSourceAddresses: - 192.168.192.0/24 userData: I2Nsb3VkLWNvbmZpZwpib290Y21kOgogLSBlY2hvIDE5Mi4xNjguMi45OSBteWhvc3QgPj4gL2V0Yy9ob3N0cwpwYWNrYWdlX3VwZ3JhZGU6IHRydWUKcGFja2FnZXM6CiAtIHZpbQo= serverV2UpdateRequest: description: A request for a server. content: application/json: schema: $ref: "#/components/schemas/serverV2Update" example: metadata: name: server-name description: A verbose description tags: - name: tag-name value: tag-value spec: flavorId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d imageId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d networking: securityGroups: - 9a8c6370-4065-4d4a-9da0-7678df40cd9d - 9a8c6370-4065-4d4a-9da0-7678df40cd9e publicIP: true allowedSourceAddresses: - 192.168.192.0/24 userData: I2Nsb3VkLWNvbmZpZwpib290Y21kOgogLSBlY2hvIDE5Mi4xNjguMi45OSBteWhvc3QgPj4gL2V0Yy9ob3N0cwpwYWNrYWdlX3VwZ3JhZGU6IHRydWUKcGFja2FnZXM6CiAtIHZpbQo= serverProviderCreateGateRequest: description: A request to satisfy a provider-create gate. content: application/json: schema: $ref: "#/components/schemas/serverProviderCreateGateAction" example: conditionType: example.unikorn-cloud.org/pre-create-ready reason: ExternalStatePrepared message: External state required before provider create is ready. volumeV2CreateRequest: description: A request to create a volume. content: application/json: schema: $ref: "#/components/schemas/volumeV2Create" example: metadata: name: database-data description: Persistent database storage tags: - name: environment value: production spec: networkId: 61f0ad85-3001-41cb-824a-e6a047668dfe volumeClassId: 44444444-4444-4444-4444-444444444444 sizeGiB: 200 volumeV2UpdateRequest: description: A request to update a volume's metadata and tags. content: application/json: schema: $ref: "#/components/schemas/volumeV2Update" example: metadata: name: database-data description: Persistent production database storage tags: - name: environment value: production snapshotServerRequest: description: A request to create an image by snapshoting a server. content: application/json: schema: $ref: "#/components/schemas/snapshotCreate" example: metadata: name: ubu2204-v1.25.6-gpu-525.85.05-7ced4154 spec: {} storageV2CreateRequest: description: A request for storage. content: application/json: schema: $ref: "#/components/schemas/storageV2Create" example: metadata: name: storage-name description: A verbose description tags: - name: tag-name value: tag-value spec: organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c storageClassId: c7568e2d-f9ab-453d-9a3a-51375f78426b regionId: d891dbf0-0a01-4efc-ae3a-5d77f6d3424b sizeGiB: 200 storageType: NFS: rootSquash: true storageV2UpdateRequest: description: A request to update a storage. content: application/json: schema: $ref: "#/components/schemas/storageV2Update" example: metadata: name: storage-name description: A verbose description tags: - name: tag-name value: tag-value spec: sizeGiB: 200 storageType: NFS: rootSquash: true posixAcl: false atimeUpdateIntervalSeconds: 0 attachments: networkIds: - 903b5fba-8eb0-4016-a854-b8f716bcd9bb responses: regionsResponse: description: A list of regions. content: application/json: schema: $ref: "#/components/schemas/regions" example: - metadata: id: c7568e2d-f9ab-453d-9a3a-51375f78426b name: uk-west-1 description: A top secret datacenter somewhere in the UK creationTime: 2023-07-31T10:45:45Z provisioningStatus: provisioned healthStatus: healthy spec: type: openstack features: physicalNetworks: true regionDetailResponse: description: A detailed description of the region. content: application/json: schema: $ref: "#/components/schemas/regionDetailRead" example: metadata: id: c7568e2d-f9ab-453d-9a3a-51375f78426b name: uk-west description: A top secret datacenter somewhere in the UK creationTime: 2023-07-31T10:45:45Z provisioningStatus: provisioned healthStatus: healthy spec: type: kubernetes kubernetes: kubeconfig: Zm9v features: physicalNetworks: false imagesResponse: description: A list of images that are compatible with this platform. content: application/json: schema: $ref: "#/components/schemas/images" example: - metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: ubu2204-v1.25.6-gpu-525.85.05-7ced4154 creationTime: 2023-02-22T12:04:13Z spec: architecture: x86_64 sizeGiB: 10 virtualization: virtualized os: kernel: linux family: debian distro: ubuntu variant: server codename: noble version: "24.04" softwareVersions: kubernetes: v1.25.6 gpu: vendor: NVIDIA driver: 525.85.05 models: - A100 - H100 - H200 status: state: ready imageResponse: description: An image that can be used on this platform. content: application/json: schema: $ref: "#/components/schemas/image" example: metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: ubu2204-v1.25.6-gpu-525.85.05-7ced4154 creationTime: 2023-02-22T12:04:13Z spec: architecture: x86_64 sizeGiB: 10 virtualization: virtualized os: kernel: linux family: debian distro: ubuntu variant: server codename: noble version: "24.04" softwareVersions: kubernetes: v1.25.6 gpu: vendor: NVIDIA driver: 525.85.05 models: - A100 - H100 - H200 status: state: ready flavorsResponse: description: A list of flavors. content: application/json: schema: $ref: "#/components/schemas/flavors" example: - metadata: id: 9a8c6370-4065-4d4a-9da0-7678df40cd9d name: g.4.highmem.a100.1g.10gb creationTime: 1970-01-01T00:00:00Z spec: architecture: x86_64 cpus: 4 cpuFamily: Intel Xeon Platinum 8160T (Skylake) disk: 20 memory: 32 gpu: vendor: AMD model: Instinct MI250 memory: 64 physicalCount: 1 logicalCount: 2 identityResponse: description: An identity response. content: application/json: schema: $ref: "#/components/schemas/identityRead" example: metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: undefined organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy spec: regionId: d891dbf0-0a01-4efc-ae3a-5d77f6d3424b type: openstack openstack: cloud: default cloudConfig: dGhpcyBpcyBhIHRlc3QK projectId: eb9c92d937464d14bf87e50fa726380d userId: a19678a28126497dba24b54c96a064fa sshKeyNmae: foo identitiesResponse: description: A list of identites. content: application/json: schema: $ref: "#/components/schemas/identitiesRead" example: - metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: undefined organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy spec: regionId: d891dbf0-0a01-4efc-ae3a-5d77f6d3424b type: openstack openstack: cloud: default cloudConfig: dGhpcyBpcyBhIHRlc3QK projectId: eb9c92d937464d14bf87e50fa726380d userId: a19678a28126497dba24b54c96a064fa sshKeyNmae: foo networkResponse: description: A network. content: application/json: schema: $ref: "#/components/schemas/networkRead" example: metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: undefined organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy spec: regionId: d891dbf0-0a01-4efc-ae3a-5d77f6d3424b prefix: 192.168.0.0/24 dnsNameservers: - 8.8.8.8 type: openstack openstack: vlanId: 1024 networkId: 824e8c4c-5858-4b02-9906-390e34561bf3 networksResponse: description: A list of networks. content: application/json: schema: $ref: "#/components/schemas/networksRead" example: - metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: undefined organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy spec: regionId: d891dbf0-0a01-4efc-ae3a-5d77f6d3424b prefix: 192.168.0.0/24 dnsNameservers: - 8.8.8.8 type: openstack openstack: vlanId: 1024 networkId: 824e8c4c-5858-4b02-9906-390e34561bf3 networkV2Response: description: A layer 3 network. content: application/json: schema: $ref: "#/components/schemas/networkV2Read" example: metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: my-network organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy spec: dnsNameservers: - 8.8.8.8 status: regionId: d891dbf0-0a01-4efc-ae3a-5d77f6d3424b prefix: 192.168.0.0/24 reservations: prefixLength: 25 providerReservedPrefixLength: 28 networksV2Response: description: A list of layer 3 networks. content: application/json: schema: $ref: "#/components/schemas/networksV2Read" example: - metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: my-network organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy spec: dnsNameservers: - 8.8.8.8 status: regionId: d891dbf0-0a01-4efc-ae3a-5d77f6d3424b prefix: 192.168.0.0/24 reservations: prefixLength: 25 providerReservedPrefixLength: 28 externalNetworksResponse: description: A list of valid external networks. content: application/json: schema: $ref: "#/components/schemas/externalNetworks" example: - id: c3f92716-1fdc-4b7b-906e-4fe0154dfcdf name: foo securityGroupResponse: description: A security group. content: application/json: schema: $ref: "#/components/schemas/securityGroupRead" example: metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: undefined organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy spec: rules: - direction: ingress protocol: tcp port: number: 80 cidr: 172.16.0.0/12 securityGroupsResponse: description: A list of security groups. content: application/json: schema: $ref: "#/components/schemas/securityGroupsRead" example: - metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: undefined organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy spec: rules: - direction: ingress protocol: tcp port: number: 80 cidr: 172.16.0.0/12 securityGroupV2Response: description: A security group. content: application/json: schema: $ref: "#/components/schemas/securityGroupV2Read" example: metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: undefined organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy spec: rules: - direction: ingress protocol: tcp port: 80 cidr: 172.16.0.0/12 status: regionId: ba39bff5-b0d8-4c60-89e5-ed1104356b4a networkId: 61f0ad85-3001-41cb-824a-e6a047668dfe securityGroupsV2Response: description: A list of security groups. content: application/json: schema: $ref: "#/components/schemas/securityGroupsV2Read" example: - metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: undefined organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy spec: rules: - direction: ingress protocol: tcp port: 80 cidr: 172.16.0.0/12 status: regionId: ba39bff5-b0d8-4c60-89e5-ed1104356b4a networkId: 61f0ad85-3001-41cb-824a-e6a047668dfe loadBalancerV2Response: description: A load balancer. content: application/json: schema: $ref: "#/components/schemas/loadBalancerV2Read" example: metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: web-lb organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: pending healthStatus: healthy spec: publicIP: true listeners: - name: http protocol: tcp port: 80 allowedCidrs: - 0.0.0.0/0 idleTimeoutSeconds: 30 pool: proxyProtocolV2: false members: - address: 10.0.0.10 port: 8080 healthCheck: intervalSeconds: 10 timeoutSeconds: 5 healthyThreshold: 2 unhealthyThreshold: 2 status: regionId: d891dbf0-0a01-4efc-ae3a-5d77f6d3424b networkId: 61f0ad85-3001-41cb-824a-e6a047668dfe vipAddress: 192.168.10.20 publicIP: 203.0.113.10 loadBalancersV2Response: description: A list of load balancers. content: application/json: schema: $ref: "#/components/schemas/loadBalancersV2Read" example: - metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: web-lb organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: pending healthStatus: healthy spec: publicIP: true listeners: - name: http protocol: tcp port: 80 allowedCidrs: - 0.0.0.0/0 idleTimeoutSeconds: 30 pool: proxyProtocolV2: false members: - address: 10.0.0.10 port: 8080 healthCheck: intervalSeconds: 10 timeoutSeconds: 5 healthyThreshold: 2 unhealthyThreshold: 2 status: regionId: d891dbf0-0a01-4efc-ae3a-5d77f6d3424b networkId: 61f0ad85-3001-41cb-824a-e6a047668dfe vipAddress: 192.168.10.20 publicIP: 203.0.113.10 sshCertificateAuthorityV2Response: description: An SSH certificate authority. content: application/json: schema: $ref: "#/components/schemas/sshCertificateAuthorityV2Read" example: metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: undefined organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy spec: publicKey: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBuildOnlyTrustAnchor comment sshCertificateAuthoritiesV2Response: description: A list of SSH certificate authorities. content: application/json: schema: $ref: "#/components/schemas/sshCertificateAuthoritiesV2Read" example: - metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: undefined organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy spec: publicKey: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBuildOnlyTrustAnchor comment serverResponse: description: A server. content: application/json: schema: $ref: "#/components/schemas/serverRead" example: metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: server-name organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy tags: - name: tag-name value: tag-value spec: flavorId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d imageId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d securityGroups: - id: 9a8c6370-4065-4d4a-9da0-7678df40cd9d - id: 9a8c6370-4065-4d4a-9da0-7678df40cd9e publicIPAllocation: enabled: true networks: - id: 9a8c6370-4065-4d4a-9da0-7678df40cd9d userData: I2Nsb3VkLWNvbmZpZwpib290Y21kOgogLSBlY2hvIDE5Mi4xNjguMi45OSBteWhvc3QgPj4gL2V0Yy9ob3N0cwpwYWNrYWdlX3VwZ3JhZGU6IHRydWUKcGFja2FnZXM6CiAtIHZpbQo= status: phase: Running privateIP: 192.168.1.50 publicIP: 142.250.66.196 serversResponse: description: A list of servers. content: application/json: schema: $ref: "#/components/schemas/serversRead" example: - metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: server-name organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy tags: - name: tag-name value: tag-value spec: flavorId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d imageId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d securityGroups: - id: 9a8c6370-4065-4d4a-9da0-7678df40cd9d - id: 9a8c6370-4065-4d4a-9da0-7678df40cd9e publicIPAllocation: enabled: true networks: - id: 9a8c6370-4065-4d4a-9da0-7678df40cd9d userData: I2Nsb3VkLWNvbmZpZwpib290Y21kOgogLSBlY2hvIDE5Mi4xNjguMi45OSBteWhvc3QgPj4gL2V0Yy9ob3N0cwpwYWNrYWdlX3VwZ3JhZGU6IHRydWUKcGFja2FnZXM6CiAtIHZpbQo= status: phase: Running privateIP: 192.168.1.50 publicIP: 142.250.66.196 serverV2Response: description: A server. content: application/json: schema: $ref: "#/components/schemas/serverV2Read" example: metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: server-name organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy tags: - name: tag-name value: tag-value spec: flavorId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d imageId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d metworking: securityGroups: - 9a8c6370-4065-4d4a-9da0-7678df40cd9d - 9a8c6370-4065-4d4a-9da0-7678df40cd9e publicIP: true allowedSourceAddresses: - 192.168.192.0/24 userData: I2Nsb3VkLWNvbmZpZwpib290Y21kOgogLSBlY2hvIDE5Mi4xNjguMi45OSBteWhvc3QgPj4gL2V0Yy9ob3N0cwpwYWNrYWdlX3VwZ3JhZGU6IHRydWUKcGFja2FnZXM6CiAtIHZpbQo= status: regionId: ba39bff5-b0d8-4c60-89e5-ed1104356b4a networkId: 61f0ad85-3001-41cb-824a-e6a047668dfe powerState: Running privateIP: 192.168.1.50 publicIP: 142.250.66.196 macAddress: fa:16:3e:12:34:56 serversV2Response: description: A list of servers. content: application/json: schema: $ref: "#/components/schemas/serversV2Read" example: - metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: server-name organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy tags: - name: tag-name value: tag-value spec: flavorId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d imageId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d metworking: securityGroups: - 9a8c6370-4065-4d4a-9da0-7678df40cd9d - 9a8c6370-4065-4d4a-9da0-7678df40cd9e publicIP: true allowedSourceAddresses: - 192.168.192.0/24 userData: I2Nsb3VkLWNvbmZpZwpib290Y21kOgogLSBlY2hvIDE5Mi4xNjguMi45OSBteWhvc3QgPj4gL2V0Yy9ob3N0cwpwYWNrYWdlX3VwZ3JhZGU6IHRydWUKcGFja2FnZXM6CiAtIHZpbQo= status: regionId: ba39bff5-b0d8-4c60-89e5-ed1104356b4a networkId: 61f0ad85-3001-41cb-824a-e6a047668dfe powerState: Running privateIP: 192.168.1.50 publicIP: 142.250.66.196 macAddress: fa:16:3e:12:34:56 volumeV2Response: description: A volume. content: application/json: schema: $ref: "#/components/schemas/volumeV2Read" example: metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: database-data organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2026-08-10T12:00:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy tags: - name: environment value: production spec: networkId: 61f0ad85-3001-41cb-824a-e6a047668dfe volumeClassId: 44444444-4444-4444-4444-444444444444 sizeGiB: 200 status: regionId: ba39bff5-b0d8-4c60-89e5-ed1104356b4a sizeGiB: 200 volumesV2Response: description: A list of volumes. content: application/json: schema: $ref: "#/components/schemas/volumesV2Read" example: - metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: database-data organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2026-08-10T12:00:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy tags: - name: environment value: production spec: networkId: 61f0ad85-3001-41cb-824a-e6a047668dfe volumeClassId: 44444444-4444-4444-4444-444444444444 sizeGiB: 200 status: regionId: ba39bff5-b0d8-4c60-89e5-ed1104356b4a sizeGiB: 200 consoleSessionResponse: description: A console session response. content: application/json: schema: $ref: "#/components/schemas/consoleSession" example: url: https://compute.glo1.dev.nscale.com:6080/vnc_lite.html?path=%3Ftoken%3Dc64ef8be-2e90-4914-83a8-61728664b770 consoleOutputResponse: description: A console output response. content: application/json: schema: $ref: "#/components/schemas/consoleOutput" example: contents: >- Linux version 5.15.0-1086-kvm (buildd@lcy02-amd64-053) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #91-Ubuntu SMP Mon Aug 4 18:41:47 UTC 2025 (Ubuntu 5.15.0-1086.91-kvm 5.15.185) Command line: BOOT_IMAGE=/boot/vmlinuz-5.15.0-1086-kvm root=PARTUUID=16a95af3-5f57-4321-a6af-d006cccb7d04 ro console=tty1 console=ttyS0 panic=-1 sshKeyResponse: description: An SSH key. content: application/json: schema: $ref: "#/components/schemas/sshKey" example: privateKey: |- -----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtz c2gtZWQyNTUxOQAAACCtvR5BFiAX6+UGoPw/uG/U1Da+iN1lNHYWzk8YhPOeUwAA AKAhzCVJIcwlSQAAAAtzc2gtZWQyNTUxOQAAACCtvR5BFiAX6+UGoPw/uG/U1Da+ iN1lNHYWzk8YhPOeUwAAAEClYjYgxFjEM4qh3sl7IS2dpBzSxkRT0NTy9ILygiaA tq29HkEWIBfr5Qag/D+4b9TUNr6I3WU0dhbOTxiE855TAAAAHXVuaWtvcm4gZXBo ZW1lcmFsIGVkMjU1MTkga2V5 -----END OPENSSH PRIVATE KEY----- fileStorageSnapshotV2Response: description: A Manual File Storage Snapshot. content: application/json: schema: $ref: "#/components/schemas/fileStorageSnapshotV2Read" fileStorageSnapshotsV2Response: description: A list of manual file storage snapshots. content: application/json: schema: $ref: "#/components/schemas/fileStorageSnapshotsV2Read" storageV2Response: description: A storage. content: application/json: schema: $ref: "#/components/schemas/storageV2Read" example: metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: storage-name organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy tags: - name: tag-name value: tag-value spec: sizeGiB: 200 storageType: NFS: rootSquash: true posixAcl: false atimeUpdateIntervalSeconds: 0 attachments: networkIds: - 903b5fba-8eb0-4016-a854-b8f716bcd9bb defaultSnapshotProtectionEnabled: true snapshotPolicies: [] status: regionId: ba39bff5-b0d8-4c60-89e5-ed1104356b4a storageClassId: 99659b44-1700-400f-9c6c-cfdb4bb0445c snapshotPolicies: [] usage: capacityBytes: 107374182400 usedBytes: 94489280512 updatedAt: 2026-01-31T12:00:00Z attachments: - networkId: 903b5fba-8eb0-4016-a854-b8f716bcd9bb mountSource: 10.0.0.16:/mnt/nfs provisioningStatus: provisioned mountOptions: remoteports: 10.0.0.16-10.0.0.19 storageListV2Response: description: A list of storages. content: application/json: schema: $ref: "#/components/schemas/storageV2List" example: - metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: storage-name organizationId: 9a8c6370-4065-4d4a-9da0-7678df40cd9d projectId: e36c058a-8eba-4f5b-91f4-f6ffb983795c creationTime: 2024-05-31T14:11:00Z createdBy: john.doe@acme.com provisioningStatus: provisioned healthStatus: healthy tags: - name: tag-name value: tag-value spec: sizeGiB: 200 storageType: NFS: rootSquash: true posixAcl: false atimeUpdateIntervalSeconds: 0 attachments: networkIds: - 903b5fba-8eb0-4016-a854-b8f716bcd9bb defaultSnapshotProtectionEnabled: true snapshotPolicies: [] status: regionId: ba39bff5-b0d8-4c60-89e5-ed1104356b4a storageClassId: 99659b44-1700-400f-9c6c-cfdb4bb0445c snapshotPolicies: [] usage: capacityBytes: 107374182400 usedBytes: 94489280512 updatedAt: 2026-01-31T12:00:00Z attachments: - networkId: 903b5fba-8eb0-4016-a854-b8f716bcd9bb mountSource: 10.0.0.16:/mnt/nfs provisioningStatus: provisioned mountOptions: remoteports: 10.0.0.16-10.0.0.19 storageClassListV2Response: description: A list of storage classes. content: application/json: schema: $ref: "#/components/schemas/storageClassListV2Read" example: - metadata: id: a64f9269-36e0-4312-b8d1-52d93d569b7b name: storage-class-name creationTime: 2024-05-31T14:11:00Z description: A small description of the storage class. provisioningStatus: provisioned healthStatus: healthy spec: regionId: ba39bff5-b0d8-4c60-89e5-ed1104356b4a protocols: - nfsv3 - nfsv4 parallelism: 8 volumeClassListV2Response: description: A list of provider-neutral block-storage volume classes. content: application/json: schema: $ref: "#/components/schemas/volumeClassListV2Read" example: - metadata: id: 44444444-4444-4444-4444-444444444444 name: fast-nvme description: Latency-sensitive encrypted block storage creationTime: 1970-01-01T00:00:00Z spec: regionId: ba39bff5-b0d8-4c60-89e5-ed1104356b4a minimumSizeGiB: 10 maximumSizeGiB: 2048 media: nvme performance: maxIOPS: 25000 maxThroughputMiBps: 500 encrypted: true openidProtectedResourceResponse: description: >- OpenID configuration used to discover authentication servers when hitting a protected endpoint. This is returned to the client when an authorization error is encountered so they can discover how to authenticate. content: application/json: schema: $ref: "#/components/schemas/openidProtectedResource" example: resource: https://endpoint.acme.com authorization_servers: - http://auth.acme.com scopes_supported: - openid - profile - email bearer_methods_supported: - header unauthorizedResponse: description: Authentication failed or the access token has expired. content: application/json: schema: $ref: "#/components/schemas/error" example: error: access_denied error_description: authentication failed trace_id: 57bc14d9bd461f0b5a72db830149b67a forbiddenResponse: description: >- Request was denied by authorization, this may be caused by the authorization token not having the required scope for an API, or the user doesn't have the necessary privileges on the provider platform. content: application/json: schema: $ref: "#/components/schemas/error" example: error: forbidden error_description: user credentials do not have the required privileges trace_id: 57bc14d9bd461f0b5a72db830149b67a internalServerErrorResponse: description: >- An unexpected or unhandled error occurred. This may be a transient error and may succeed on a retry. If this isn't the case, please report it as an issue. content: application/json: schema: $ref: "#/components/schemas/error" example: error: server_error error_description: failed to token claim trace_id: 57bc14d9bd461f0b5a72db830149b67a notFoundResponse: description: Unable to find a resource. content: application/json: schema: $ref: "#/components/schemas/error" example: error: not_found error_description: the requested resource does not exist trace_id: 57bc14d9bd461f0b5a72db830149b67a badRequestResponse: description: |- Request body failed schema validation, or the request does not contain all the required fields. content: application/json: schema: $ref: "#/components/schemas/error" example: error: invalid_request error_description: request body invalid trace_id: 57bc14d9bd461f0b5a72db830149b67a unprocessableContentResponse: description: >- The provided request was syntactically correct but the instruction was unable to be processed due to semantic errors. content: application/json: schema: $ref: "#/components/schemas/error" example: error: unprocessable_content error_description: the request body was in the wrong format trace_id: 57bc14d9bd461f0b5a72db830149b67a acceptedResponse: description: |- The request has been accepted and will be fulfilled asynchronously. You may poll the resource and monitor its provisioning and health status to await completion of the operation. conflictResponse: description: Resource conflicts with another, usually this means they have the same name. content: application/json: schema: $ref: "#/components/schemas/error" example: error: conflict error_description: a resource with the same name already exists trace_id: 57bc14d9bd461f0b5a72db830149b67a serviceVersionResponse: description: Build version information for the running service. content: application/json: schema: $ref: "#/components/schemas/serviceVersionRead" example: name: unikorn-region-server version: v1.16.7 securitySchemes: oauth2Authentication: description: Operation requires OAuth 2.0 bearer token authentication. type: oauth2 flows: authorizationCode: authorizationUrl: https://identity.nks.europe-west4.nscale.com/oauth2/v2/authorization tokenUrl: https://identity.nks.europe-west4.nscale.com/oauth2/v2/token scopes: {}