openapi: 3.2.0 info: title: Oxide Region Instances API description: API for interacting with the Oxide control plane contact: url: https://oxide.computer email: api@oxide.computer version: 2026081901.0.0 tags: - name: instances description: Virtual machine instances are the basic unit of computation. These operations are used for provisioning, controlling, and destroying instances. externalDocs: url: http://docs.oxide.computer/api/instances paths: /v1/instances: get: tags: - instances summary: List instances operationId: instance_list parameters: - in: query name: limit description: Maximum number of items returned by a single call schema: type: - integer - 'null' format: uint32 minimum: 1 - in: query name: page_token description: Token returned by previous call to retrieve the subsequent page schema: type: - string - 'null' - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' - in: query name: sort_by schema: $ref: '#/components/schemas/NameOrIdSortMode' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/InstanceResultsPage' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' x-dropshot-pagination: required: - project post: tags: - instances summary: Create instance operationId: instance_create parameters: - in: query name: project description: Name or ID of the project required: true schema: $ref: '#/components/schemas/NameOrId' requestBody: content: application/json: schema: $ref: '#/components/schemas/InstanceCreate' required: true responses: '201': description: successful creation content: application/json: schema: $ref: '#/components/schemas/Instance' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' /v1/instances/{instance}: get: tags: - instances summary: Fetch instance operationId: instance_view parameters: - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/Instance' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' put: tags: - instances summary: Update instance operationId: instance_update parameters: - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' requestBody: content: application/json: schema: $ref: '#/components/schemas/InstanceUpdate' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/Instance' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' delete: tags: - instances summary: Delete instance operationId: instance_delete parameters: - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' responses: '204': description: successful deletion 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' /v1/instances/{instance}/anti-affinity-groups: get: tags: - instances summary: List anti-affinity groups containing instance operationId: instance_anti_affinity_group_list parameters: - in: query name: limit description: Maximum number of items returned by a single call schema: type: - integer - 'null' format: uint32 minimum: 1 - in: query name: page_token description: Token returned by previous call to retrieve the subsequent page schema: type: - string - 'null' - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' - in: query name: sort_by schema: $ref: '#/components/schemas/NameOrIdSortMode' - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/AntiAffinityGroupResultsPage' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' x-dropshot-pagination: required: [] /v1/instances/{instance}/disks: get: tags: - instances summary: List disks for instance operationId: instance_disk_list parameters: - in: query name: limit description: Maximum number of items returned by a single call schema: type: - integer - 'null' format: uint32 minimum: 1 - in: query name: page_token description: Token returned by previous call to retrieve the subsequent page schema: type: - string - 'null' - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' - in: query name: sort_by schema: $ref: '#/components/schemas/NameOrIdSortMode' - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/DiskResultsPage' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' x-dropshot-pagination: required: [] /v1/instances/{instance}/disks/attach: post: tags: - instances summary: Attach disk to instance operationId: instance_disk_attach parameters: - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' requestBody: content: application/json: schema: $ref: '#/components/schemas/DiskPath' required: true responses: '202': description: successfully enqueued operation content: application/json: schema: $ref: '#/components/schemas/Disk' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' /v1/instances/{instance}/disks/detach: post: tags: - instances summary: Detach disk from instance operationId: instance_disk_detach parameters: - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' requestBody: content: application/json: schema: $ref: '#/components/schemas/DiskPath' required: true responses: '202': description: successfully enqueued operation content: application/json: schema: $ref: '#/components/schemas/Disk' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' /v1/instances/{instance}/external-ips: get: tags: - instances summary: List external IP addresses operationId: instance_external_ip_list parameters: - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ExternalIpResultsPage' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' /v1/instances/{instance}/external-ips/ephemeral: post: tags: - instances summary: Allocate and attach ephemeral IP to instance operationId: instance_ephemeral_ip_attach parameters: - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' requestBody: content: application/json: schema: $ref: '#/components/schemas/EphemeralIpCreate' required: true responses: '202': description: successfully enqueued operation content: application/json: schema: $ref: '#/components/schemas/ExternalIp' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' delete: tags: - instances summary: Detach and deallocate ephemeral IP from instance description: When an instance has both IPv4 and IPv6 ephemeral IPs, the `ip_version` query parameter must be specified to identify which IP to detach. operationId: instance_ephemeral_ip_detach parameters: - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' - in: query name: ip_version description: 'The IP version of the ephemeral IP to detach. Required when the instance has both IPv4 and IPv6 ephemeral IPs. If only one ephemeral IP is attached, this field may be omitted.' schema: $ref: '#/components/schemas/IpVersion' - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' responses: '204': description: successful deletion 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' /v1/instances/{instance}/external-subnets: get: tags: - instances summary: List external subnets attached to instance operationId: instance_external_subnet_list parameters: - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ExternalSubnetResultsPage' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' /v1/instances/{instance}/reboot: post: tags: - instances summary: Reboot instance operationId: instance_reboot parameters: - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' responses: '202': description: successfully enqueued operation content: application/json: schema: $ref: '#/components/schemas/Instance' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' /v1/instances/{instance}/serial-console: get: tags: - instances summary: Fetch instance serial console operationId: instance_serial_console parameters: - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' - in: query name: from_start description: Character index in the serial buffer from which to read, counting the bytes output since instance start. If this is not provided, `most_recent` must be provided, and if this *is* provided, `most_recent` must *not* be provided. schema: type: - integer - 'null' format: uint64 minimum: 0 - in: query name: max_bytes description: Maximum number of bytes of buffered serial console contents to return. If the requested range runs to the end of the available buffer, the data returned will be shorter than `max_bytes`. schema: type: - integer - 'null' format: uint64 minimum: 0 - in: query name: most_recent description: Character index in the serial buffer from which to read, counting *backward* from the most recently buffered data retrieved from the instance. (See note on `from_start` about mutual exclusivity) schema: type: - integer - 'null' format: uint64 minimum: 0 - in: query name: project description: Name or ID of the project, only required if `instance` is provided as a `Name` schema: $ref: '#/components/schemas/NameOrId' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/InstanceSerialConsoleData' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' /v1/instances/{instance}/serial-console/stream: get: tags: - instances summary: Stream instance serial console operationId: instance_serial_console_stream parameters: - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' - in: query name: most_recent description: Character index in the serial buffer from which to read, counting *backward* from the most recently buffered data retrieved from the instance. schema: type: - integer - 'null' format: uint64 minimum: 0 - in: query name: project description: Name or ID of the project, only required if `instance` is provided as a `Name` schema: $ref: '#/components/schemas/NameOrId' responses: '101': description: Negotiating protocol upgrade from HTTP/1.1 to WebSocket 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' x-dropshot-websocket: {} /v1/instances/{instance}/ssh-public-keys: get: tags: - instances summary: List SSH public keys for instance description: List SSH public keys injected via cloud-init during instance creation. Note that this list is a snapshot in time and will not reflect updates made after the instance is created. operationId: instance_ssh_public_key_list parameters: - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' - in: query name: limit description: Maximum number of items returned by a single call schema: type: - integer - 'null' format: uint32 minimum: 1 - in: query name: page_token description: Token returned by previous call to retrieve the subsequent page schema: type: - string - 'null' - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' - in: query name: sort_by schema: $ref: '#/components/schemas/NameOrIdSortMode' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/SshKeyResultsPage' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' x-dropshot-pagination: required: [] /v1/instances/{instance}/start: post: tags: - instances summary: Boot instance operationId: instance_start parameters: - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' responses: '202': description: successfully enqueued operation content: application/json: schema: $ref: '#/components/schemas/Instance' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' /v1/instances/{instance}/stop: post: tags: - instances summary: Stop instance operationId: instance_stop parameters: - in: query name: project description: Name or ID of the project schema: $ref: '#/components/schemas/NameOrId' - in: path name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' responses: '202': description: successfully enqueued operation content: application/json: schema: $ref: '#/components/schemas/Instance' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' /v1/network-interfaces: get: tags: - instances summary: List network interfaces operationId: instance_network_interface_list parameters: - in: query name: instance description: Name or ID of the instance schema: $ref: '#/components/schemas/NameOrId' - in: query name: limit description: Maximum number of items returned by a single call schema: type: - integer - 'null' format: uint32 minimum: 1 - in: query name: page_token description: Token returned by previous call to retrieve the subsequent page schema: type: - string - 'null' - in: query name: project description: Name or ID of the project, only required if `instance` is provided as a `Name` schema: $ref: '#/components/schemas/NameOrId' - in: query name: sort_by schema: $ref: '#/components/schemas/NameOrIdSortMode' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/InstanceNetworkInterfaceResultsPage' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' x-dropshot-pagination: required: - instance post: tags: - instances summary: Create network interface operationId: instance_network_interface_create parameters: - in: query name: instance description: Name or ID of the instance required: true schema: $ref: '#/components/schemas/NameOrId' - in: query name: project description: Name or ID of the project, only required if `instance` is provided as a `Name` schema: $ref: '#/components/schemas/NameOrId' requestBody: content: application/json: schema: $ref: '#/components/schemas/InstanceNetworkInterfaceCreate' required: true responses: '201': description: successful creation content: application/json: schema: $ref: '#/components/schemas/InstanceNetworkInterface' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' /v1/network-interfaces/{interface}: get: tags: - instances summary: Fetch network interface operationId: instance_network_interface_view parameters: - in: path name: interface description: Name or ID of the network interface required: true schema: $ref: '#/components/schemas/NameOrId' - in: query name: instance description: Name or ID of the instance schema: $ref: '#/components/schemas/NameOrId' - in: query name: project description: Name or ID of the project, only required if `instance` is provided as a `Name` schema: $ref: '#/components/schemas/NameOrId' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/InstanceNetworkInterface' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' put: tags: - instances summary: Update network interface operationId: instance_network_interface_update parameters: - in: path name: interface description: Name or ID of the network interface required: true schema: $ref: '#/components/schemas/NameOrId' - in: query name: instance description: Name or ID of the instance schema: $ref: '#/components/schemas/NameOrId' - in: query name: project description: Name or ID of the project, only required if `instance` is provided as a `Name` schema: $ref: '#/components/schemas/NameOrId' requestBody: content: application/json: schema: $ref: '#/components/schemas/InstanceNetworkInterfaceUpdate' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/InstanceNetworkInterface' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' delete: tags: - instances summary: Delete network interface description: Note that the primary interface for an instance cannot be deleted if there are any secondary interfaces. A new primary interface must be designated first. The primary interface can be deleted if there are no secondary interfaces. operationId: instance_network_interface_delete parameters: - in: path name: interface description: Name or ID of the network interface required: true schema: $ref: '#/components/schemas/NameOrId' - in: query name: instance description: Name or ID of the instance schema: $ref: '#/components/schemas/NameOrId' - in: query name: project description: Name or ID of the project, only required if `instance` is provided as a `Name` schema: $ref: '#/components/schemas/NameOrId' responses: '204': description: successful deletion 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' components: schemas: Ipv4Assignment: description: How a VPC-private IP address is assigned to a network interface. oneOf: - description: Automatically assign an IP address from the VPC Subnet. type: object properties: type: type: string enum: - auto required: - type - description: Explicitly assign a specific address, if available. type: object properties: type: type: string enum: - explicit value: type: string format: ipv4 required: - type - value DiskPath: type: object properties: disk: description: Name or ID of the disk allOf: - $ref: '#/components/schemas/NameOrId' required: - disk InstanceNetworkInterfaceResultsPage: description: A single page of results type: object properties: items: description: list of items on this page of results type: array items: $ref: '#/components/schemas/InstanceNetworkInterface' next_page: description: token used to fetch the next page of results (if any) type: - string - 'null' required: - items ExternalIpCreate: description: Parameters for creating an external IP address for instances. oneOf: - description: An IP address providing both inbound and outbound access. The address is automatically assigned from a pool. type: object properties: pool_selector: description: Pool to allocate from. default: ip_version: null type: auto allOf: - $ref: '#/components/schemas/PoolSelector' type: type: string enum: - ephemeral required: - type - description: 'An IP address providing both inbound and outbound access. The address is an existing floating IP object assigned to the current project. The floating IP must not be in use by another instance or service.' type: object properties: floating_ip: $ref: '#/components/schemas/NameOrId' type: type: string enum: - floating required: - floating_ip - type AntiAffinityGroup: description: View of an Anti-Affinity Group type: object properties: description: description: Human-readable free-form text about a resource type: string failure_domain: $ref: '#/components/schemas/FailureDomain' id: description: Unique, immutable, system-controlled identifier for each resource type: string format: uuid name: description: Unique, mutable, user-controlled identifier for each resource allOf: - $ref: '#/components/schemas/Name' policy: $ref: '#/components/schemas/AffinityPolicy' project_id: type: string format: uuid time_created: description: Timestamp when this resource was created type: string format: date-time time_modified: description: Timestamp when this resource was last modified type: string format: date-time required: - description - failure_domain - id - name - policy - project_id - time_created - time_modified FailureDomain: description: Describes the scope of affinity for the purposes of co-location. oneOf: - description: Instances are considered co-located if they are on the same sled type: string enum: - sled DiskResultsPage: description: A single page of results type: object properties: items: description: list of items on this page of results type: array items: $ref: '#/components/schemas/Disk' next_page: description: token used to fetch the next page of results (if any) type: - string - 'null' required: - items PoolSelector: description: Specify which IP or external subnet pool to allocate from. oneOf: - description: Use the specified pool by name or ID. type: object properties: pool: description: The pool to allocate from. allOf: - $ref: '#/components/schemas/NameOrId' type: type: string enum: - explicit required: - pool - type - description: Use the default pool for the silo. type: object properties: ip_version: description: IP version to use when multiple default pools exist. Required if both IPv4 and IPv6 default pools are configured. default: null allOf: - $ref: '#/components/schemas/IpVersion' type: type: string enum: - auto required: - type PrivateIpStackCreate: description: Create parameters for a network interface's IP stack. oneOf: - description: The interface has only an IPv4 stack. type: object properties: type: type: string enum: - v4 value: $ref: '#/components/schemas/PrivateIpv4StackCreate' required: - type - value - description: The interface has only an IPv6 stack. type: object properties: type: type: string enum: - v6 value: $ref: '#/components/schemas/PrivateIpv6StackCreate' required: - type - value - description: The interface has both an IPv4 and IPv6 stack. type: object properties: type: type: string enum: - dual_stack value: type: object properties: v4: $ref: '#/components/schemas/PrivateIpv4StackCreate' v6: $ref: '#/components/schemas/PrivateIpv6StackCreate' required: - v4 - v6 required: - type - value DiskType: type: string enum: - distributed - local NameOrIdSortMode: description: Supported set of sort modes for scanning by name or id oneOf: - description: Sort in increasing order of "name" type: string enum: - name_ascending - description: Sort in decreasing order of "name" type: string enum: - name_descending - description: Sort in increasing order of "id" type: string enum: - id_ascending DiskState: description: State of a Disk oneOf: - description: Disk is being initialized type: object properties: state: type: string enum: - creating required: - state - description: Disk is ready but detached from any Instance type: object properties: state: type: string enum: - detached required: - state - description: Disk is ready to receive blocks from an external source type: object properties: state: type: string enum: - import_ready required: - state - description: Disk is importing blocks from a URL type: object properties: state: type: string enum: - importing_from_url required: - state - description: Disk is importing blocks from bulk writes type: object properties: state: type: string enum: - importing_from_bulk_writes required: - state - description: Disk is being finalized to state Detached type: object properties: state: type: string enum: - finalizing required: - state - description: Disk is undergoing maintenance type: object properties: state: type: string enum: - maintenance required: - state - description: Disk is being attached to the given Instance type: object properties: instance: type: string format: uuid state: type: string enum: - attaching required: - instance - state - description: Disk is attached to the given Instance type: object properties: instance: type: string format: uuid state: type: string enum: - attached required: - instance - state - description: Disk is being detached from the given Instance type: object properties: instance: type: string format: uuid state: type: string enum: - detaching required: - instance - state - description: Disk has been destroyed type: object properties: state: type: string enum: - destroyed required: - state - description: Disk is unavailable type: object properties: state: type: string enum: - faulted required: - state MulticastGroupIdentifier: title: A multicast group identifier description: Can be a UUID, a name, or an IP address type: string SshKey: description: View of an SSH Key type: object properties: description: description: Human-readable free-form text about a resource type: string id: description: Unique, immutable, system-controlled identifier for each resource type: string format: uuid name: description: Unique, mutable, user-controlled identifier for each resource allOf: - $ref: '#/components/schemas/Name' public_key: description: SSH public key, e.g., `"ssh-ed25519 AAAAC3NzaC..."` type: string silo_user_id: description: The user to whom this key belongs type: string format: uuid time_created: description: Timestamp when this resource was created type: string format: date-time time_modified: description: Timestamp when this resource was last modified type: string format: date-time required: - description - id - name - public_key - silo_user_id - time_created - time_modified InstanceAutoRestartPolicy: description: A policy determining when an instance should be automatically restarted by the control plane. oneOf: - description: The instance should not be automatically restarted by the control plane if it fails. type: string enum: - never - description: If this instance is running and unexpectedly fails (e.g. due to a host software crash or unexpected host reboot), the control plane will make a best-effort attempt to restart it. The control plane may choose not to restart the instance to preserve the overall availability of the system. type: string enum: - best_effort InstanceNetworkInterfaceCreate: description: Create-time parameters for an `InstanceNetworkInterface` type: object properties: description: type: string ip_config: description: 'The IP stack configuration for this interface. If not provided, a default configuration will be used, which creates a dual-stack IPv4 / IPv6 interface.' default: type: dual_stack value: v4: ip: type: auto transit_ips: [] v6: ip: type: auto transit_ips: [] allOf: - $ref: '#/components/schemas/PrivateIpStackCreate' name: $ref: '#/components/schemas/Name' subnet_name: description: The VPC Subnet in which to create the interface. allOf: - $ref: '#/components/schemas/Name' vpc_name: description: The VPC in which to create the interface. allOf: - $ref: '#/components/schemas/Name' required: - description - name - subnet_name - vpc_name MacAddr: example: ff:ff:ff:ff:ff:ff title: A MAC address description: A Media Access Control address, in EUI-48 format type: string pattern: ^([0-9a-fA-F]{0,2}:){5}[0-9a-fA-F]{0,2}$ minLength: 5 maxLength: 17 ByteCount: description: Byte count to express memory or storage capacity. type: integer format: uint64 minimum: 0 PrivateIpv6StackCreate: description: Configuration for a network interface's IPv6 addressing. type: object properties: ip: description: The VPC-private address to assign to the interface. allOf: - $ref: '#/components/schemas/Ipv6Assignment' transit_ips: description: Additional IP networks the interface can send / receive on. default: [] type: array items: $ref: '#/components/schemas/Ipv6Net' required: - ip Error: description: Error information from a response. type: object properties: error_code: type: string message: type: string request_id: type: string required: - message - request_id PrivateIpv4StackCreate: description: Configuration for a network interface's IPv4 addressing. type: object properties: ip: description: The VPC-private address to assign to the interface. allOf: - $ref: '#/components/schemas/Ipv4Assignment' transit_ips: description: Additional IP networks the interface can send / receive on. default: [] type: array items: $ref: '#/components/schemas/Ipv4Net' required: - ip AffinityPolicy: description: 'Affinity policy used to describe "what to do when a request cannot be satisfied" Used for both Affinity and Anti-Affinity Groups' oneOf: - description: 'If the affinity request cannot be satisfied, allow it anyway. This enables a "best-effort" attempt to satisfy the affinity policy.' type: string enum: - allow - description: If the affinity request cannot be satisfied, fail explicitly. type: string enum: - fail EphemeralIpCreate: description: Parameters for creating an ephemeral IP address for an instance. type: object properties: pool_selector: description: Pool to allocate from. default: ip_version: null type: auto allOf: - $ref: '#/components/schemas/PoolSelector' InstanceSerialConsoleData: description: Contents of an Instance's serial console buffer. type: object properties: data: description: The bytes starting from the requested offset up to either the end of the buffer or the request's `max_bytes`. Provided as a u8 array rather than a string, as it may not be UTF-8. type: array items: type: integer format: uint8 minimum: 0 last_byte_offset: description: The absolute offset since boot (suitable for use as `byte_offset` in a subsequent request) of the last byte returned in `data`. type: integer format: uint64 minimum: 0 required: - data - last_byte_offset ExternalSubnetResultsPage: description: A single page of results type: object properties: items: description: list of items on this page of results type: array items: $ref: '#/components/schemas/ExternalSubnet' next_page: description: token used to fetch the next page of results (if any) type: - string - 'null' required: - items Disk: description: View of a Disk type: object properties: block_size: $ref: '#/components/schemas/BlockSize' description: description: Human-readable free-form text about a resource type: string device_path: type: string disk_type: $ref: '#/components/schemas/DiskType' id: description: Unique, immutable, system-controlled identifier for each resource type: string format: uuid image_id: description: ID of image from which disk was created, if any type: - string - 'null' format: uuid name: description: Unique, mutable, user-controlled identifier for each resource allOf: - $ref: '#/components/schemas/Name' project_id: type: string format: uuid read_only: description: Whether or not this disk is read-only. type: boolean size: $ref: '#/components/schemas/ByteCount' snapshot_id: description: ID of snapshot from which disk was created, if any type: - string - 'null' format: uuid state: $ref: '#/components/schemas/DiskState' time_created: description: Timestamp when this resource was created type: string format: date-time time_modified: description: Timestamp when this resource was last modified type: string format: date-time required: - block_size - description - device_path - disk_type - id - name - project_id - read_only - size - state - time_created - time_modified InstanceState: description: 'Running state of an Instance (primarily: booted or stopped) This typically reflects whether it''s starting, running, stopping, or stopped, but also includes states related to the Instance''s lifecycle' oneOf: - description: The instance is being created. type: string enum: - creating - description: The instance is currently starting up. type: string enum: - starting - description: The instance is currently running. type: string enum: - running - description: The instance has been requested to stop and a transition to "Stopped" is imminent. type: string enum: - stopping - description: The instance is currently stopped. type: string enum: - stopped - description: The instance is in the process of rebooting - it will remain in the "rebooting" state until the VM is starting once more. type: string enum: - rebooting - description: The instance is in the process of migrating - it will remain in the "migrating" state until the migration process is complete and the destination propolis is ready to continue execution. type: string enum: - migrating - description: The instance is attempting to recover from a failure. type: string enum: - repairing - description: The instance has encountered a failure. type: string enum: - failed - description: The instance has been deleted. type: string enum: - destroyed NameOrId: oneOf: - title: id allOf: - type: string format: uuid - title: name allOf: - $ref: '#/components/schemas/Name' Ipv6Assignment: description: How a VPC-private IP address is assigned to a network interface. oneOf: - description: Automatically assign an IP address from the VPC Subnet. type: object properties: type: type: string enum: - auto required: - type - description: Explicitly assign a specific address, if available. type: object properties: type: type: string enum: - explicit value: type: string format: ipv6 required: - type - value SshKeyResultsPage: description: A single page of results type: object properties: items: description: list of items on this page of results type: array items: $ref: '#/components/schemas/SshKey' next_page: description: token used to fetch the next page of results (if any) type: - string - 'null' required: - items ExternalSubnet: description: An external subnet allocated from a subnet pool type: object properties: description: description: Human-readable free-form text about a resource type: string id: description: Unique, immutable, system-controlled identifier for each resource type: string format: uuid instance_id: description: The instance this subnet is attached to, if any type: - string - 'null' format: uuid name: description: Unique, mutable, user-controlled identifier for each resource allOf: - $ref: '#/components/schemas/Name' project_id: description: The project this subnet belongs to type: string format: uuid subnet: description: The allocated subnet CIDR allOf: - $ref: '#/components/schemas/IpNet' subnet_pool_id: description: The subnet pool this was allocated from type: string format: uuid subnet_pool_member_id: description: The subnet pool member this subnet corresponds to type: string format: uuid time_created: description: Timestamp when this resource was created type: string format: date-time time_modified: description: Timestamp when this resource was last modified type: string format: date-time required: - description - id - name - project_id - subnet - subnet_pool_id - subnet_pool_member_id - time_created - time_modified InstanceCpuCount: description: The number of CPUs in an Instance type: integer format: uint16 minimum: 0 IpVersion: description: The IP address version. type: string enum: - v4 - v6 MulticastGroupJoinSpec: description: 'Specification for joining a multicast group with optional source filtering. Used in `InstanceCreate` and `InstanceUpdate` to specify multicast group membership along with per-member source IP configuration.' type: object properties: group: description: The multicast group to join, specified by name, UUID, or IP address. allOf: - $ref: '#/components/schemas/MulticastGroupIdentifier' ip_version: description: IP version for pool selection when creating a group by name. Required if both IPv4 and IPv6 default multicast pools are linked. default: null allOf: - $ref: '#/components/schemas/IpVersion' source_ips: description: Source IPs for source-filtered multicast (SSM). Optional for ASM groups, required for SSM groups (232.0.0.0/8, ff3x::/32). default: null type: - array - 'null' items: type: string format: ip required: - group Hostname: title: An RFC-1035-compliant hostname description: A hostname identifies a host on a network, and is usually a dot-delimited sequence of labels, where each label contains only letters, digits, or the hyphen. See RFCs 1035 and 952 for more details. type: string pattern: ^([a-zA-Z0-9]+[a-zA-Z0-9\-]*(?