Oxide External Subnets API
External subnets that can be attached to instances.
External subnets that can be attached to instances.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/oxide-computer:oxide-computer-external-subnets-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Oxide Region External Subnets 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: external-subnets
description: External subnets that can be attached to instances.
externalDocs:
url: http://docs.oxide.computer/api/external-subnets
paths:
/v1/external-subnets:
get:
tags:
- external-subnets
summary: List external subnets
operationId: external_subnet_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/ExternalSubnetResultsPage'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
x-dropshot-pagination:
required:
- project
post:
tags:
- external-subnets
summary: Create external subnet
operationId: external_subnet_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/ExternalSubnetCreate'
required: true
responses:
'201':
description: successful creation
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalSubnet'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
/v1/external-subnets/{external_subnet}:
get:
tags:
- external-subnets
summary: Fetch external subnet
operationId: external_subnet_view
parameters:
- in: path
name: external_subnet
description: Name or ID of the external subnet
required: true
schema:
$ref: '#/components/schemas/NameOrId'
- in: query
name: project
description: Name or ID of the project
schema:
$ref: '#/components/schemas/NameOrId'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalSubnet'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
put:
tags:
- external-subnets
summary: Update external subnet
operationId: external_subnet_update
parameters:
- in: path
name: external_subnet
description: Name or ID of the external subnet
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/ExternalSubnetUpdate'
required: true
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalSubnet'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
delete:
tags:
- external-subnets
summary: Delete external subnet
operationId: external_subnet_delete
parameters:
- in: path
name: external_subnet
description: Name or ID of the external subnet
required: true
schema:
$ref: '#/components/schemas/NameOrId'
- 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/external-subnets/{external_subnet}/attach:
post:
tags:
- external-subnets
summary: Attach external subnet to instance
operationId: external_subnet_attach
parameters:
- in: path
name: external_subnet
description: Name or ID of the external subnet
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/ExternalSubnetAttach'
required: true
responses:
'202':
description: successfully enqueued operation
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalSubnet'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
/v1/external-subnets/{external_subnet}/detach:
post:
tags:
- external-subnets
summary: Detach external subnet from instance
operationId: external_subnet_detach
parameters:
- in: path
name: external_subnet
description: Name or ID of the external subnet
required: true
schema:
$ref: '#/components/schemas/NameOrId'
- in: query
name: project
description: Name or ID of the project
schema:
$ref: '#/components/schemas/NameOrId'
responses:
'202':
description: successfully enqueued operation
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalSubnet'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
components:
schemas:
ExternalSubnetAllocator:
description: Specify how to allocate an external subnet.
oneOf:
- description: Reserve a specific subnet.
type: object
properties:
subnet:
description: The subnet CIDR to reserve. Must be available in the pool.
allOf:
- $ref: '#/components/schemas/IpNet'
type:
type: string
enum:
- explicit
required:
- subnet
- type
- description: Automatically allocate a subnet with the specified prefix length.
type: object
properties:
pool_selector:
description: 'Pool selection.
If omitted, this field uses the silo''s default pool. If the silo has default pools for both IPv4 and IPv6, the request will fail unless `ip_version` is specified in the pool selector.'
default:
ip_version: null
type: auto
allOf:
- $ref: '#/components/schemas/PoolSelector'
prefix_length:
description: The prefix length for the allocated subnet (e.g., 24 for a /24).
type: integer
format: uint8
minimum: 0
type:
type: string
enum:
- auto
required:
- prefix_length
- type
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
IpNet:
x-rust-type:
crate: oxnet
path: oxnet::IpNet
version: 0.1.0
oneOf:
- title: v4
allOf:
- $ref: '#/components/schemas/Ipv4Net'
- title: v6
allOf:
- $ref: '#/components/schemas/Ipv6Net'
Ipv4Net:
example: 192.168.1.0/24
title: An IPv4 subnet
description: An IPv4 subnet, including prefix and prefix length
x-rust-type:
crate: oxnet
path: oxnet::Ipv4Net
version: 0.1.0
type: string
pattern: ^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/([0-9]|1[0-9]|2[0-9]|3[0-2])$
IpVersion:
description: The IP address version.
type: string
enum:
- v4
- v6
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
Name:
title: A name unique within the parent collection
description: Names must begin with a lower case ASCII letter, be composed exclusively of lowercase ASCII, uppercase ASCII, numbers, and '-', and may not end with a '-'. Names cannot be a UUID, but they may contain a UUID. They can be at most 63 characters long.
type: string
pattern: ^(?![0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)^[a-z]([a-zA-Z0-9-]*[a-zA-Z0-9]+)?$
minLength: 1
maxLength: 63
NameOrId:
oneOf:
- title: id
allOf:
- type: string
format: uuid
- title: name
allOf:
- $ref: '#/components/schemas/Name'
ExternalSubnetUpdate:
description: Update an external subnet
type: object
properties:
description:
type:
- string
- 'null'
name:
allOf:
- $ref: '#/components/schemas/Name'
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
ExternalSubnetCreate:
description: Create an external subnet
type: object
properties:
allocator:
description: Subnet allocation method.
allOf:
- $ref: '#/components/schemas/ExternalSubnetAllocator'
description:
type: string
name:
$ref: '#/components/schemas/Name'
required:
- allocator
- description
- name
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
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
Ipv6Net:
example: fd12:3456::/64
title: An IPv6 subnet
description: An IPv6 subnet, including prefix and subnet mask
x-rust-type:
crate: oxnet
path: oxnet::Ipv6Net
version: 0.1.0
type: string
pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8])$
ExternalSubnetAttach:
description: Attach an external subnet to an instance
type: object
properties:
instance:
description: Name or ID of the instance to attach to
allOf:
- $ref: '#/components/schemas/NameOrId'
required:
- instance
responses:
Error:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'