Oxide Instances API

Virtual machine instances are the basic unit of computation. These operations are used for provisioning, controlling, and destroying instances.

Business capability
IT Infrastructure Management BC-600.50

Operations 24

GET /v1/instances List instances #
POST /v1/instances Create instance #
GET /v1/instances/{instance} Fetch instance #
PUT /v1/instances/{instance} Update instance #
DELETE /v1/instances/{instance} Delete instance #
GET /v1/instances/{instance}/anti-affinity-groups List anti-affinity groups containing instance #
GET /v1/instances/{instance}/disks List disks for instance #
POST /v1/instances/{instance}/disks/attach Attach disk to instance #
POST /v1/instances/{instance}/disks/detach Detach disk from instance #
GET /v1/instances/{instance}/external-ips List external IP addresses #
POST /v1/instances/{instance}/external-ips/ephemeral Allocate and attach ephemeral IP to instance #
DELETE /v1/instances/{instance}/external-ips/ephemeral Detach and deallocate ephemeral IP from instance #
GET /v1/instances/{instance}/external-subnets List external subnets attached to instance #
POST /v1/instances/{instance}/reboot Reboot instance #
GET /v1/instances/{instance}/serial-console Fetch instance serial console #
GET /v1/instances/{instance}/serial-console/stream Stream instance serial console #
GET /v1/instances/{instance}/ssh-public-keys List SSH public keys for instance #
POST /v1/instances/{instance}/start Boot instance #
POST /v1/instances/{instance}/stop Stop instance #
GET /v1/network-interfaces List network interfaces #
POST /v1/network-interfaces Create network interface #
GET /v1/network-interfaces/{interface} Fetch network interface #
PUT /v1/network-interfaces/{interface} Update network interface #
DELETE /v1/network-interfaces/{interface} Delete network interface #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/oxide-computer-instances-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

oxide-computer-instances-api-openapi.yml Raw ↑
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: s

# --- truncated at 32 KB (84 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/oxide-computer/refs/heads/main/openapi/oxide-computer-instances-api-openapi.yml