Oxide Silos API
Silos represent a logical partition of users and resources.
Silos represent a logical partition of users and resources.
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-silos-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 Silos 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: silos
description: Silos represent a logical partition of users and resources.
externalDocs:
url: http://docs.oxide.computer/api/silos
paths:
/v1/auth-settings:
get:
tags:
- silos
summary: Fetch current silo's auth settings
operationId: auth_settings_view
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SiloAuthSettings'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
put:
tags:
- silos
summary: Update current silo's auth settings
operationId: auth_settings_update
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SiloAuthSettingsUpdate'
required: true
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SiloAuthSettings'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
/v1/certificates:
get:
tags:
- silos
summary: List certificates for external endpoints
description: Returns a list of TLS certificates used for the external API (for the current Silo). These are sorted by creation date, with the most recent certificates appearing first.
operationId: certificate_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: sort_by
schema:
$ref: '#/components/schemas/NameOrIdSortMode'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/CertificateResultsPage'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
x-dropshot-pagination:
required: []
post:
tags:
- silos
summary: Create system-wide x.509 certificate
description: This certificate is automatically used by the Oxide Control plane to serve external connections.
operationId: certificate_create
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CertificateCreate'
required: true
responses:
'201':
description: successful creation
content:
application/json:
schema:
$ref: '#/components/schemas/Certificate'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
/v1/certificates/{certificate}:
get:
tags:
- silos
summary: Fetch certificate
description: Returns the details of a specific certificate
operationId: certificate_view
parameters:
- in: path
name: certificate
description: Name or ID of the certificate
required: true
schema:
$ref: '#/components/schemas/NameOrId'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Certificate'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
delete:
tags:
- silos
summary: Delete certificate
description: Permanently delete a certificate. This operation cannot be undone.
operationId: certificate_delete
parameters:
- in: path
name: certificate
description: Name or ID of the certificate
required: true
schema:
$ref: '#/components/schemas/NameOrId'
responses:
'204':
description: successful deletion
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
/v1/groups:
get:
tags:
- silos
summary: List groups
operationId: 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: sort_by
schema:
$ref: '#/components/schemas/IdSortMode'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/GroupResultsPage'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
x-dropshot-pagination:
required: []
/v1/groups/{group_id}:
get:
tags:
- silos
summary: Fetch group
operationId: group_view
parameters:
- in: path
name: group_id
description: ID of the group
required: true
schema:
type: string
format: uuid
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Group'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
/v1/policy:
get:
tags:
- silos
summary: Fetch current silo's IAM policy
operationId: policy_view
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SiloRolePolicy'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
put:
tags:
- silos
summary: Update current silo's IAM policy
operationId: policy_update
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SiloRolePolicy'
required: true
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SiloRolePolicy'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
/v1/users:
get:
tags:
- silos
summary: List users
operationId: user_list
parameters:
- in: query
name: group
schema:
type:
- string
- 'null'
format: uuid
- 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: sort_by
schema:
$ref: '#/components/schemas/IdSortMode'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/UserResultsPage'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
x-dropshot-pagination:
required: []
/v1/users/{user_id}:
get:
tags:
- silos
summary: Fetch user
operationId: user_view
parameters:
- in: path
name: user_id
description: ID of the user
required: true
schema:
type: string
format: uuid
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/User'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
/v1/users/{user_id}/access-tokens:
get:
tags:
- silos
summary: List user's access tokens
operationId: user_token_list
parameters:
- in: path
name: user_id
description: ID of the user
required: true
schema:
type: string
format: uuid
- 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: sort_by
schema:
$ref: '#/components/schemas/IdSortMode'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/DeviceAccessTokenResultsPage'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
x-dropshot-pagination:
required: []
/v1/users/{user_id}/logout:
post:
tags:
- silos
summary: Log user out
description: Silo admins can use this endpoint to log the specified user out by deleting all of their tokens AND sessions. This cannot be undone.
operationId: user_logout
parameters:
- in: path
name: user_id
description: ID of the user
required: true
schema:
type: string
format: uuid
responses:
'204':
description: resource updated
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
/v1/users/{user_id}/sessions:
get:
tags:
- silos
summary: List user's console sessions
operationId: user_session_list
parameters:
- in: path
name: user_id
description: ID of the user
required: true
schema:
type: string
format: uuid
- 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: sort_by
schema:
$ref: '#/components/schemas/IdSortMode'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ConsoleSessionResultsPage'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
x-dropshot-pagination:
required: []
/v1/utilization:
get:
tags:
- silos
summary: Fetch resource utilization for user's current silo
operationId: utilization_view
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Utilization'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
components:
responses:
Error:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
ByteCount:
description: Byte count to express memory or storage capacity.
type: integer
format: uint64
minimum: 0
CertificateCreate:
description: Create-time parameters for a `Certificate`
type: object
properties:
cert:
description: PEM-formatted string containing public certificate chain
type: string
description:
type: string
key:
description: PEM-formatted string containing private key
type: string
name:
$ref: '#/components/schemas/Name'
service:
description: The service using this certificate
allOf:
- $ref: '#/components/schemas/ServiceUsingCertificate'
required:
- cert
- description
- key
- name
- service
DeviceAccessToken:
description: View of a device access token
type: object
properties:
id:
description: 'A unique, immutable, system-controlled identifier for the token.
Note that this ID is not the bearer token itself, which starts with "oxide-token-".'
type: string
format: uuid
time_created:
type: string
format: date-time
time_expires:
description: Expiration timestamp. A null value means the token does not automatically expire.
type:
- string
- 'null'
format: date-time
required:
- id
- time_created
User:
description: View of a User
type: object
properties:
display_name:
description: Human-readable name that can identify the user
type: string
id:
type: string
format: uuid
silo_id:
description: Uuid of the silo to which this user belongs
type: string
format: uuid
time_created:
description: Timestamp when this user was created
type: string
format: date-time
time_modified:
description: Timestamp when this user was last modified
type: string
format: date-time
required:
- display_name
- id
- silo_id
- time_created
- time_modified
Group:
description: View of a Group
type: object
properties:
display_name:
description: Human-readable name that can identify the group
type: string
id:
type: string
format: uuid
silo_id:
description: Uuid of the silo to which this group belongs
type: string
format: uuid
time_created:
description: Timestamp when this group was created
type: string
format: date-time
time_modified:
description: Timestamp when this group was last modified
type: string
format: date-time
required:
- display_name
- id
- silo_id
- time_created
- time_modified
ConsoleSession:
description: View of a console session
type: object
properties:
id:
description: A unique, immutable, system-controlled identifier for the session
type: string
format: uuid
time_created:
type: string
format: date-time
time_last_used:
type: string
format: date-time
required:
- id
- time_created
- time_last_used
SiloRoleRoleAssignment:
description: 'Describes the assignment of a particular role on a particular resource to a particular identity (user, group, etc.)
The resource is not part of this structure. Rather, `RoleAssignment`s are put into a `Policy` and that Policy is applied to a particular resource.'
type: object
properties:
identity_id:
type: string
format: uuid
identity_type:
$ref: '#/components/schemas/IdentityType'
role_name:
$ref: '#/components/schemas/SiloRole'
required:
- identity_id
- identity_type
- role_name
SiloRole:
type: string
enum:
- admin
- collaborator
- limited_collaborator
- viewer
SiloRolePolicy:
description: 'Policy for a particular resource
Note that the Policy only describes access granted explicitly for this resource. The policies of parent resources can also cause a user to have access to this resource.'
type: object
properties:
role_assignments:
description: Roles directly assigned on this resource
type: array
items:
$ref: '#/components/schemas/SiloRoleRoleAssignment'
required:
- role_assignments
IdSortMode:
description: 'Supported set of sort modes for scanning by id only.
Currently, we only support scanning in ascending order.'
oneOf:
- description: Sort in increasing order of "id"
type: string
enum:
- id_ascending
SiloAuthSettings:
description: View of silo authentication settings
type: object
properties:
device_token_max_ttl_seconds:
description: Maximum lifetime of a device token in seconds. If set to null, users will be able to create tokens that do not expire.
type:
- integer
- 'null'
format: uint32
minimum: 0
silo_id:
type: string
format: uuid
required:
- silo_id
Utilization:
description: View of the current silo's resource utilization and capacity
type: object
properties:
capacity:
description: The total amount of resources that can be provisioned in this silo. Actions that would exceed this limit will fail.
allOf:
- $ref: '#/components/schemas/VirtualResourceCounts'
provisioned:
description: 'Accounts for resources allocated to running instances or storage allocated via disks or snapshots.
Note that CPU and memory resources associated with stopped instances are not counted here, whereas associated disks will still be counted.'
allOf:
- $ref: '#/components/schemas/VirtualResourceCounts'
required:
- capacity
- provisioned
NameOrId:
oneOf:
- title: id
allOf:
- type: string
format: uuid
- title: name
allOf:
- $ref: '#/components/schemas/Name'
GroupResultsPage:
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/Group'
next_page:
description: token used to fetch the next page of results (if any)
type:
- string
- 'null'
required:
- items
VirtualResourceCounts:
description: A collection of resource counts used to describe capacity and utilization
type: object
properties:
cpus:
description: Number of virtual CPUs
type: integer
format: int64
memory:
description: Amount of memory in bytes
allOf:
- $ref: '#/components/schemas/ByteCount'
storage:
description: Amount of disk storage in bytes
allOf:
- $ref: '#/components/schemas/ByteCount'
required:
- cpus
- memory
- storage
ConsoleSessionResultsPage:
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/ConsoleSession'
next_page:
description: token used to fetch the next page of results (if any)
type:
- string
- 'null'
required:
- items
UserResultsPage:
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/User'
next_page:
description: token used to fetch the next page of results (if any)
type:
- string
- 'null'
required:
- items
DeviceAccessTokenResultsPage:
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/DeviceAccessToken'
next_page:
description: token used to fetch the next page of results (if any)
type:
- string
- 'null'
required:
- items
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
ServiceUsingCertificate:
description: The service intended to use this certificate.
oneOf:
- description: This certificate is intended for access to the external API.
type: string
enum:
- external_api
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
Certificate:
description: View of a Certificate
type: object
properties:
cert:
description: PEM-formatted string containing public certificate chain
type: string
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'
service:
description: The service using this certificate
allOf:
- $ref: '#/components/schemas/ServiceUsingCertificate'
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:
- cert
- description
- id
- name
- service
- time_created
- time_modified
SiloAuthSettingsUpdate:
description: Updateable properties of a silo's settings.
type: object
properties:
device_token_max_ttl_seconds:
description: Maximum lifetime of a device token in seconds. If set to null, users will be able to create tokens that do not expire.
type:
- integer
- 'null'
format: uint32
minimum: 1
required:
- device_token_max_ttl_seconds
CertificateResultsPage:
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/Certificate'
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
IdentityType:
description: Describes what kind of identity is described by an id
type: string
enum:
- silo_user
- silo_group