{ "openapi": "3.0.3", "info": { "title": "Oxide Region API", "description": "API for interacting with the Oxide control plane", "contact": { "url": "https://oxide.computer", "email": "api@oxide.computer" }, "version": "0.0.1" }, "paths": { "/by-id/disks/{id}": { "get": { "tags": [ "disks" ], "summary": "Fetch a disk by id", "description": "Use `GET /v1/disks/{disk}` instead", "operationId": "disk_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Disk" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/by-id/images/{id}": { "get": { "tags": [ "images" ], "summary": "Fetch an image by id", "operationId": "image_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Image" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/by-id/instances/{id}": { "get": { "tags": [ "instances" ], "summary": "Fetch an instance by id", "operationId": "instance_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Instance" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/by-id/network-interfaces/{id}": { "get": { "tags": [ "instances" ], "summary": "Fetch a network interface by id", "operationId": "instance_network_interface_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkInterface" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/by-id/organizations/{id}": { "get": { "tags": [ "organizations" ], "summary": "Fetch an organization by id", "description": "Use `GET /v1/organizations/{organization}` instead", "operationId": "organization_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Organization" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/by-id/projects/{id}": { "get": { "tags": [ "projects" ], "summary": "Fetch a project by id", "description": "Use `GET /v1/projects/{project}` instead", "operationId": "project_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/by-id/snapshots/{id}": { "get": { "tags": [ "snapshots" ], "summary": "Fetch a snapshot by id", "operationId": "snapshot_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Snapshot" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/by-id/vpc-router-routes/{id}": { "get": { "tags": [ "vpcs" ], "summary": "Fetch a route by id", "operationId": "vpc_router_route_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RouterRoute" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/by-id/vpc-routers/{id}": { "get": { "tags": [ "vpcs" ], "summary": "Get a router by id", "operationId": "vpc_router_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcRouter" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/by-id/vpc-subnets/{id}": { "get": { "tags": [ "vpcs" ], "summary": "Fetch a subnet by id", "operationId": "vpc_subnet_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcSubnet" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/by-id/vpcs/{id}": { "get": { "tags": [ "vpcs" ], "summary": "Fetch a VPC", "operationId": "vpc_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Vpc" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/device/auth": { "post": { "tags": [ "hidden" ], "summary": "Start an OAuth 2.0 Device Authorization Grant", "description": "This endpoint is designed to be accessed from an *unauthenticated* API client. It generates and records a `device_code` and `user_code` which must be verified and confirmed prior to a token being granted.", "operationId": "device_auth_request", "requestBody": { "content": { "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/DeviceAuthRequest" } } }, "required": true }, "responses": { "default": { "description": "", "content": { "*/*": { "schema": {} } } } } } }, "/device/confirm": { "post": { "tags": [ "hidden" ], "summary": "Confirm an OAuth 2.0 Device Authorization Grant", "description": "This endpoint is designed to be accessed by the user agent (browser), not the client requesting the token. So we do not actually return the token here; it will be returned in response to the poll on `/device/token`.", "operationId": "device_auth_confirm", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeviceAuthVerify" } } }, "required": true }, "responses": { "204": { "description": "resource updated" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/device/token": { "post": { "tags": [ "hidden" ], "summary": "Request a device access token", "description": "This endpoint should be polled by the client until the user code is verified and the grant is confirmed.", "operationId": "device_access_token", "requestBody": { "content": { "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/DeviceAccessTokenRequest" } } }, "required": true }, "responses": { "default": { "description": "", "content": { "*/*": { "schema": {} } } } } } }, "/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": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "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": [] } } }, "/login": { "post": { "tags": [ "hidden" ], "operationId": "login_spoof", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SpoofLoginBody" } } }, "required": true }, "responses": { "204": { "description": "resource updated" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/login/{silo_name}/local": { "post": { "tags": [ "login" ], "summary": "Authenticate a user (i.e., log in) via username and password", "operationId": "login_local", "parameters": [ { "in": "path", "name": "silo_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UsernamePasswordCredentials" } } }, "required": true }, "responses": { "303": { "description": "redirect (see other)", "headers": { "location": { "description": "HTTP \"Location\" header", "style": "simple", "required": true, "schema": { "type": "string" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/login/{silo_name}/saml/{provider_name}": { "get": { "tags": [ "login" ], "summary": "Prompt user login", "description": "Either display a page asking a user for their credentials, or redirect them to their identity provider.", "operationId": "login_saml_begin", "parameters": [ { "in": "path", "name": "provider_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "silo_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "302": { "description": "redirect (found)", "headers": { "location": { "description": "HTTP \"Location\" header", "style": "simple", "required": true, "schema": { "type": "string" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "post": { "tags": [ "login" ], "summary": "Authenticate a user (i.e., log in) via SAML", "operationId": "login_saml", "parameters": [ { "in": "path", "name": "provider_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "silo_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } }, "required": true }, "responses": { "303": { "description": "redirect (see other)", "headers": { "location": { "description": "HTTP \"Location\" header", "style": "simple", "required": true, "schema": { "type": "string" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/logout": { "post": { "tags": [ "hidden" ], "operationId": "logout", "responses": { "204": { "description": "resource updated" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations": { "get": { "tags": [ "organizations" ], "summary": "List organizations", "description": "Use `GET /v1/organizations` instead", "operationId": "organization_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameOrIdSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true, "x-dropshot-pagination": true }, "post": { "tags": [ "organizations" ], "summary": "Create an organization", "description": "Use `POST /v1/organizations` instead", "operationId": "organization_create", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Organization" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/organizations/{organization_name}": { "get": { "tags": [ "organizations" ], "summary": "Fetch an organization", "description": "Use `GET /v1/organizations/{organization}` instead", "operationId": "organization_view", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Organization" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true }, "put": { "tags": [ "organizations" ], "summary": "Update an organization", "description": "Use `PUT /v1/organizations/{organization}` instead", "operationId": "organization_update", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationUpdate" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Organization" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true }, "delete": { "tags": [ "organizations" ], "summary": "Delete an organization", "description": "Use `DELETE /v1/organizations/{organization}` instead", "operationId": "organization_delete", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/organizations/{organization_name}/policy": { "get": { "tags": [ "organizations" ], "summary": "Fetch an organization's IAM policy", "description": "Use `GET /v1/organizations/{organization}/policy` instead", "operationId": "organization_policy_view", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationRolePolicy" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true }, "put": { "tags": [ "organizations" ], "summary": "Update an organization's IAM policy", "description": "Use `PUT /v1/organizations/{organization}/policy` instead", "operationId": "organization_policy_update", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationRolePolicy" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationRolePolicy" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/organizations/{organization_name}/projects": { "get": { "tags": [ "projects" ], "summary": "List projects", "description": "Use `GET /v1/projects` instead", "operationId": "project_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameOrIdSortMode" } }, { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true, "x-dropshot-pagination": true }, "post": { "tags": [ "projects" ], "summary": "Create a project", "description": "Use `POST /v1/projects` instead", "operationId": "project_create", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/organizations/{organization_name}/projects/{project_name}": { "get": { "tags": [ "projects" ], "summary": "Fetch a project", "description": "Use `GET /v1/projects/{project}` instead", "operationId": "project_view", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true }, "put": { "tags": [ "projects" ], "summary": "Update a project", "description": "Use `PUT /v1/projects/{project}` instead", "operationId": "project_update", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectUpdate" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true }, "delete": { "tags": [ "projects" ], "summary": "Delete a project", "description": "Use `DELETE /v1/projects/{project}` instead", "operationId": "project_delete", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/organizations/{organization_name}/projects/{project_name}/disks": { "get": { "tags": [ "disks" ], "summary": "List disks", "description": "Use `GET /v1/disks` instead", "operationId": "disk_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } }, { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiskResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true, "x-dropshot-pagination": true }, "post": { "tags": [ "disks" ], "summary": "Use `POST /v1/disks` instead", "operationId": "disk_create", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiskCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Disk" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/organizations/{organization_name}/projects/{project_name}/disks/{disk_name}": { "get": { "tags": [ "disks" ], "summary": "Fetch a disk", "description": "Use `GET /v1/disks/{disk}` instead", "operationId": "disk_view", "parameters": [ { "in": "path", "name": "disk_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Disk" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true }, "delete": { "tags": [ "disks" ], "summary": "Use `DELETE /v1/disks/{disk}` instead", "operationId": "disk_delete", "parameters": [ { "in": "path", "name": "disk_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/organizations/{organization_name}/projects/{project_name}/disks/{disk_name}/metrics/{metric_name}": { "get": { "tags": [ "disks" ], "summary": "Fetch disk metrics", "operationId": "disk_metrics_list", "parameters": [ { "in": "path", "name": "disk_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "metric_name", "required": true, "schema": { "$ref": "#/components/schemas/DiskMetricName" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "query", "name": "end_time", "description": "An exclusive end time of metrics.", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "start_time", "description": "An inclusive start time of metrics.", "schema": { "type": "string", "format": "date-time" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MeasurementResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": { "required": [ "end_time", "start_time" ] } } }, "/organizations/{organization_name}/projects/{project_name}/images": { "get": { "tags": [ "images" ], "summary": "List images", "description": "List images in a project. The images are returned sorted by creation date, with the most recent images appearing first.", "operationId": "image_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } }, { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ImageResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "post": { "tags": [ "images" ], "summary": "Create an image", "description": "Create a new image in a project.", "operationId": "image_create", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ImageCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Image" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/images/{image_name}": { "get": { "tags": [ "images" ], "summary": "Fetch an image", "description": "Fetch the details for a specific image in a project.", "operationId": "image_view", "parameters": [ { "in": "path", "name": "image_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Image" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "images" ], "summary": "Delete an image", "description": "Permanently delete an image from a project. This operation cannot be undone. Any instances in the project using the image will continue to run, however new instances can not be created with this image.", "operationId": "image_delete", "parameters": [ { "in": "path", "name": "image_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/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": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } }, { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "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": true }, "post": { "tags": [ "instances" ], "summary": "Create an instance", "description": "Use `POST /v1/instances` instead", "operationId": "instance_create", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "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" } }, "deprecated": true } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}": { "get": { "tags": [ "instances" ], "summary": "Fetch an instance", "description": "Use `GET /v1/instances/{instance}` instead", "operationId": "instance_view", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Instance" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true }, "delete": { "tags": [ "instances" ], "summary": "Delete an instance", "operationId": "instance_delete", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/disks": { "get": { "tags": [ "instances" ], "summary": "List an instance's disks", "description": "Use `GET /v1/instances/{instance}/disks` instead", "operationId": "instance_disk_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } }, { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiskResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true, "x-dropshot-pagination": true } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/disks/attach": { "post": { "tags": [ "instances" ], "summary": "Attach a disk to an instance", "description": "Use `POST /v1/instances/{instance}/disks/attach` instead", "operationId": "instance_disk_attach", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiskIdentifier" } } }, "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" } }, "deprecated": true } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/disks/detach": { "post": { "tags": [ "instances" ], "summary": "Detach a disk from an instance", "description": "Use `POST /v1/disks/{disk}/detach` instead", "operationId": "instance_disk_detach", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiskIdentifier" } } }, "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" } }, "deprecated": true } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/external-ips": { "get": { "tags": [ "instances" ], "summary": "List external IP addresses", "operationId": "instance_external_ip_list", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExternalIpResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/migrate": { "post": { "tags": [ "instances" ], "summary": "Migrate an instance", "description": "Use `POST /v1/instances/{instance}/migrate` instead", "operationId": "instance_migrate", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstanceMigrate" } } }, "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" } }, "deprecated": true } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/network-interfaces": { "get": { "tags": [ "instances" ], "summary": "List network interfaces", "operationId": "instance_network_interface_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } }, { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkInterfaceResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "post": { "tags": [ "instances" ], "summary": "Create a network interface", "operationId": "instance_network_interface_create", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkInterfaceCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkInterface" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/network-interfaces/{interface_name}": { "get": { "tags": [ "instances" ], "summary": "Fetch a network interface", "operationId": "instance_network_interface_view", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "interface_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkInterface" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "put": { "tags": [ "instances" ], "summary": "Update a network interface", "operationId": "instance_network_interface_update", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "interface_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkInterfaceUpdate" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkInterface" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "instances" ], "summary": "Delete a 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": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "interface_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/reboot": { "post": { "tags": [ "instances" ], "summary": "Reboot an instance", "description": "Use `POST /v1/instances/{instance}/reboot` instead", "operationId": "instance_reboot", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "202": { "description": "successfully enqueued operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Instance" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/serial-console": { "get": { "tags": [ "instances" ], "summary": "Fetch an instance's serial console", "description": "Use `GET /v1/instances/{instance}/serial-console` instead", "operationId": "instance_serial_console", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "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": { "nullable": true, "type": "integer", "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": { "nullable": true, "type": "integer", "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": { "nullable": true, "type": "integer", "format": "uint64", "minimum": 0 } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstanceSerialConsoleData" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/serial-console/stream": { "get": { "tags": [ "instances" ], "summary": "Connect to an instance's serial console", "description": "Use `GET /v1/instances/{instance}/serial-console/stream` instead", "operationId": "instance_serial_console_stream", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "default": { "description": "", "content": { "*/*": { "schema": {} } } } }, "deprecated": true, "x-dropshot-websocket": {} } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/start": { "post": { "tags": [ "instances" ], "summary": "Boot an instance", "description": "Use `POST /v1/instances/{instance}/start` instead", "operationId": "instance_start", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "202": { "description": "successfully enqueued operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Instance" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/stop": { "post": { "tags": [ "instances" ], "summary": "Halt an instance", "description": "Use `POST /v1/instances/{instance}/stop` instead", "operationId": "instance_stop", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "202": { "description": "successfully enqueued operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Instance" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true } }, "/organizations/{organization_name}/projects/{project_name}/policy": { "get": { "tags": [ "projects" ], "summary": "Fetch a project's IAM policy", "description": "Use `GET /v1/projects/{project}/policy` instead", "operationId": "project_policy_view", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectRolePolicy" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "deprecated": true }, "put": { "tags": [ "projects" ], "summary": "Update a project's IAM policy", "operationId": "project_policy_update", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectRolePolicy" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectRolePolicy" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/snapshots": { "get": { "tags": [ "snapshots" ], "summary": "List snapshots", "operationId": "snapshot_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } }, { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SnapshotResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "post": { "tags": [ "snapshots" ], "summary": "Create a snapshot", "description": "Creates a point-in-time snapshot from a disk.", "operationId": "snapshot_create", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SnapshotCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Snapshot" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/snapshots/{snapshot_name}": { "get": { "tags": [ "snapshots" ], "summary": "Fetch a snapshot", "operationId": "snapshot_view", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "snapshot_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Snapshot" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "snapshots" ], "summary": "Delete a snapshot", "operationId": "snapshot_delete", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "snapshot_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/vpcs": { "get": { "tags": [ "vpcs" ], "summary": "List VPCs", "operationId": "vpc_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } }, { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "post": { "tags": [ "vpcs" ], "summary": "Create a VPC", "operationId": "vpc_create", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Vpc" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/vpcs/{vpc_name}": { "get": { "tags": [ "vpcs" ], "summary": "Fetch a VPC", "operationId": "vpc_view", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Vpc" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "put": { "tags": [ "vpcs" ], "summary": "Update a VPC", "operationId": "vpc_update", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcUpdate" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Vpc" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "vpcs" ], "summary": "Delete a VPC", "operationId": "vpc_delete", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/vpcs/{vpc_name}/firewall/rules": { "get": { "tags": [ "vpcs" ], "summary": "List firewall rules", "operationId": "vpc_firewall_rules_view", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcFirewallRules" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "put": { "tags": [ "vpcs" ], "summary": "Replace firewall rules", "operationId": "vpc_firewall_rules_update", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcFirewallRuleUpdateParams" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcFirewallRules" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/vpcs/{vpc_name}/routers": { "get": { "tags": [ "vpcs" ], "summary": "List routers", "operationId": "vpc_router_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcRouterResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "post": { "tags": [ "vpcs" ], "summary": "Create a router", "operationId": "vpc_router_create", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcRouterCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcRouter" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/vpcs/{vpc_name}/routers/{router_name}": { "get": { "tags": [ "vpcs" ], "summary": "Get a router", "operationId": "vpc_router_view", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcRouter" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "put": { "tags": [ "vpcs" ], "summary": "Update a router", "operationId": "vpc_router_update", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcRouterUpdate" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcRouter" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "vpcs" ], "summary": "Delete a router", "operationId": "vpc_router_delete", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/vpcs/{vpc_name}/routers/{router_name}/routes": { "get": { "tags": [ "vpcs" ], "summary": "List routes", "description": "List the routes associated with a router in a particular VPC.", "operationId": "vpc_router_route_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RouterRouteResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "post": { "tags": [ "vpcs" ], "summary": "Create a router", "operationId": "vpc_router_route_create", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RouterRouteCreateParams" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RouterRoute" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/vpcs/{vpc_name}/routers/{router_name}/routes/{route_name}": { "get": { "tags": [ "vpcs" ], "summary": "Fetch a route", "operationId": "vpc_router_route_view", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "route_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RouterRoute" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "put": { "tags": [ "vpcs" ], "summary": "Update a route", "operationId": "vpc_router_route_update", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "route_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RouterRouteUpdateParams" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RouterRoute" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "vpcs" ], "summary": "Delete a route", "operationId": "vpc_router_route_delete", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "route_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/vpcs/{vpc_name}/subnets": { "get": { "tags": [ "vpcs" ], "summary": "List subnets", "operationId": "vpc_subnet_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcSubnetResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "post": { "tags": [ "vpcs" ], "summary": "Create a subnet", "operationId": "vpc_subnet_create", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcSubnetCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcSubnet" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/vpcs/{vpc_name}/subnets/{subnet_name}": { "get": { "tags": [ "vpcs" ], "summary": "Fetch a subnet", "operationId": "vpc_subnet_view", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "subnet_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcSubnet" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "put": { "tags": [ "vpcs" ], "summary": "Update a subnet", "operationId": "vpc_subnet_update", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "subnet_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcSubnetUpdate" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VpcSubnet" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "vpcs" ], "summary": "Delete a subnet", "operationId": "vpc_subnet_delete", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "subnet_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/vpcs/{vpc_name}/subnets/{subnet_name}/network-interfaces": { "get": { "tags": [ "vpcs" ], "summary": "List network interfaces", "operationId": "vpc_subnet_list_network_interfaces", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "subnet_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkInterfaceResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/policy": { "get": { "tags": [ "silos" ], "summary": "Fetch the 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 the 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" } } } }, "/roles": { "get": { "tags": [ "roles" ], "summary": "List built-in roles", "operationId": "role_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/roles/{role_name}": { "get": { "tags": [ "roles" ], "summary": "Fetch a built-in role", "operationId": "role_view", "parameters": [ { "in": "path", "name": "role_name", "description": "The built-in role's unique name.", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Role" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/session/me": { "get": { "tags": [ "hidden" ], "summary": "Fetch the user associated with the current session", "operationId": "session_me", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/session/me/groups": { "get": { "tags": [ "hidden" ], "summary": "Fetch the silo groups the current user belongs to", "operationId": "session_me_groups", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "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": true } }, "/session/me/sshkeys": { "get": { "tags": [ "session" ], "summary": "List SSH public keys", "description": "Lists SSH public keys for the currently authenticated user.", "operationId": "session_sshkey_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } } ], "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": true }, "post": { "tags": [ "session" ], "summary": "Create an SSH public key", "description": "Create an SSH public key for the currently authenticated user.", "operationId": "session_sshkey_create", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshKeyCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshKey" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/session/me/sshkeys/{ssh_key_name}": { "get": { "tags": [ "session" ], "summary": "Fetch an SSH public key", "description": "Fetch an SSH public key associated with the currently authenticated user.", "operationId": "session_sshkey_view", "parameters": [ { "in": "path", "name": "ssh_key_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshKey" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "session" ], "summary": "Delete an SSH public key", "description": "Delete an SSH public key associated with the currently authenticated user.", "operationId": "session_sshkey_delete", "parameters": [ { "in": "path", "name": "ssh_key_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/by-id/images/{id}": { "get": { "tags": [ "system" ], "summary": "Fetch a system-wide image by id", "operationId": "system_image_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GlobalImage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/by-id/ip-pools/{id}": { "get": { "tags": [ "system" ], "summary": "Fetch an IP pool by id", "operationId": "ip_pool_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpPool" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/by-id/silos/{id}": { "get": { "tags": [ "system" ], "summary": "Fetch a silo by id", "operationId": "silo_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Silo" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/certificates": { "get": { "tags": [ "system" ], "summary": "List system-wide certificates", "description": "Returns a list of all the system-wide certificates. System-wide certificates are returned 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": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } } ], "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": true }, "post": { "tags": [ "system" ], "summary": "Create a new 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" } } } }, "/system/certificates/{certificate}": { "get": { "tags": [ "system" ], "summary": "Fetch a certificate", "description": "Returns the details of a specific certificate", "operationId": "certificate_view", "parameters": [ { "in": "path", "name": "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": [ "system" ], "summary": "Delete a certificate", "description": "Permanently delete a certificate. This operation cannot be undone.", "operationId": "certificate_delete", "parameters": [ { "in": "path", "name": "certificate", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/hardware/disks": { "get": { "tags": [ "system" ], "summary": "List physical disks", "operationId": "physical_disk_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/IdSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PhysicalDiskResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/system/hardware/racks": { "get": { "tags": [ "system" ], "summary": "List racks", "operationId": "rack_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/IdSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RackResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/system/hardware/racks/{rack_id}": { "get": { "tags": [ "system" ], "summary": "Fetch a rack", "operationId": "rack_view", "parameters": [ { "in": "path", "name": "rack_id", "description": "The rack's unique ID.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Rack" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/hardware/sleds": { "get": { "tags": [ "system" ], "summary": "List sleds", "operationId": "sled_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/IdSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SledResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/system/hardware/sleds/{sled_id}": { "get": { "tags": [ "system" ], "summary": "Fetch a sled", "operationId": "sled_view", "parameters": [ { "in": "path", "name": "sled_id", "description": "The sled's unique ID.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Sled" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/hardware/sleds/{sled_id}/disks": { "get": { "tags": [ "system" ], "summary": "List physical disks attached to sleds", "operationId": "sled_physical_disk_list", "parameters": [ { "in": "path", "name": "sled_id", "description": "The sled's unique ID.", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/IdSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PhysicalDiskResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/system/images": { "get": { "tags": [ "system" ], "summary": "List system-wide images", "description": "Returns a list of all the system-wide images. System-wide images are returned sorted by creation date, with the most recent images appearing first.", "operationId": "system_image_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GlobalImageResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "post": { "tags": [ "system" ], "summary": "Create a system-wide image", "description": "Create a new system-wide image. This image can then be used by any user in any silo as a base for instances.", "operationId": "system_image_create", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GlobalImageCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GlobalImage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/images/{image_name}": { "get": { "tags": [ "system" ], "summary": "Fetch a system-wide image", "description": "Returns the details of a specific system-wide image.", "operationId": "system_image_view", "parameters": [ { "in": "path", "name": "image_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GlobalImage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "system" ], "summary": "Delete a system-wide image", "description": "Permanently delete a system-wide image. This operation cannot be undone. Any instances using the system-wide image will continue to run, however new instances can not be created with this image.", "operationId": "system_image_delete", "parameters": [ { "in": "path", "name": "image_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/ip-pools": { "get": { "tags": [ "system" ], "summary": "List IP pools", "operationId": "ip_pool_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameOrIdSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpPoolResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "post": { "tags": [ "system" ], "summary": "Create an IP pool", "operationId": "ip_pool_create", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpPoolCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpPool" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/ip-pools/{pool_name}": { "get": { "tags": [ "system" ], "summary": "Fetch an IP pool", "operationId": "ip_pool_view", "parameters": [ { "in": "path", "name": "pool_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpPool" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "put": { "tags": [ "system" ], "summary": "Update an IP Pool", "operationId": "ip_pool_update", "parameters": [ { "in": "path", "name": "pool_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpPoolUpdate" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpPool" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "system" ], "summary": "Delete an IP Pool", "operationId": "ip_pool_delete", "parameters": [ { "in": "path", "name": "pool_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/ip-pools/{pool_name}/ranges": { "get": { "tags": [ "system" ], "summary": "List ranges for an IP pool", "description": "Ranges are ordered by their first address.", "operationId": "ip_pool_range_list", "parameters": [ { "in": "path", "name": "pool_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpPoolRangeResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/system/ip-pools/{pool_name}/ranges/add": { "post": { "tags": [ "system" ], "summary": "Add a range to an IP pool", "operationId": "ip_pool_range_add", "parameters": [ { "in": "path", "name": "pool_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpRange" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpPoolRange" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/ip-pools/{pool_name}/ranges/remove": { "post": { "tags": [ "system" ], "summary": "Remove a range from an IP pool", "operationId": "ip_pool_range_remove", "parameters": [ { "in": "path", "name": "pool_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpRange" } } }, "required": true }, "responses": { "204": { "description": "resource updated" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/ip-pools-service": { "get": { "tags": [ "system" ], "summary": "Fetch the IP pool used for Oxide services.", "operationId": "ip_pool_service_view", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpPool" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/ip-pools-service/ranges": { "get": { "tags": [ "system" ], "summary": "List ranges for the IP pool used for Oxide services.", "description": "Ranges are ordered by their first address.", "operationId": "ip_pool_service_range_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpPoolRangeResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/system/ip-pools-service/ranges/add": { "post": { "tags": [ "system" ], "summary": "Add a range to an IP pool used for Oxide services.", "operationId": "ip_pool_service_range_add", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpRange" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpPoolRange" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/ip-pools-service/ranges/remove": { "post": { "tags": [ "system" ], "summary": "Remove a range from an IP pool used for Oxide services.", "operationId": "ip_pool_service_range_remove", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IpRange" } } }, "required": true }, "responses": { "204": { "description": "resource updated" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/metrics/{metric_name}": { "get": { "tags": [ "system" ], "summary": "Access metrics data", "operationId": "system_metric", "parameters": [ { "in": "path", "name": "metric_name", "required": true, "schema": { "$ref": "#/components/schemas/SystemMetricName" } }, { "in": "query", "name": "end_time", "description": "An exclusive end time of metrics.", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "id", "description": "The UUID of the container being queried", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "start_time", "description": "An inclusive start time of metrics.", "schema": { "type": "string", "format": "date-time" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MeasurementResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/system/policy": { "get": { "tags": [ "policy" ], "summary": "Fetch the top-level IAM policy", "operationId": "system_policy_view", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FleetRolePolicy" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "put": { "tags": [ "policy" ], "summary": "Update the top-level IAM policy", "operationId": "system_policy_update", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FleetRolePolicy" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FleetRolePolicy" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/sagas": { "get": { "tags": [ "system" ], "summary": "List sagas", "operationId": "saga_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/IdSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SagaResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/system/sagas/{saga_id}": { "get": { "tags": [ "system" ], "summary": "Fetch a saga", "operationId": "saga_view", "parameters": [ { "in": "path", "name": "saga_id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Saga" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/silos": { "get": { "tags": [ "system" ], "summary": "List silos", "description": "Lists silos that are discoverable based on the current permissions.", "operationId": "silo_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameOrIdSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SiloResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "post": { "tags": [ "system" ], "summary": "Create a silo", "operationId": "silo_create", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SiloCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Silo" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/silos/{silo_name}": { "get": { "tags": [ "system" ], "summary": "Fetch a silo", "description": "Fetch a silo by name.", "operationId": "silo_view", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Silo" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "system" ], "summary": "Delete a silo", "description": "Delete a silo by name.", "operationId": "silo_delete", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/silos/{silo_name}/identity-providers": { "get": { "tags": [ "system" ], "summary": "List a silo's IDPs", "operationId": "silo_identity_provider_list", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdentityProviderResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/system/silos/{silo_name}/identity-providers/local/users": { "post": { "tags": [ "system" ], "summary": "Create a user", "description": "Users can only be created in Silos with `provision_type` == `Fixed`. Otherwise, Silo users are just-in-time (JIT) provisioned when a user first logs in using an external Identity Provider.", "operationId": "local_idp_user_create", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/silos/{silo_name}/identity-providers/local/users/{user_id}": { "delete": { "tags": [ "system" ], "summary": "Delete a user", "operationId": "local_idp_user_delete", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "user_id", "description": "The user's internal id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/silos/{silo_name}/identity-providers/local/users/{user_id}/set-password": { "post": { "tags": [ "system" ], "summary": "Set or invalidate a user's password", "description": "Passwords can only be updated for users in Silos with identity mode `LocalOnly`.", "operationId": "local_idp_user_set_password", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "user_id", "description": "The user's internal id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserPassword" } } }, "required": true }, "responses": { "204": { "description": "resource updated" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/silos/{silo_name}/identity-providers/saml": { "post": { "tags": [ "system" ], "summary": "Create a SAML IDP", "operationId": "saml_identity_provider_create", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SamlIdentityProviderCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SamlIdentityProvider" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/silos/{silo_name}/identity-providers/saml/{provider_name}": { "get": { "tags": [ "system" ], "summary": "Fetch a SAML IDP", "operationId": "saml_identity_provider_view", "parameters": [ { "in": "path", "name": "provider_name", "description": "The SAML identity provider's name", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SamlIdentityProvider" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/silos/{silo_name}/policy": { "get": { "tags": [ "system" ], "summary": "Fetch a silo's IAM policy", "operationId": "silo_policy_view", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "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": [ "system" ], "summary": "Update a silo's IAM policy", "operationId": "silo_policy_update", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "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" } } } }, "/system/silos/{silo_name}/users/all": { "get": { "tags": [ "system" ], "summary": "List users in a silo", "operationId": "silo_users_list", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "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": true } }, "/system/silos/{silo_name}/users/id/{user_id}": { "get": { "tags": [ "system" ], "summary": "Fetch a user", "operationId": "silo_user_view", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } }, { "in": "path", "name": "user_id", "description": "The user's internal id", "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" } } } }, "/system/user": { "get": { "tags": [ "system" ], "summary": "List built-in users", "operationId": "system_user_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserBuiltinResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/system/user/{user_name}": { "get": { "tags": [ "system" ], "summary": "Fetch a built-in user", "operationId": "system_user_view", "parameters": [ { "in": "path", "name": "user_name", "description": "The built-in user's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserBuiltin" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/timeseries/schema": { "get": { "tags": [ "metrics" ], "summary": "List timeseries schema", "operationId": "timeseries_schema_get", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TimeseriesSchemaResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/users": { "get": { "tags": [ "silos" ], "summary": "List users", "operationId": "user_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "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": true } }, "/v1/disks": { "get": { "tags": [ "disks" ], "summary": "List disks", "operationId": "disk_list_v1", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "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/DiskResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "post": { "tags": [ "disks" ], "summary": "Create a disk", "operationId": "disk_create_v1", "parameters": [ { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "project", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiskCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Disk" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/disks/{disk}": { "get": { "tags": [ "disks" ], "summary": "Fetch a disk", "operationId": "disk_view_v1", "parameters": [ { "in": "path", "name": "disk", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "project", "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Disk" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "disks" ], "summary": "Delete a disk", "operationId": "disk_delete_v1", "parameters": [ { "in": "path", "name": "disk", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "project", "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/instances": { "get": { "tags": [ "instances" ], "summary": "List instances", "operationId": "instance_list_v1", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "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": true }, "post": { "tags": [ "instances" ], "summary": "Create an instance", "operationId": "instance_create_v1", "parameters": [ { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "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 an instance", "operationId": "instance_view_v1", "parameters": [ { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "project", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "path", "name": "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" } } }, "delete": { "tags": [ "instances" ], "summary": "Delete an instance", "operationId": "instance_delete_v1", "parameters": [ { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "project", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "path", "name": "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}/disks": { "get": { "tags": [ "instances" ], "summary": "List an instance's disks", "operationId": "instance_disk_list_v1", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "project", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameOrIdSortMode" } }, { "in": "path", "name": "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": true } }, "/v1/instances/{instance}/disks/attach": { "post": { "tags": [ "instances" ], "summary": "Attach a disk to an instance", "operationId": "instance_disk_attach_v1", "parameters": [ { "in": "path", "name": "instance", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "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 a disk from an instance", "operationId": "instance_disk_detach_v1", "parameters": [ { "in": "path", "name": "instance", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "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}/migrate": { "post": { "tags": [ "instances" ], "summary": "Migrate an instance", "operationId": "instance_migrate_v1", "parameters": [ { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "project", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "path", "name": "instance", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstanceMigrate" } } }, "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" } } } }, "/v1/instances/{instance}/reboot": { "post": { "tags": [ "instances" ], "summary": "Reboot an instance", "operationId": "instance_reboot_v1", "parameters": [ { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "project", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "path", "name": "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 an instance's serial console", "operationId": "instance_serial_console_v1", "parameters": [ { "in": "path", "name": "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": { "nullable": true, "type": "integer", "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": { "nullable": true, "type": "integer", "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": { "nullable": true, "type": "integer", "format": "uint64", "minimum": 0 } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "project", "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 an instance's serial console", "operationId": "instance_serial_console_stream_v1", "parameters": [ { "in": "path", "name": "instance", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "project", "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "responses": { "default": { "description": "", "content": { "*/*": { "schema": {} } } } }, "x-dropshot-websocket": {} } }, "/v1/instances/{instance}/start": { "post": { "tags": [ "instances" ], "summary": "Boot an instance", "operationId": "instance_start_v1", "parameters": [ { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "project", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "path", "name": "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 an instance", "operationId": "instance_stop_v1", "parameters": [ { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "project", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "path", "name": "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/organizations": { "get": { "tags": [ "organizations" ], "summary": "List organizations", "operationId": "organization_list_v1", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameOrIdSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "post": { "tags": [ "organizations" ], "summary": "Create an organization", "operationId": "organization_create_v1", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Organization" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/organizations/{organization}": { "get": { "tags": [ "organizations" ], "summary": "Fetch an organization", "operationId": "organization_view_v1", "parameters": [ { "in": "path", "name": "organization", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Organization" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "put": { "tags": [ "organizations" ], "summary": "Update an organization", "operationId": "organization_update_v1", "parameters": [ { "in": "path", "name": "organization", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationUpdate" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Organization" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "organizations" ], "summary": "Delete an organization", "operationId": "organization_delete_v1", "parameters": [ { "in": "path", "name": "organization", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/organizations/{organization}/policy": { "get": { "tags": [ "organizations" ], "summary": "Fetch an organization's IAM policy", "operationId": "organization_policy_view_v1", "parameters": [ { "in": "path", "name": "organization", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationRolePolicy" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "put": { "tags": [ "organizations" ], "summary": "Update an organization's IAM policy", "operationId": "organization_policy_update_v1", "parameters": [ { "in": "path", "name": "organization", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationRolePolicy" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationRolePolicy" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/projects": { "get": { "tags": [ "projects" ], "summary": "List projects", "operationId": "project_list_v1", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameOrIdSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "post": { "tags": [ "projects" ], "summary": "Create a project", "operationId": "project_create_v1", "parameters": [ { "in": "query", "name": "organization", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectCreate" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/projects/{project}": { "get": { "tags": [ "projects" ], "summary": "Fetch a project", "operationId": "project_view_v1", "parameters": [ { "in": "path", "name": "project", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "put": { "tags": [ "projects" ], "summary": "Update a project", "operationId": "project_update_v1", "parameters": [ { "in": "path", "name": "project", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectUpdate" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "projects" ], "summary": "Delete a project", "operationId": "project_delete_v1", "parameters": [ { "in": "path", "name": "project", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/projects/{project}/policy": { "get": { "tags": [ "projects" ], "summary": "Fetch a project's IAM policy", "operationId": "project_policy_view_v1", "parameters": [ { "in": "path", "name": "project", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectRolePolicy" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "put": { "tags": [ "projects" ], "summary": "Update a project's IAM policy", "operationId": "project_policy_update_v1", "parameters": [ { "in": "path", "name": "project", "required": true, "schema": { "$ref": "#/components/schemas/NameOrId" } }, { "in": "query", "name": "organization", "schema": { "$ref": "#/components/schemas/NameOrId" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectRolePolicy" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectRolePolicy" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/system/update/components": { "get": { "tags": [ "system" ], "summary": "View version and update status of component tree", "operationId": "system_component_version_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/IdSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateableComponentResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/v1/system/update/deployments": { "get": { "tags": [ "system" ], "summary": "List all update deployments", "operationId": "update_deployments_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/IdSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateDeploymentResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/v1/system/update/deployments/{id}": { "get": { "tags": [ "system" ], "summary": "Fetch a system update deployment", "operationId": "update_deployment_view", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateDeployment" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/system/update/refresh": { "post": { "tags": [ "system" ], "summary": "Refresh update data", "operationId": "system_update_refresh", "responses": { "204": { "description": "resource updated" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/system/update/start": { "post": { "tags": [ "system" ], "summary": "Start system update", "operationId": "system_update_start", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SystemUpdateStart" } } }, "required": true }, "responses": { "202": { "description": "successfully enqueued operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateDeployment" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/system/update/stop": { "post": { "tags": [ "system" ], "summary": "Stop system update", "description": "If there is no update in progress, do nothing.", "operationId": "system_update_stop", "responses": { "204": { "description": "resource updated" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/system/update/updates": { "get": { "tags": [ "system" ], "summary": "List all updates", "operationId": "system_update_list", "parameters": [ { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 } }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" } }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/IdSortMode" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SystemUpdateResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/v1/system/update/updates/{version}": { "get": { "tags": [ "system" ], "summary": "View system update", "operationId": "system_update_view", "parameters": [ { "in": "path", "name": "version", "required": true, "schema": { "$ref": "#/components/schemas/SemverVersion" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SystemUpdate" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/system/update/updates/{version}/components": { "get": { "tags": [ "system" ], "summary": "View system update component tree", "operationId": "system_update_components_list", "parameters": [ { "in": "path", "name": "version", "required": true, "schema": { "$ref": "#/components/schemas/SemverVersion" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ComponentUpdateResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/v1/system/update/version": { "get": { "tags": [ "system" ], "summary": "View system version and update status", "operationId": "system_version", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SystemVersion" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } } }, "components": { "responses": { "Error": { "description": "Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "schemas": { "Baseboard": { "description": "Describes properties that should uniquely identify a Gimlet.", "type": "object", "properties": { "part": { "type": "string" }, "revision": { "type": "integer", "format": "int64" }, "serial": { "type": "string" } }, "required": [ "part", "revision", "serial" ] }, "BinRangedouble": { "description": "A type storing a range over `T`.\n\nThis type supports ranges similar to the `RangeTo`, `Range` and `RangeFrom` types in the standard library. Those cover `(..end)`, `(start..end)`, and `(start..)` respectively.", "oneOf": [ { "description": "A range unbounded below and exclusively above, `..end`.", "type": "object", "properties": { "end": { "type": "number", "format": "double" }, "type": { "type": "string", "enum": [ "range_to" ] } }, "required": [ "end", "type" ] }, { "description": "A range bounded inclusively below and exclusively above, `start..end`.", "type": "object", "properties": { "end": { "type": "number", "format": "double" }, "start": { "type": "number", "format": "double" }, "type": { "type": "string", "enum": [ "range" ] } }, "required": [ "end", "start", "type" ] }, { "description": "A range bounded inclusively below and unbounded above, `start..`.", "type": "object", "properties": { "start": { "type": "number", "format": "double" }, "type": { "type": "string", "enum": [ "range_from" ] } }, "required": [ "start", "type" ] } ] }, "BinRangeint64": { "description": "A type storing a range over `T`.\n\nThis type supports ranges similar to the `RangeTo`, `Range` and `RangeFrom` types in the standard library. Those cover `(..end)`, `(start..end)`, and `(start..)` respectively.", "oneOf": [ { "description": "A range unbounded below and exclusively above, `..end`.", "type": "object", "properties": { "end": { "type": "integer", "format": "int64" }, "type": { "type": "string", "enum": [ "range_to" ] } }, "required": [ "end", "type" ] }, { "description": "A range bounded inclusively below and exclusively above, `start..end`.", "type": "object", "properties": { "end": { "type": "integer", "format": "int64" }, "start": { "type": "integer", "format": "int64" }, "type": { "type": "string", "enum": [ "range" ] } }, "required": [ "end", "start", "type" ] }, { "description": "A range bounded inclusively below and unbounded above, `start..`.", "type": "object", "properties": { "start": { "type": "integer", "format": "int64" }, "type": { "type": "string", "enum": [ "range_from" ] } }, "required": [ "start", "type" ] } ] }, "Bindouble": { "description": "Type storing bin edges and a count of samples within it.", "type": "object", "properties": { "count": { "description": "The total count of samples in this bin.", "type": "integer", "format": "uint64", "minimum": 0 }, "range": { "description": "The range of the support covered by this bin.", "allOf": [ { "$ref": "#/components/schemas/BinRangedouble" } ] } }, "required": [ "count", "range" ] }, "Binint64": { "description": "Type storing bin edges and a count of samples within it.", "type": "object", "properties": { "count": { "description": "The total count of samples in this bin.", "type": "integer", "format": "uint64", "minimum": 0 }, "range": { "description": "The range of the support covered by this bin.", "allOf": [ { "$ref": "#/components/schemas/BinRangeint64" } ] } }, "required": [ "count", "range" ] }, "BlockSize": { "title": "disk block size in bytes", "type": "integer", "enum": [ 512, 2048, 4096 ] }, "ByteCount": { "description": "A count of bytes, typically used either for memory or storage capacity\n\nThe maximum supported byte count is [`i64::MAX`]. This makes it somewhat inconvenient to define constructors: a u32 constructor can be infallible, but an i64 constructor can fail (if the value is negative) and a u64 constructor can fail (if the value is larger than i64::MAX). We provide all of these for consumers' convenience.", "type": "integer", "format": "uint64", "minimum": 0 }, "Certificate": { "description": "Client view of a [`Certificate`]", "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" } ] }, "service": { "$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": [ "description", "id", "name", "service", "time_created", "time_modified" ] }, "CertificateCreate": { "description": "Create-time parameters for a [`Certificate`](crate::external_api::views::Certificate)", "type": "object", "properties": { "cert": { "description": "PEM file containing public certificate chain", "type": "array", "items": { "type": "integer", "format": "uint8", "minimum": 0 } }, "description": { "type": "string" }, "key": { "description": "PEM file containing private key", "type": "array", "items": { "type": "integer", "format": "uint8", "minimum": 0 } }, "name": { "$ref": "#/components/schemas/Name" }, "service": { "description": "The service using this certificate", "allOf": [ { "$ref": "#/components/schemas/ServiceUsingCertificate" } ] } }, "required": [ "cert", "description", "key", "name", "service" ] }, "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": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "ComponentUpdate": { "description": "Identity-related metadata that's included in \"asset\" public API objects (which generally have no name or description)", "type": "object", "properties": { "component_type": { "$ref": "#/components/schemas/UpdateableComponentType" }, "id": { "description": "unique, immutable, system-controlled identifier for each resource", "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" }, "version": { "$ref": "#/components/schemas/SemverVersion" } }, "required": [ "component_type", "id", "time_created", "time_modified", "version" ] }, "ComponentUpdateResultsPage": { "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/ComponentUpdate" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "Cumulativedouble": { "description": "A cumulative or counter data type.", "type": "object", "properties": { "start_time": { "type": "string", "format": "date-time" }, "value": { "type": "number", "format": "double" } }, "required": [ "start_time", "value" ] }, "Cumulativeint64": { "description": "A cumulative or counter data type.", "type": "object", "properties": { "start_time": { "type": "string", "format": "date-time" }, "value": { "type": "integer", "format": "int64" } }, "required": [ "start_time", "value" ] }, "Datum": { "description": "A `Datum` is a single sampled data point from a metric.", "oneOf": [ { "type": "object", "properties": { "datum": { "type": "boolean" }, "type": { "type": "string", "enum": [ "bool" ] } }, "required": [ "datum", "type" ] }, { "type": "object", "properties": { "datum": { "type": "integer", "format": "int64" }, "type": { "type": "string", "enum": [ "i64" ] } }, "required": [ "datum", "type" ] }, { "type": "object", "properties": { "datum": { "type": "number", "format": "double" }, "type": { "type": "string", "enum": [ "f64" ] } }, "required": [ "datum", "type" ] }, { "type": "object", "properties": { "datum": { "type": "string" }, "type": { "type": "string", "enum": [ "string" ] } }, "required": [ "datum", "type" ] }, { "type": "object", "properties": { "datum": { "type": "array", "items": { "type": "integer", "format": "uint8", "minimum": 0 } }, "type": { "type": "string", "enum": [ "bytes" ] } }, "required": [ "datum", "type" ] }, { "type": "object", "properties": { "datum": { "$ref": "#/components/schemas/Cumulativeint64" }, "type": { "type": "string", "enum": [ "cumulative_i64" ] } }, "required": [ "datum", "type" ] }, { "type": "object", "properties": { "datum": { "$ref": "#/components/schemas/Cumulativedouble" }, "type": { "type": "string", "enum": [ "cumulative_f64" ] } }, "required": [ "datum", "type" ] }, { "type": "object", "properties": { "datum": { "$ref": "#/components/schemas/Histogramint64" }, "type": { "type": "string", "enum": [ "histogram_i64" ] } }, "required": [ "datum", "type" ] }, { "type": "object", "properties": { "datum": { "$ref": "#/components/schemas/Histogramdouble" }, "type": { "type": "string", "enum": [ "histogram_f64" ] } }, "required": [ "datum", "type" ] } ] }, "DatumType": { "description": "The type of an individual datum of a metric.", "type": "string", "enum": [ "bool", "i64", "f64", "string", "bytes", "cumulative_i64", "cumulative_f64", "histogram_i64", "histogram_f64" ] }, "DerEncodedKeyPair": { "type": "object", "properties": { "private_key": { "description": "request signing private key (base64 encoded der file)", "type": "string" }, "public_cert": { "description": "request signing public certificate (base64 encoded der file)", "type": "string" } }, "required": [ "private_key", "public_cert" ] }, "DeviceAccessTokenRequest": { "type": "object", "properties": { "client_id": { "type": "string", "format": "uuid" }, "device_code": { "type": "string" }, "grant_type": { "type": "string" } }, "required": [ "client_id", "device_code", "grant_type" ] }, "DeviceAuthRequest": { "type": "object", "properties": { "client_id": { "type": "string", "format": "uuid" } }, "required": [ "client_id" ] }, "DeviceAuthVerify": { "type": "object", "properties": { "user_code": { "type": "string" } }, "required": [ "user_code" ] }, "Digest": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "sha256" ] }, "value": { "type": "string" } }, "required": [ "type", "value" ] } ] }, "Disk": { "description": "Client view of a [`Disk`]", "type": "object", "properties": { "block_size": { "$ref": "#/components/schemas/ByteCount" }, "description": { "description": "human-readable free-form text about a resource", "type": "string" }, "device_path": { "type": "string" }, "id": { "description": "unique, immutable, system-controlled identifier for each resource", "type": "string", "format": "uuid" }, "image_id": { "nullable": true, "type": "string", "format": "uuid" }, "name": { "description": "unique, mutable, user-controlled identifier for each resource", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "project_id": { "type": "string", "format": "uuid" }, "size": { "$ref": "#/components/schemas/ByteCount" }, "snapshot_id": { "nullable": true, "type": "string", "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", "id", "name", "project_id", "size", "state", "time_created", "time_modified" ] }, "DiskCreate": { "description": "Create-time parameters for a [`Disk`](omicron_common::api::external::Disk)", "type": "object", "properties": { "description": { "type": "string" }, "disk_source": { "description": "initial source for this disk", "allOf": [ { "$ref": "#/components/schemas/DiskSource" } ] }, "name": { "$ref": "#/components/schemas/Name" }, "size": { "description": "total size of the Disk in bytes", "allOf": [ { "$ref": "#/components/schemas/ByteCount" } ] } }, "required": [ "description", "disk_source", "name", "size" ] }, "DiskIdentifier": { "description": "TODO-v1: Delete this Parameters for the [`Disk`](omicron_common::api::external::Disk) to be attached or detached to an instance", "type": "object", "properties": { "name": { "$ref": "#/components/schemas/Name" } }, "required": [ "name" ] }, "DiskPath": { "type": "object", "properties": { "disk": { "$ref": "#/components/schemas/NameOrId" } }, "required": [ "disk" ] }, "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": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "DiskSource": { "description": "Different sources for a disk", "oneOf": [ { "description": "Create a blank disk", "type": "object", "properties": { "block_size": { "description": "size of blocks for this Disk. valid values are: 512, 2048, or 4096", "allOf": [ { "$ref": "#/components/schemas/BlockSize" } ] }, "type": { "type": "string", "enum": [ "blank" ] } }, "required": [ "block_size", "type" ] }, { "description": "Create a disk from a disk snapshot", "type": "object", "properties": { "snapshot_id": { "type": "string", "format": "uuid" }, "type": { "type": "string", "enum": [ "snapshot" ] } }, "required": [ "snapshot_id", "type" ] }, { "description": "Create a disk from a project image", "type": "object", "properties": { "image_id": { "type": "string", "format": "uuid" }, "type": { "type": "string", "enum": [ "image" ] } }, "required": [ "image_id", "type" ] }, { "description": "Create a disk from a global image", "type": "object", "properties": { "image_id": { "type": "string", "format": "uuid" }, "type": { "type": "string", "enum": [ "global_image" ] } }, "required": [ "image_id", "type" ] } ] }, "DiskState": { "description": "State of a Disk (primarily: attached or not)", "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 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" ] } ] }, "Distribution": { "description": "OS image distribution", "type": "object", "properties": { "name": { "description": "The name of the distribution (e.g. \"alpine\" or \"ubuntu\")", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "version": { "description": "The version of the distribution (e.g. \"3.10\" or \"18.04\")", "type": "string" } }, "required": [ "name", "version" ] }, "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" ] }, "ExternalIp": { "type": "object", "properties": { "ip": { "type": "string", "format": "ip" }, "kind": { "$ref": "#/components/schemas/IpKind" } }, "required": [ "ip", "kind" ] }, "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 the provided IP Pool, or all available pools if not specified.", "type": "object", "properties": { "pool_name": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "type": { "type": "string", "enum": [ "ephemeral" ] } }, "required": [ "type" ] } ] }, "ExternalIpResultsPage": { "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/ExternalIp" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "FieldSchema": { "description": "The name and type information for a field of a timeseries schema.", "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "#/components/schemas/FieldSource" }, "ty": { "$ref": "#/components/schemas/FieldType" } }, "required": [ "name", "source", "ty" ] }, "FieldSource": { "description": "The source from which a field is derived, the target or metric.", "type": "string", "enum": [ "target", "metric" ] }, "FieldType": { "description": "The `FieldType` identifies the data type of a target or metric field.", "type": "string", "enum": [ "string", "i64", "ip_addr", "uuid", "bool" ] }, "FleetRole": { "type": "string", "enum": [ "admin", "collaborator", "viewer" ] }, "FleetRolePolicy": { "description": "Client view of a [`Policy`], which describes how this resource may be accessed\n\nNote 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/FleetRoleRoleAssignment" } } }, "required": [ "role_assignments" ] }, "FleetRoleRoleAssignment": { "description": "Describes the assignment of a particular role on a particular resource to a particular identity (user, group, etc.)\n\nThe 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/FleetRole" } }, "required": [ "identity_id", "identity_type", "role_name" ] }, "GlobalImage": { "description": "Client view of global Images", "type": "object", "properties": { "block_size": { "description": "size of blocks in bytes", "allOf": [ { "$ref": "#/components/schemas/ByteCount" } ] }, "description": { "description": "human-readable free-form text about a resource", "type": "string" }, "digest": { "nullable": true, "description": "Hash of the image contents, if applicable", "allOf": [ { "$ref": "#/components/schemas/Digest" } ] }, "distribution": { "description": "Image distribution", "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" } ] }, "size": { "description": "total size in bytes", "allOf": [ { "$ref": "#/components/schemas/ByteCount" } ] }, "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" }, "url": { "nullable": true, "description": "URL source of this image, if any", "type": "string" }, "version": { "description": "Image version", "type": "string" } }, "required": [ "block_size", "description", "distribution", "id", "name", "size", "time_created", "time_modified", "version" ] }, "GlobalImageCreate": { "description": "Create-time parameters for an [`GlobalImage`](crate::external_api::views::GlobalImage)", "type": "object", "properties": { "block_size": { "description": "block size in bytes", "allOf": [ { "$ref": "#/components/schemas/BlockSize" } ] }, "description": { "type": "string" }, "distribution": { "description": "OS image distribution", "allOf": [ { "$ref": "#/components/schemas/Distribution" } ] }, "name": { "$ref": "#/components/schemas/Name" }, "source": { "description": "The source of the image's contents.", "allOf": [ { "$ref": "#/components/schemas/ImageSource" } ] } }, "required": [ "block_size", "description", "distribution", "name", "source" ] }, "GlobalImageResultsPage": { "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/GlobalImage" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "Group": { "description": "Client 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" } }, "required": [ "display_name", "id", "silo_id" ] }, "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": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "Histogramdouble": { "description": "A simple type for managing a histogram metric.\n\nA histogram maintains the count of any number of samples, over a set of bins. Bins are specified on construction via their _left_ edges, inclusive. There can't be any \"gaps\" in the bins, and an additional bin may be added to the left, right, or both so that the bins extend to the entire range of the support.\n\nNote that any gaps, unsorted bins, or non-finite values will result in an error.\n\nExample ------- ```rust use oximeter::histogram::{BinRange, Histogram};\n\nlet edges = [0i64, 10, 20]; let mut hist = Histogram::new(&edges).unwrap(); assert_eq!(hist.n_bins(), 4); // One additional bin for the range (20..) assert_eq!(hist.n_samples(), 0); hist.sample(4); hist.sample(100); assert_eq!(hist.n_samples(), 2);\n\nlet data = hist.iter().collect::>(); assert_eq!(data[0].range, BinRange::range(i64::MIN, 0)); // An additional bin for `..0` assert_eq!(data[0].count, 0); // Nothing is in this bin\n\nassert_eq!(data[1].range, BinRange::range(0, 10)); // The range `0..10` assert_eq!(data[1].count, 1); // 4 is sampled into this bin ```\n\nNotes -----\n\nHistograms may be constructed either from their left bin edges, or from a sequence of ranges. In either case, the left-most bin may be converted upon construction. In particular, if the left-most value is not equal to the minimum of the support, a new bin will be added from the minimum to that provided value. If the left-most value _is_ the support's minimum, because the provided bin was unbounded below, such as `(..0)`, then that bin will be converted into one bounded below, `(MIN..0)` in this case.\n\nThe short of this is that, most of the time, it shouldn't matter. If one specifies the extremes of the support as their bins, be aware that the left-most may be converted from a `BinRange::RangeTo` into a `BinRange::Range`. In other words, the first bin of a histogram is _always_ a `Bin::Range` or a `Bin::RangeFrom` after construction. In fact, every bin is one of those variants, the `BinRange::RangeTo` is only provided as a convenience during construction.", "type": "object", "properties": { "bins": { "type": "array", "items": { "$ref": "#/components/schemas/Bindouble" } }, "n_samples": { "type": "integer", "format": "uint64", "minimum": 0 }, "start_time": { "type": "string", "format": "date-time" } }, "required": [ "bins", "n_samples", "start_time" ] }, "Histogramint64": { "description": "A simple type for managing a histogram metric.\n\nA histogram maintains the count of any number of samples, over a set of bins. Bins are specified on construction via their _left_ edges, inclusive. There can't be any \"gaps\" in the bins, and an additional bin may be added to the left, right, or both so that the bins extend to the entire range of the support.\n\nNote that any gaps, unsorted bins, or non-finite values will result in an error.\n\nExample ------- ```rust use oximeter::histogram::{BinRange, Histogram};\n\nlet edges = [0i64, 10, 20]; let mut hist = Histogram::new(&edges).unwrap(); assert_eq!(hist.n_bins(), 4); // One additional bin for the range (20..) assert_eq!(hist.n_samples(), 0); hist.sample(4); hist.sample(100); assert_eq!(hist.n_samples(), 2);\n\nlet data = hist.iter().collect::>(); assert_eq!(data[0].range, BinRange::range(i64::MIN, 0)); // An additional bin for `..0` assert_eq!(data[0].count, 0); // Nothing is in this bin\n\nassert_eq!(data[1].range, BinRange::range(0, 10)); // The range `0..10` assert_eq!(data[1].count, 1); // 4 is sampled into this bin ```\n\nNotes -----\n\nHistograms may be constructed either from their left bin edges, or from a sequence of ranges. In either case, the left-most bin may be converted upon construction. In particular, if the left-most value is not equal to the minimum of the support, a new bin will be added from the minimum to that provided value. If the left-most value _is_ the support's minimum, because the provided bin was unbounded below, such as `(..0)`, then that bin will be converted into one bounded below, `(MIN..0)` in this case.\n\nThe short of this is that, most of the time, it shouldn't matter. If one specifies the extremes of the support as their bins, be aware that the left-most may be converted from a `BinRange::RangeTo` into a `BinRange::Range`. In other words, the first bin of a histogram is _always_ a `Bin::Range` or a `Bin::RangeFrom` after construction. In fact, every bin is one of those variants, the `BinRange::RangeTo` is only provided as a convenience during construction.", "type": "object", "properties": { "bins": { "type": "array", "items": { "$ref": "#/components/schemas/Binint64" } }, "n_samples": { "type": "integer", "format": "uint64", "minimum": 0 }, "start_time": { "type": "string", "format": "date-time" } }, "required": [ "bins", "n_samples", "start_time" ] }, "IdentityProvider": { "description": "Client view of an [`IdentityProvider`]", "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" } ] }, "provider_type": { "description": "Identity provider type", "allOf": [ { "$ref": "#/components/schemas/IdentityProviderType" } ] }, "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", "provider_type", "time_created", "time_modified" ] }, "IdentityProviderResultsPage": { "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/IdentityProvider" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "IdentityProviderType": { "oneOf": [ { "description": "SAML identity provider", "type": "string", "enum": [ "saml" ] } ] }, "IdentityType": { "description": "Describes what kind of identity is described by an id", "type": "string", "enum": [ "silo_user", "silo_group" ] }, "IdpMetadataSource": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "url" ] }, "url": { "type": "string" } }, "required": [ "type", "url" ] }, { "type": "object", "properties": { "data": { "type": "string" }, "type": { "type": "string", "enum": [ "base64_encoded_xml" ] } }, "required": [ "data", "type" ] } ] }, "Image": { "description": "Client view of project Images", "type": "object", "properties": { "block_size": { "description": "size of blocks in bytes", "allOf": [ { "$ref": "#/components/schemas/ByteCount" } ] }, "description": { "description": "human-readable free-form text about a resource", "type": "string" }, "digest": { "nullable": true, "description": "Hash of the image contents, if applicable", "allOf": [ { "$ref": "#/components/schemas/Digest" } ] }, "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" } ] }, "project_id": { "description": "The project the disk belongs to", "type": "string", "format": "uuid" }, "size": { "description": "total size in bytes", "allOf": [ { "$ref": "#/components/schemas/ByteCount" } ] }, "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" }, "url": { "nullable": true, "description": "URL source of this image, if any", "type": "string" }, "version": { "nullable": true, "description": "Version of this, if any", "type": "string" } }, "required": [ "block_size", "description", "id", "name", "project_id", "size", "time_created", "time_modified" ] }, "ImageCreate": { "description": "Create-time parameters for an [`Image`](crate::external_api::views::Image)", "type": "object", "properties": { "block_size": { "description": "block size in bytes", "allOf": [ { "$ref": "#/components/schemas/BlockSize" } ] }, "description": { "type": "string" }, "name": { "$ref": "#/components/schemas/Name" }, "source": { "description": "The source of the image's contents.", "allOf": [ { "$ref": "#/components/schemas/ImageSource" } ] } }, "required": [ "block_size", "description", "name", "source" ] }, "ImageResultsPage": { "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/Image" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "ImageSource": { "description": "The source of the underlying image.", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "url" ] }, "url": { "type": "string" } }, "required": [ "type", "url" ] }, { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "type": { "type": "string", "enum": [ "snapshot" ] } }, "required": [ "id", "type" ] }, { "description": "Boot the Alpine ISO that ships with the Propolis zone. Intended for development purposes only.", "type": "object", "properties": { "type": { "type": "string", "enum": [ "you_can_boot_anything_as_long_as_its_alpine" ] } }, "required": [ "type" ] } ] }, "Instance": { "description": "Client view of an [`Instance`]", "type": "object", "properties": { "description": { "description": "human-readable free-form text about a resource", "type": "string" }, "hostname": { "description": "RFC1035-compliant hostname for the Instance.", "type": "string" }, "id": { "description": "unique, immutable, system-controlled identifier for each resource", "type": "string", "format": "uuid" }, "memory": { "description": "memory allocated for this Instance", "allOf": [ { "$ref": "#/components/schemas/ByteCount" } ] }, "name": { "description": "unique, mutable, user-controlled identifier for each resource", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "ncpus": { "description": "number of CPUs allocated for this Instance", "allOf": [ { "$ref": "#/components/schemas/InstanceCpuCount" } ] }, "project_id": { "description": "id for the project containing this Instance", "type": "string", "format": "uuid" }, "run_state": { "$ref": "#/components/schemas/InstanceState" }, "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" }, "time_run_state_updated": { "type": "string", "format": "date-time" } }, "required": [ "description", "hostname", "id", "memory", "name", "ncpus", "project_id", "run_state", "time_created", "time_modified", "time_run_state_updated" ] }, "InstanceCpuCount": { "description": "The number of CPUs in an Instance", "type": "integer", "format": "uint16", "minimum": 0 }, "InstanceCreate": { "description": "Create-time parameters for an [`Instance`](omicron_common::api::external::Instance)", "type": "object", "properties": { "description": { "type": "string" }, "disks": { "description": "The disks to be created or attached for this instance.", "default": [], "type": "array", "items": { "$ref": "#/components/schemas/InstanceDiskAttachment" } }, "external_ips": { "description": "The external IP addresses provided to this instance.\n\nBy default, all instances have outbound connectivity, but no inbound connectivity. These external addresses can be used to provide a fixed, known IP address for making inbound connections to the instance.", "default": [], "type": "array", "items": { "$ref": "#/components/schemas/ExternalIpCreate" } }, "hostname": { "type": "string" }, "memory": { "$ref": "#/components/schemas/ByteCount" }, "name": { "$ref": "#/components/schemas/Name" }, "ncpus": { "$ref": "#/components/schemas/InstanceCpuCount" }, "network_interfaces": { "description": "The network interfaces to be created for this instance.", "default": { "type": "default" }, "allOf": [ { "$ref": "#/components/schemas/InstanceNetworkInterfaceAttachment" } ] }, "start": { "description": "Should this instance be started upon creation; true by default.", "default": true, "type": "boolean" }, "user_data": { "description": "User data for instance initialization systems (such as cloud-init). Must be a Base64-encoded string, as specified in RFC 4648 § 4 (+ and / characters with padding). Maximum 32 KiB unencoded data.", "default": "", "type": "string", "format": "byte" } }, "required": [ "description", "hostname", "memory", "name", "ncpus" ] }, "InstanceDiskAttachment": { "description": "Describe the instance's disks at creation time", "oneOf": [ { "description": "During instance creation, create and attach disks", "type": "object", "properties": { "description": { "type": "string" }, "disk_source": { "description": "initial source for this disk", "allOf": [ { "$ref": "#/components/schemas/DiskSource" } ] }, "name": { "$ref": "#/components/schemas/Name" }, "size": { "description": "total size of the Disk in bytes", "allOf": [ { "$ref": "#/components/schemas/ByteCount" } ] }, "type": { "type": "string", "enum": [ "create" ] } }, "required": [ "description", "disk_source", "name", "size", "type" ] }, { "description": "During instance creation, attach this disk", "type": "object", "properties": { "name": { "description": "A disk name to attach", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "type": { "type": "string", "enum": [ "attach" ] } }, "required": [ "name", "type" ] } ] }, "InstanceMigrate": { "description": "Migration parameters for an [`Instance`](omicron_common::api::external::Instance)", "type": "object", "properties": { "dst_sled_id": { "type": "string", "format": "uuid" } }, "required": [ "dst_sled_id" ] }, "InstanceNetworkInterfaceAttachment": { "description": "Describes an attachment of a `NetworkInterface` to an `Instance`, at the time the instance is created.", "oneOf": [ { "description": "Create one or more `NetworkInterface`s for the `Instance`.\n\nIf more than one interface is provided, then the first will be designated the primary interface for the instance.", "type": "object", "properties": { "params": { "type": "array", "items": { "$ref": "#/components/schemas/NetworkInterfaceCreate" } }, "type": { "type": "string", "enum": [ "create" ] } }, "required": [ "params", "type" ] }, { "description": "The default networking configuration for an instance is to create a single primary interface with an automatically-assigned IP address. The IP will be pulled from the Project's default VPC / VPC Subnet.", "type": "object", "properties": { "type": { "type": "string", "enum": [ "default" ] } }, "required": [ "type" ] }, { "description": "No network interfaces at all will be created for the instance.", "type": "object", "properties": { "type": { "type": "string", "enum": [ "none" ] } }, "required": [ "type" ] } ] }, "InstanceResultsPage": { "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/Instance" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "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" ] }, "InstanceState": { "description": "Running state of an Instance (primarily: booted or stopped)\n\nThis 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" ] } ] }, "IpKind": { "description": "The kind of an external IP address for an instance", "type": "string", "enum": [ "ephemeral", "floating" ] }, "IpNet": { "oneOf": [ { "title": "v4", "allOf": [ { "$ref": "#/components/schemas/Ipv4Net" } ] }, { "title": "v6", "allOf": [ { "$ref": "#/components/schemas/Ipv6Net" } ] } ] }, "IpPool": { "description": "Identity-related metadata that's included in nearly all public API objects", "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" } ] }, "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", "time_created", "time_modified" ] }, "IpPoolCreate": { "description": "Create-time parameters for an IP Pool.\n\nSee [`IpPool`](crate::external_api::views::IpPool)", "type": "object", "properties": { "description": { "type": "string" }, "name": { "$ref": "#/components/schemas/Name" } }, "required": [ "description", "name" ] }, "IpPoolRange": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "range": { "$ref": "#/components/schemas/IpRange" }, "time_created": { "type": "string", "format": "date-time" } }, "required": [ "id", "range", "time_created" ] }, "IpPoolRangeResultsPage": { "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/IpPoolRange" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "IpPoolResultsPage": { "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/IpPool" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "IpPoolUpdate": { "description": "Parameters for updating an IP Pool", "type": "object", "properties": { "description": { "nullable": true, "type": "string" }, "name": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Name" } ] } } }, "IpRange": { "oneOf": [ { "title": "v4", "allOf": [ { "$ref": "#/components/schemas/Ipv4Range" } ] }, { "title": "v6", "allOf": [ { "$ref": "#/components/schemas/Ipv6Range" } ] } ] }, "Ipv4Net": { "example": "192.168.1.0/24", "title": "An IPv4 subnet", "description": "An IPv4 subnet, including prefix and subnet mask", "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])/([8-9]|1[0-9]|2[0-9]|3[0-2])$" }, "Ipv4Range": { "description": "A non-decreasing IPv4 address range, inclusive of both ends.\n\nThe first address must be less than or equal to the last address.", "type": "object", "properties": { "first": { "type": "string", "format": "ipv4" }, "last": { "type": "string", "format": "ipv4" } }, "required": [ "first", "last" ] }, "Ipv6Net": { "example": "fd12:3456::/64", "title": "An IPv6 subnet", "description": "An IPv6 subnet, including prefix and subnet mask", "type": "string", "pattern": "^([fF][dD])[0-9a-fA-F]{2}:(([0-9a-fA-F]{1,4}:){6}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,6}:)\\/([1-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8])$" }, "Ipv6Range": { "description": "A non-decreasing IPv6 address range, inclusive of both ends.\n\nThe first address must be less than or equal to the last address.", "type": "object", "properties": { "first": { "type": "string", "format": "ipv6" }, "last": { "type": "string", "format": "ipv6" } }, "required": [ "first", "last" ] }, "L4PortRange": { "example": "22", "title": "A range of IP ports", "description": "An inclusive-inclusive range of IP ports. The second port may be omitted to represent a single port", "type": "string", "pattern": "^[0-9]{1,5}(-[0-9]{1,5})?$", "minLength": 1, "maxLength": 11 }, "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]{2}:){5}[0-9a-fA-F]{2}$", "minLength": 17, "maxLength": 17 }, "Measurement": { "description": "A `Measurement` is a timestamped datum from a single metric", "type": "object", "properties": { "datum": { "$ref": "#/components/schemas/Datum" }, "timestamp": { "type": "string", "format": "date-time" } }, "required": [ "datum", "timestamp" ] }, "MeasurementResultsPage": { "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/Measurement" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "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 though they may contain a UUID.", "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-z0-9-]*[a-zA-Z0-9]$", "maxLength": 63 }, "NameOrId": { "oneOf": [ { "title": "id", "allOf": [ { "type": "string", "format": "uuid" } ] }, { "title": "name", "allOf": [ { "$ref": "#/components/schemas/Name" } ] } ] }, "NetworkInterface": { "description": "A `NetworkInterface` represents a virtual network interface device.", "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 to which the interface belongs.", "type": "string", "format": "uuid" }, "ip": { "description": "The IP address assigned to this interface.", "type": "string", "format": "ip" }, "mac": { "description": "The MAC address assigned to this interface.", "allOf": [ { "$ref": "#/components/schemas/MacAddr" } ] }, "name": { "description": "unique, mutable, user-controlled identifier for each resource", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "primary": { "description": "True if this interface is the primary for the instance to which it's attached.", "type": "boolean" }, "subnet_id": { "description": "The subnet to which the interface 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" }, "vpc_id": { "description": "The VPC to which the interface belongs.", "type": "string", "format": "uuid" } }, "required": [ "description", "id", "instance_id", "ip", "mac", "name", "primary", "subnet_id", "time_created", "time_modified", "vpc_id" ] }, "NetworkInterfaceCreate": { "description": "Create-time parameters for a [`NetworkInterface`](omicron_common::api::external::NetworkInterface)", "type": "object", "properties": { "description": { "type": "string" }, "ip": { "nullable": true, "description": "The IP address for the interface. One will be auto-assigned if not provided.", "type": "string", "format": "ip" }, "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" ] }, "NetworkInterfaceResultsPage": { "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/NetworkInterface" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "NetworkInterfaceUpdate": { "description": "Parameters for updating a [`NetworkInterface`](omicron_common::api::external::NetworkInterface).\n\nNote that modifying IP addresses for an interface is not yet supported, a new interface must be created instead.", "type": "object", "properties": { "description": { "nullable": true, "type": "string" }, "name": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "primary": { "description": "Make a secondary interface the instance's primary interface.\n\nIf applied to a secondary interface, that interface will become the primary on the next reboot of the instance. Note that this may have implications for routing between instances, as the new primary interface will be on a distinct subnet from the previous primary interface.\n\nNote that this can only be used to select a new primary interface for an instance. Requests to change the primary interface into a secondary will return an error.", "default": false, "type": "boolean" } } }, "NodeName": { "description": "Unique name for a saga [`Node`]\n\nEach node requires a string name that's unique within its DAG. The name is used to identify its output. Nodes that depend on a given node (either directly or indirectly) can access the node's output using its name.", "type": "string" }, "Organization": { "description": "Client view of an [`Organization`]", "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" } ] }, "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", "time_created", "time_modified" ] }, "OrganizationCreate": { "description": "Create-time parameters for an [`Organization`](crate::external_api::views::Organization)", "type": "object", "properties": { "description": { "type": "string" }, "name": { "$ref": "#/components/schemas/Name" } }, "required": [ "description", "name" ] }, "OrganizationResultsPage": { "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/Organization" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "OrganizationRole": { "type": "string", "enum": [ "admin", "collaborator", "viewer" ] }, "OrganizationRolePolicy": { "description": "Client view of a [`Policy`], which describes how this resource may be accessed\n\nNote 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/OrganizationRoleRoleAssignment" } } }, "required": [ "role_assignments" ] }, "OrganizationRoleRoleAssignment": { "description": "Describes the assignment of a particular role on a particular resource to a particular identity (user, group, etc.)\n\nThe 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/OrganizationRole" } }, "required": [ "identity_id", "identity_type", "role_name" ] }, "OrganizationUpdate": { "description": "Updateable properties of an [`Organization`](crate::external_api::views::Organization)", "type": "object", "properties": { "description": { "nullable": true, "type": "string" }, "name": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Name" } ] } } }, "Password": { "title": "A password used to authenticate a user", "description": "Passwords may be subject to additional constraints.", "type": "string", "maxLength": 512 }, "PhysicalDisk": { "description": "Client view of a [`PhysicalDisk`]", "type": "object", "properties": { "disk_type": { "$ref": "#/components/schemas/PhysicalDiskType" }, "id": { "description": "unique, immutable, system-controlled identifier for each resource", "type": "string", "format": "uuid" }, "model": { "type": "string" }, "serial": { "type": "string" }, "sled_id": { "nullable": true, "description": "The sled to which this disk is attached, if any.", "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" }, "vendor": { "type": "string" } }, "required": [ "disk_type", "id", "model", "serial", "time_created", "time_modified", "vendor" ] }, "PhysicalDiskResultsPage": { "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/PhysicalDisk" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "PhysicalDiskType": { "type": "string", "enum": [ "internal", "external" ] }, "Project": { "description": "Client view of a [`Project`]", "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" } ] }, "organization_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", "id", "name", "organization_id", "time_created", "time_modified" ] }, "ProjectCreate": { "description": "Create-time parameters for a [`Project`](crate::external_api::views::Project)", "type": "object", "properties": { "description": { "type": "string" }, "name": { "$ref": "#/components/schemas/Name" } }, "required": [ "description", "name" ] }, "ProjectResultsPage": { "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/Project" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "ProjectRole": { "type": "string", "enum": [ "admin", "collaborator", "viewer" ] }, "ProjectRolePolicy": { "description": "Client view of a [`Policy`], which describes how this resource may be accessed\n\nNote 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/ProjectRoleRoleAssignment" } } }, "required": [ "role_assignments" ] }, "ProjectRoleRoleAssignment": { "description": "Describes the assignment of a particular role on a particular resource to a particular identity (user, group, etc.)\n\nThe 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/ProjectRole" } }, "required": [ "identity_id", "identity_type", "role_name" ] }, "ProjectUpdate": { "description": "Updateable properties of a [`Project`](crate::external_api::views::Project)", "type": "object", "properties": { "description": { "nullable": true, "type": "string" }, "name": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Name" } ] } } }, "Rack": { "description": "Client view of an [`Rack`]", "type": "object", "properties": { "id": { "description": "unique, immutable, system-controlled identifier for each resource", "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": [ "id", "time_created", "time_modified" ] }, "RackResultsPage": { "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/Rack" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "Role": { "description": "Client view of a [`Role`]", "type": "object", "properties": { "description": { "type": "string" }, "name": { "$ref": "#/components/schemas/RoleName" } }, "required": [ "description", "name" ] }, "RoleName": { "title": "A name for a built-in role", "description": "Role names consist of two string components separated by dot (\".\").", "type": "string", "pattern": "[a-z-]+\\.[a-z-]+", "maxLength": 63 }, "RoleResultsPage": { "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/Role" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "RouteDestination": { "description": "A `RouteDestination` is used to match traffic with a routing rule, on the destination of that traffic.\n\nWhen traffic is to be sent to a destination that is within a given `RouteDestination`, the corresponding [`RouterRoute`] applies, and traffic will be forward to the [`RouteTarget`] for that rule.", "oneOf": [ { "description": "Route applies to traffic destined for a specific IP address", "type": "object", "properties": { "type": { "type": "string", "enum": [ "ip" ] }, "value": { "type": "string", "format": "ip" } }, "required": [ "type", "value" ] }, { "description": "Route applies to traffic destined for a specific IP subnet", "type": "object", "properties": { "type": { "type": "string", "enum": [ "ip_net" ] }, "value": { "$ref": "#/components/schemas/IpNet" } }, "required": [ "type", "value" ] }, { "description": "Route applies to traffic destined for the given VPC.", "type": "object", "properties": { "type": { "type": "string", "enum": [ "vpc" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "description": "Route applies to traffic", "type": "object", "properties": { "type": { "type": "string", "enum": [ "subnet" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] } ] }, "RouteTarget": { "description": "A `RouteTarget` describes the possible locations that traffic matching a route destination can be sent.", "oneOf": [ { "description": "Forward traffic to a particular IP address.", "type": "object", "properties": { "type": { "type": "string", "enum": [ "ip" ] }, "value": { "type": "string", "format": "ip" } }, "required": [ "type", "value" ] }, { "description": "Forward traffic to a VPC", "type": "object", "properties": { "type": { "type": "string", "enum": [ "vpc" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "description": "Forward traffic to a VPC Subnet", "type": "object", "properties": { "type": { "type": "string", "enum": [ "subnet" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "description": "Forward traffic to a specific instance", "type": "object", "properties": { "type": { "type": "string", "enum": [ "instance" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "description": "Forward traffic to an internet gateway", "type": "object", "properties": { "type": { "type": "string", "enum": [ "internet_gateway" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] } ] }, "RouterRoute": { "description": "A route defines a rule that governs where traffic should be sent based on its destination.", "type": "object", "properties": { "description": { "description": "human-readable free-form text about a resource", "type": "string" }, "destination": { "$ref": "#/components/schemas/RouteDestination" }, "id": { "description": "unique, immutable, system-controlled identifier for each resource", "type": "string", "format": "uuid" }, "kind": { "description": "Describes the kind of router. Set at creation. `read-only`", "allOf": [ { "$ref": "#/components/schemas/RouterRouteKind" } ] }, "name": { "description": "unique, mutable, user-controlled identifier for each resource", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "target": { "$ref": "#/components/schemas/RouteTarget" }, "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" }, "vpc_router_id": { "description": "The VPC Router to which the route belongs.", "type": "string", "format": "uuid" } }, "required": [ "description", "destination", "id", "kind", "name", "target", "time_created", "time_modified", "vpc_router_id" ] }, "RouterRouteCreateParams": { "description": "Create-time parameters for a [`RouterRoute`]", "type": "object", "properties": { "description": { "type": "string" }, "destination": { "$ref": "#/components/schemas/RouteDestination" }, "name": { "$ref": "#/components/schemas/Name" }, "target": { "$ref": "#/components/schemas/RouteTarget" } }, "required": [ "description", "destination", "name", "target" ] }, "RouterRouteKind": { "description": "The classification of a [`RouterRoute`] as defined by the system. The kind determines certain attributes such as if the route is modifiable and describes how or where the route was created.\n\nSee [RFD-21](https://rfd.shared.oxide.computer/rfd/0021#concept-router) for more context", "oneOf": [ { "description": "Determines the default destination of traffic, such as whether it goes to the internet or not.\n\n`Destination: An Internet Gateway` `Modifiable: true`", "type": "string", "enum": [ "default" ] }, { "description": "Automatically added for each VPC Subnet in the VPC\n\n`Destination: A VPC Subnet` `Modifiable: false`", "type": "string", "enum": [ "vpc_subnet" ] }, { "description": "Automatically added when VPC peering is established\n\n`Destination: A different VPC` `Modifiable: false`", "type": "string", "enum": [ "vpc_peering" ] }, { "description": "Created by a user See [`RouteTarget`]\n\n`Destination: User defined` `Modifiable: true`", "type": "string", "enum": [ "custom" ] } ] }, "RouterRouteResultsPage": { "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/RouterRoute" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "RouterRouteUpdateParams": { "description": "Updateable properties of a [`RouterRoute`]", "type": "object", "properties": { "description": { "nullable": true, "type": "string" }, "destination": { "$ref": "#/components/schemas/RouteDestination" }, "name": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "target": { "$ref": "#/components/schemas/RouteTarget" } }, "required": [ "destination", "target" ] }, "Saga": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "state": { "$ref": "#/components/schemas/SagaState" } }, "required": [ "id", "state" ] }, "SagaErrorInfo": { "oneOf": [ { "type": "object", "properties": { "error": { "type": "string", "enum": [ "action_failed" ] }, "source_error": {} }, "required": [ "error", "source_error" ] }, { "type": "object", "properties": { "error": { "type": "string", "enum": [ "deserialize_failed" ] }, "message": { "type": "string" } }, "required": [ "error", "message" ] }, { "type": "object", "properties": { "error": { "type": "string", "enum": [ "injected_error" ] } }, "required": [ "error" ] }, { "type": "object", "properties": { "error": { "type": "string", "enum": [ "serialize_failed" ] }, "message": { "type": "string" } }, "required": [ "error", "message" ] }, { "type": "object", "properties": { "error": { "type": "string", "enum": [ "subsaga_create_failed" ] }, "message": { "type": "string" } }, "required": [ "error", "message" ] } ] }, "SagaResultsPage": { "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/Saga" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "SagaState": { "oneOf": [ { "type": "object", "properties": { "state": { "type": "string", "enum": [ "running" ] } }, "required": [ "state" ] }, { "type": "object", "properties": { "state": { "type": "string", "enum": [ "succeeded" ] } }, "required": [ "state" ] }, { "type": "object", "properties": { "error_info": { "$ref": "#/components/schemas/SagaErrorInfo" }, "error_node_name": { "$ref": "#/components/schemas/NodeName" }, "state": { "type": "string", "enum": [ "failed" ] } }, "required": [ "error_info", "error_node_name", "state" ] } ] }, "SamlIdentityProvider": { "description": "Identity-related metadata that's included in nearly all public API objects", "type": "object", "properties": { "acs_url": { "description": "service provider endpoint where the response will be sent", "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" }, "idp_entity_id": { "description": "idp's entity id", "type": "string" }, "name": { "description": "unique, mutable, user-controlled identifier for each resource", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "public_cert": { "nullable": true, "description": "optional request signing public certificate (base64 encoded der file)", "type": "string" }, "slo_url": { "description": "service provider endpoint where the idp should send log out requests", "type": "string" }, "sp_client_id": { "description": "sp's client id", "type": "string" }, "technical_contact_email": { "description": "customer's technical contact for saml configuration", "type": "string" }, "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": [ "acs_url", "description", "id", "idp_entity_id", "name", "slo_url", "sp_client_id", "technical_contact_email", "time_created", "time_modified" ] }, "SamlIdentityProviderCreate": { "description": "Create-time identity-related parameters", "type": "object", "properties": { "acs_url": { "description": "service provider endpoint where the response will be sent", "type": "string" }, "description": { "type": "string" }, "group_attribute_name": { "nullable": true, "description": "If set, SAML attributes with this name will be considered to denote a user's group membership, where the attribute value(s) should be a comma-separated list of group names.", "type": "string" }, "idp_entity_id": { "description": "idp's entity id", "type": "string" }, "idp_metadata_source": { "description": "the source of an identity provider metadata descriptor", "allOf": [ { "$ref": "#/components/schemas/IdpMetadataSource" } ] }, "name": { "$ref": "#/components/schemas/Name" }, "signing_keypair": { "nullable": true, "description": "optional request signing key pair", "allOf": [ { "$ref": "#/components/schemas/DerEncodedKeyPair" } ] }, "slo_url": { "description": "service provider endpoint where the idp should send log out requests", "type": "string" }, "sp_client_id": { "description": "sp's client id", "type": "string" }, "technical_contact_email": { "description": "customer's technical contact for saml configuration", "type": "string" } }, "required": [ "acs_url", "description", "idp_entity_id", "idp_metadata_source", "name", "slo_url", "sp_client_id", "technical_contact_email" ] }, "SemverVersion": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+([\\-\\+].+)?$" }, "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" ] } ] }, "Silo": { "description": "Client view of a ['Silo']", "type": "object", "properties": { "description": { "description": "human-readable free-form text about a resource", "type": "string" }, "discoverable": { "description": "A silo where discoverable is false can be retrieved only by its id - it will not be part of the \"list all silos\" output.", "type": "boolean" }, "id": { "description": "unique, immutable, system-controlled identifier for each resource", "type": "string", "format": "uuid" }, "identity_mode": { "description": "How users and groups are managed in this Silo", "allOf": [ { "$ref": "#/components/schemas/SiloIdentityMode" } ] }, "name": { "description": "unique, mutable, user-controlled identifier for each resource", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "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", "discoverable", "id", "identity_mode", "name", "time_created", "time_modified" ] }, "SiloCreate": { "description": "Create-time parameters for a [`Silo`](crate::external_api::views::Silo)", "type": "object", "properties": { "admin_group_name": { "nullable": true, "description": "If set, this group will be created during Silo creation and granted the \"Silo Admin\" role. Identity providers can assert that users belong to this group and those users can log in and further initialize the Silo.\n\nNote that if configuring a SAML based identity provider, group_attribute_name must be set for users to be considered part of a group. See [`SamlIdentityProviderCreate`] for more information.", "type": "string" }, "description": { "type": "string" }, "discoverable": { "type": "boolean" }, "identity_mode": { "$ref": "#/components/schemas/SiloIdentityMode" }, "name": { "$ref": "#/components/schemas/Name" } }, "required": [ "description", "discoverable", "identity_mode", "name" ] }, "SiloIdentityMode": { "description": "Describes how identities are managed and users are authenticated in this Silo", "oneOf": [ { "description": "Users are authenticated with SAML using an external authentication provider. The system updates information about users and groups only during successful authentication (i.e,. \"JIT provisioning\" of users and groups).", "type": "string", "enum": [ "saml_jit" ] }, { "description": "The system is the source of truth about users. There is no linkage to an external authentication provider or identity provider.", "type": "string", "enum": [ "local_only" ] } ] }, "SiloResultsPage": { "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/Silo" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "SiloRole": { "type": "string", "enum": [ "admin", "collaborator", "viewer" ] }, "SiloRolePolicy": { "description": "Client view of a [`Policy`], which describes how this resource may be accessed\n\nNote 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" ] }, "SiloRoleRoleAssignment": { "description": "Describes the assignment of a particular role on a particular resource to a particular identity (user, group, etc.)\n\nThe 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" ] }, "Sled": { "description": "Client view of a [`Sled`]", "type": "object", "properties": { "baseboard": { "$ref": "#/components/schemas/Baseboard" }, "id": { "description": "unique, immutable, system-controlled identifier for each resource", "type": "string", "format": "uuid" }, "service_address": { "type": "string" }, "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": [ "baseboard", "id", "service_address", "time_created", "time_modified" ] }, "SledResultsPage": { "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/Sled" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "Snapshot": { "description": "Client view of a Snapshot", "type": "object", "properties": { "description": { "description": "human-readable free-form text about a resource", "type": "string" }, "disk_id": { "type": "string", "format": "uuid" }, "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" } ] }, "project_id": { "type": "string", "format": "uuid" }, "size": { "$ref": "#/components/schemas/ByteCount" }, "state": { "$ref": "#/components/schemas/SnapshotState" }, "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", "disk_id", "id", "name", "project_id", "size", "state", "time_created", "time_modified" ] }, "SnapshotCreate": { "description": "Create-time parameters for a [`Snapshot`](crate::external_api::views::Snapshot)", "type": "object", "properties": { "description": { "type": "string" }, "disk": { "description": "The name of the disk to be snapshotted", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "name": { "$ref": "#/components/schemas/Name" } }, "required": [ "description", "disk", "name" ] }, "SnapshotResultsPage": { "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/Snapshot" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "SnapshotState": { "type": "string", "enum": [ "creating", "ready", "faulted", "destroyed" ] }, "SpoofLoginBody": { "type": "object", "properties": { "username": { "type": "string" } }, "required": [ "username" ] }, "SshKey": { "description": "Client view of a [`SshKey`]", "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" ] }, "SshKeyCreate": { "description": "Create-time parameters for an [`SshKey`](crate::external_api::views::SshKey)", "type": "object", "properties": { "description": { "type": "string" }, "name": { "$ref": "#/components/schemas/Name" }, "public_key": { "description": "SSH public key, e.g., `\"ssh-ed25519 AAAAC3NzaC...\"`", "type": "string" } }, "required": [ "description", "name", "public_key" ] }, "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": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "SystemUpdate": { "description": "Identity-related metadata that's included in \"asset\" public API objects (which generally have no name or description)", "type": "object", "properties": { "id": { "description": "unique, immutable, system-controlled identifier for each resource", "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" }, "version": { "$ref": "#/components/schemas/SemverVersion" } }, "required": [ "id", "time_created", "time_modified", "version" ] }, "SystemUpdateResultsPage": { "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/SystemUpdate" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "SystemUpdateStart": { "type": "object", "properties": { "version": { "$ref": "#/components/schemas/SemverVersion" } }, "required": [ "version" ] }, "SystemVersion": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/UpdateStatus" }, "version_range": { "$ref": "#/components/schemas/VersionRange" } }, "required": [ "status", "version_range" ] }, "TimeseriesName": { "title": "The name of a timeseries", "description": "Names are constructed by concatenating the target and metric names with ':'. Target and metric names must be lowercase alphanumeric characters with '_' separating words.", "type": "string", "pattern": "(([a-z]+[a-z0-9]*)(_([a-z0-9]+))*):(([a-z]+[a-z0-9]*)(_([a-z0-9]+))*)" }, "TimeseriesSchema": { "description": "The schema for a timeseries.\n\nThis includes the name of the timeseries, as well as the datum type of its metric and the schema for each field.", "type": "object", "properties": { "created": { "type": "string", "format": "date-time" }, "datum_type": { "$ref": "#/components/schemas/DatumType" }, "field_schema": { "type": "array", "items": { "$ref": "#/components/schemas/FieldSchema" } }, "timeseries_name": { "$ref": "#/components/schemas/TimeseriesName" } }, "required": [ "created", "datum_type", "field_schema", "timeseries_name" ] }, "TimeseriesSchemaResultsPage": { "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/TimeseriesSchema" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "UpdateDeployment": { "description": "Identity-related metadata that's included in \"asset\" public API objects (which generally have no name or description)", "type": "object", "properties": { "id": { "description": "unique, immutable, system-controlled identifier for each resource", "type": "string", "format": "uuid" }, "status": { "$ref": "#/components/schemas/UpdateStatus" }, "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" }, "version": { "$ref": "#/components/schemas/SemverVersion" } }, "required": [ "id", "status", "time_created", "time_modified", "version" ] }, "UpdateDeploymentResultsPage": { "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/UpdateDeployment" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "UpdateStatus": { "oneOf": [ { "type": "object", "properties": { "status": { "type": "string", "enum": [ "updating" ] } }, "required": [ "status" ] }, { "type": "object", "properties": { "status": { "type": "string", "enum": [ "steady" ] } }, "required": [ "status" ] } ] }, "UpdateableComponent": { "description": "Identity-related metadata that's included in \"asset\" public API objects (which generally have no name or description)", "type": "object", "properties": { "component_type": { "$ref": "#/components/schemas/UpdateableComponentType" }, "device_id": { "type": "string" }, "id": { "description": "unique, immutable, system-controlled identifier for each resource", "type": "string", "format": "uuid" }, "status": { "$ref": "#/components/schemas/UpdateStatus" }, "system_version": { "$ref": "#/components/schemas/SemverVersion" }, "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" }, "version": { "$ref": "#/components/schemas/SemverVersion" } }, "required": [ "component_type", "device_id", "id", "status", "system_version", "time_created", "time_modified", "version" ] }, "UpdateableComponentResultsPage": { "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/UpdateableComponent" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "UpdateableComponentType": { "type": "string", "enum": [ "bootloader_for_rot", "bootloader_for_sp", "bootloader_for_host_proc", "hubris_for_psc_rot", "hubris_for_psc_sp", "hubris_for_sidecar_rot", "hubris_for_sidecar_sp", "hubris_for_gimlet_rot", "hubris_for_gimlet_sp", "helios_host_phase1", "helios_host_phase2", "host_omicron" ] }, "User": { "description": "Client 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" } }, "required": [ "display_name", "id", "silo_id" ] }, "UserBuiltin": { "description": "Client view of a [`UserBuiltin`]", "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" } ] }, "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", "time_created", "time_modified" ] }, "UserBuiltinResultsPage": { "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/UserBuiltin" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "UserCreate": { "description": "Create-time parameters for a [`User`](crate::external_api::views::User)", "type": "object", "properties": { "external_id": { "description": "username used to log in", "allOf": [ { "$ref": "#/components/schemas/UserId" } ] }, "password": { "description": "password used to log in", "allOf": [ { "$ref": "#/components/schemas/UserPassword" } ] } }, "required": [ "external_id", "password" ] }, "UserId": { "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 though they may contain a UUID.", "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-z0-9-]*[a-zA-Z0-9]$", "maxLength": 63 }, "UserPassword": { "description": "Parameters for setting a user's password", "oneOf": [ { "description": "Sets the user's password to the provided value", "type": "object", "properties": { "details": { "$ref": "#/components/schemas/Password" }, "user_password_value": { "type": "string", "enum": [ "password" ] } }, "required": [ "details", "user_password_value" ] }, { "description": "Invalidates any current password (disabling password authentication)", "type": "object", "properties": { "user_password_value": { "type": "string", "enum": [ "invalid_password" ] } }, "required": [ "user_password_value" ] } ] }, "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": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "UsernamePasswordCredentials": { "description": "Credentials for local user login", "type": "object", "properties": { "password": { "$ref": "#/components/schemas/Password" }, "username": { "$ref": "#/components/schemas/UserId" } }, "required": [ "password", "username" ] }, "VersionRange": { "type": "object", "properties": { "high": { "$ref": "#/components/schemas/SemverVersion" }, "low": { "$ref": "#/components/schemas/SemverVersion" } }, "required": [ "high", "low" ] }, "Vpc": { "description": "Client view of a [`Vpc`]", "type": "object", "properties": { "description": { "description": "human-readable free-form text about a resource", "type": "string" }, "dns_name": { "description": "The name used for the VPC in DNS.", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "id": { "description": "unique, immutable, system-controlled identifier for each resource", "type": "string", "format": "uuid" }, "ipv6_prefix": { "description": "The unique local IPv6 address range for subnets in this VPC", "allOf": [ { "$ref": "#/components/schemas/Ipv6Net" } ] }, "name": { "description": "unique, mutable, user-controlled identifier for each resource", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "project_id": { "description": "id for the project containing this VPC", "type": "string", "format": "uuid" }, "system_router_id": { "description": "id for the system router where subnet default routes are registered", "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", "dns_name", "id", "ipv6_prefix", "name", "project_id", "system_router_id", "time_created", "time_modified" ] }, "VpcCreate": { "description": "Create-time parameters for a [`Vpc`](crate::external_api::views::Vpc)", "type": "object", "properties": { "description": { "type": "string" }, "dns_name": { "$ref": "#/components/schemas/Name" }, "ipv6_prefix": { "nullable": true, "description": "The IPv6 prefix for this VPC.\n\nAll IPv6 subnets created from this VPC must be taken from this range, which sould be a Unique Local Address in the range `fd00::/48`. The default VPC Subnet will have the first `/64` range from this prefix.", "allOf": [ { "$ref": "#/components/schemas/Ipv6Net" } ] }, "name": { "$ref": "#/components/schemas/Name" } }, "required": [ "description", "dns_name", "name" ] }, "VpcFirewallRule": { "description": "A single rule in a VPC firewall", "type": "object", "properties": { "action": { "description": "whether traffic matching the rule should be allowed or dropped", "allOf": [ { "$ref": "#/components/schemas/VpcFirewallRuleAction" } ] }, "description": { "description": "human-readable free-form text about a resource", "type": "string" }, "direction": { "description": "whether this rule is for incoming or outgoing traffic", "allOf": [ { "$ref": "#/components/schemas/VpcFirewallRuleDirection" } ] }, "filters": { "description": "reductions on the scope of the rule", "allOf": [ { "$ref": "#/components/schemas/VpcFirewallRuleFilter" } ] }, "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" } ] }, "priority": { "description": "the relative priority of this rule", "type": "integer", "format": "uint16", "minimum": 0 }, "status": { "description": "whether this rule is in effect", "allOf": [ { "$ref": "#/components/schemas/VpcFirewallRuleStatus" } ] }, "targets": { "description": "list of sets of instances that the rule applies to", "type": "array", "items": { "$ref": "#/components/schemas/VpcFirewallRuleTarget" } }, "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" }, "vpc_id": { "description": "the VPC to which this rule belongs", "type": "string", "format": "uuid" } }, "required": [ "action", "description", "direction", "filters", "id", "name", "priority", "status", "targets", "time_created", "time_modified", "vpc_id" ] }, "VpcFirewallRuleAction": { "type": "string", "enum": [ "allow", "deny" ] }, "VpcFirewallRuleDirection": { "type": "string", "enum": [ "inbound", "outbound" ] }, "VpcFirewallRuleFilter": { "description": "Filter for a firewall rule. A given packet must match every field that is present for the rule to apply to it. A packet matches a field if any entry in that field matches the packet.", "type": "object", "properties": { "hosts": { "nullable": true, "description": "If present, the sources (if incoming) or destinations (if outgoing) this rule applies to.", "type": "array", "items": { "$ref": "#/components/schemas/VpcFirewallRuleHostFilter" } }, "ports": { "nullable": true, "description": "If present, the destination ports this rule applies to.", "type": "array", "items": { "$ref": "#/components/schemas/L4PortRange" } }, "protocols": { "nullable": true, "description": "If present, the networking protocols this rule applies to.", "type": "array", "items": { "$ref": "#/components/schemas/VpcFirewallRuleProtocol" } } } }, "VpcFirewallRuleHostFilter": { "description": "The `VpcFirewallRuleHostFilter` is used to filter traffic on the basis of its source or destination host.", "oneOf": [ { "description": "The rule applies to traffic from/to all instances in the VPC", "type": "object", "properties": { "type": { "type": "string", "enum": [ "vpc" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "description": "The rule applies to traffic from/to all instances in the VPC Subnet", "type": "object", "properties": { "type": { "type": "string", "enum": [ "subnet" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "description": "The rule applies to traffic from/to this specific instance", "type": "object", "properties": { "type": { "type": "string", "enum": [ "instance" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "description": "The rule applies to traffic from/to a specific IP address", "type": "object", "properties": { "type": { "type": "string", "enum": [ "ip" ] }, "value": { "type": "string", "format": "ip" } }, "required": [ "type", "value" ] }, { "description": "The rule applies to traffic from/to a specific IP subnet", "type": "object", "properties": { "type": { "type": "string", "enum": [ "ip_net" ] }, "value": { "$ref": "#/components/schemas/IpNet" } }, "required": [ "type", "value" ] } ] }, "VpcFirewallRuleProtocol": { "description": "The protocols that may be specified in a firewall rule's filter", "type": "string", "enum": [ "TCP", "UDP", "ICMP" ] }, "VpcFirewallRuleStatus": { "type": "string", "enum": [ "disabled", "enabled" ] }, "VpcFirewallRuleTarget": { "description": "A `VpcFirewallRuleTarget` is used to specify the set of [`Instance`]s to which a firewall rule applies.", "oneOf": [ { "description": "The rule applies to all instances in the VPC", "type": "object", "properties": { "type": { "type": "string", "enum": [ "vpc" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "description": "The rule applies to all instances in the VPC Subnet", "type": "object", "properties": { "type": { "type": "string", "enum": [ "subnet" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "description": "The rule applies to this specific instance", "type": "object", "properties": { "type": { "type": "string", "enum": [ "instance" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "description": "The rule applies to a specific IP address", "type": "object", "properties": { "type": { "type": "string", "enum": [ "ip" ] }, "value": { "type": "string", "format": "ip" } }, "required": [ "type", "value" ] }, { "description": "The rule applies to a specific IP subnet", "type": "object", "properties": { "type": { "type": "string", "enum": [ "ip_net" ] }, "value": { "$ref": "#/components/schemas/IpNet" } }, "required": [ "type", "value" ] } ] }, "VpcFirewallRuleUpdate": { "description": "A single rule in a VPC firewall", "type": "object", "properties": { "action": { "description": "whether traffic matching the rule should be allowed or dropped", "allOf": [ { "$ref": "#/components/schemas/VpcFirewallRuleAction" } ] }, "description": { "description": "human-readable free-form text about a resource", "type": "string" }, "direction": { "description": "whether this rule is for incoming or outgoing traffic", "allOf": [ { "$ref": "#/components/schemas/VpcFirewallRuleDirection" } ] }, "filters": { "description": "reductions on the scope of the rule", "allOf": [ { "$ref": "#/components/schemas/VpcFirewallRuleFilter" } ] }, "name": { "description": "name of the rule, unique to this VPC", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "priority": { "description": "the relative priority of this rule", "type": "integer", "format": "uint16", "minimum": 0 }, "status": { "description": "whether this rule is in effect", "allOf": [ { "$ref": "#/components/schemas/VpcFirewallRuleStatus" } ] }, "targets": { "description": "list of sets of instances that the rule applies to", "type": "array", "items": { "$ref": "#/components/schemas/VpcFirewallRuleTarget" } } }, "required": [ "action", "description", "direction", "filters", "name", "priority", "status", "targets" ] }, "VpcFirewallRuleUpdateParams": { "description": "Updateable properties of a `Vpc`'s firewall Note that VpcFirewallRules are implicitly created along with a Vpc, so there is no explicit creation.", "type": "object", "properties": { "rules": { "type": "array", "items": { "$ref": "#/components/schemas/VpcFirewallRuleUpdate" } } }, "required": [ "rules" ] }, "VpcFirewallRules": { "description": "Collection of a Vpc's firewall rules", "type": "object", "properties": { "rules": { "type": "array", "items": { "$ref": "#/components/schemas/VpcFirewallRule" } } }, "required": [ "rules" ] }, "VpcResultsPage": { "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/Vpc" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "VpcRouter": { "description": "A VPC router defines a series of rules that indicate where traffic should be sent depending on its destination.", "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" }, "kind": { "$ref": "#/components/schemas/VpcRouterKind" }, "name": { "description": "unique, mutable, user-controlled identifier for each resource", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "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" }, "vpc_id": { "description": "The VPC to which the router belongs.", "type": "string", "format": "uuid" } }, "required": [ "description", "id", "kind", "name", "time_created", "time_modified", "vpc_id" ] }, "VpcRouterCreate": { "description": "Create-time parameters for a [`VpcRouter`](crate::external_api::views::VpcRouter)", "type": "object", "properties": { "description": { "type": "string" }, "name": { "$ref": "#/components/schemas/Name" } }, "required": [ "description", "name" ] }, "VpcRouterKind": { "type": "string", "enum": [ "system", "custom" ] }, "VpcRouterResultsPage": { "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/VpcRouter" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "VpcRouterUpdate": { "description": "Updateable properties of a [`VpcRouter`](crate::external_api::views::VpcRouter)", "type": "object", "properties": { "description": { "nullable": true, "type": "string" }, "name": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Name" } ] } } }, "VpcSubnet": { "description": "A VPC subnet represents a logical grouping for instances that allows network traffic between them, within a IPv4 subnetwork or optionall an IPv6 subnetwork.", "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" }, "ipv4_block": { "description": "The IPv4 subnet CIDR block.", "allOf": [ { "$ref": "#/components/schemas/Ipv4Net" } ] }, "ipv6_block": { "description": "The IPv6 subnet CIDR block.", "allOf": [ { "$ref": "#/components/schemas/Ipv6Net" } ] }, "name": { "description": "unique, mutable, user-controlled identifier for each resource", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "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" }, "vpc_id": { "description": "The VPC to which the subnet belongs.", "type": "string", "format": "uuid" } }, "required": [ "description", "id", "ipv4_block", "ipv6_block", "name", "time_created", "time_modified", "vpc_id" ] }, "VpcSubnetCreate": { "description": "Create-time parameters for a [`VpcSubnet`](crate::external_api::views::VpcSubnet)", "type": "object", "properties": { "description": { "type": "string" }, "ipv4_block": { "description": "The IPv4 address range for this subnet.\n\nIt must be allocated from an RFC 1918 private address range, and must not overlap with any other existing subnet in the VPC.", "allOf": [ { "$ref": "#/components/schemas/Ipv4Net" } ] }, "ipv6_block": { "nullable": true, "description": "The IPv6 address range for this subnet.\n\nIt must be allocated from the RFC 4193 Unique Local Address range, with the prefix equal to the parent VPC's prefix. A random `/64` block will be assigned if one is not provided. It must not overlap with any existing subnet in the VPC.", "allOf": [ { "$ref": "#/components/schemas/Ipv6Net" } ] }, "name": { "$ref": "#/components/schemas/Name" } }, "required": [ "description", "ipv4_block", "name" ] }, "VpcSubnetResultsPage": { "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/VpcSubnet" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "VpcSubnetUpdate": { "description": "Updateable properties of a [`VpcSubnet`](crate::external_api::views::VpcSubnet)", "type": "object", "properties": { "description": { "nullable": true, "type": "string" }, "name": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Name" } ] } } }, "VpcUpdate": { "description": "Updateable properties of a [`Vpc`](crate::external_api::views::Vpc)", "type": "object", "properties": { "description": { "nullable": true, "type": "string" }, "dns_name": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "name": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Name" } ] } } }, "IdSortMode": { "description": "Supported set of sort modes for scanning by id only.\n\nCurrently, we only support scanning in ascending order.", "oneOf": [ { "description": "sort in increasing order of \"id\"", "type": "string", "enum": [ "id_ascending" ] } ] }, "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" ] } ] }, "NameSortMode": { "description": "Supported set of sort modes for scanning by name only\n\nCurrently, we only support scanning in ascending order.", "oneOf": [ { "description": "sort in increasing order of \"name\"", "type": "string", "enum": [ "name_ascending" ] } ] }, "DiskMetricName": { "type": "string", "enum": [ "activated", "flush", "read", "read_bytes", "write", "write_bytes" ] }, "SystemMetricName": { "type": "string", "enum": [ "virtual_disk_space_provisioned", "cpus_provisioned", "ram_provisioned" ] } } }, "tags": [ { "name": "disks", "description": "Virtual disks are used to store instance-local data which includes the operating system.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "firewall", "description": "Firewall operation controls the flow of network data into a VPC", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "hardware", "description": "These operations pertain to hardware inventory and management. Racks are the unit of expansion of an Oxide deployment. Racks are in turn composed of sleds, switches, power supplies, and a cabled backplane.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "hidden", "description": "TODO operations that will not ship to customers", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "images", "description": "Images are read-only Virtual Disks that may be used to boot Virtual Machines", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "images:global", "description": "Images are read-only Virtual Disks that may be used to boot Virtual Machines. These images are scoped globally.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "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://oxide.computer/docs/#xxx" } }, { "name": "ip-pools", "description": "IP Pools contain external IP addresses that can be assigned to virtual machine Instances.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "login", "description": "Authentication endpoints", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "metrics", "description": "Metrics provide insight into the operation of the Oxide deployment. These include telemetry on hardware and software components that can be used to understand the current state as well as to diagnose issues.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "organizations", "description": "Organizations represent a subset of users and projects in an Oxide deployment.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "policy", "description": "System-wide IAM policy", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "projects", "description": "Projects are a grouping of associated resources such as instances and disks within an organization for purposes of billing and access control.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "roles", "description": "Roles are a component of Identity and Access Management (IAM) that allow a user or agent account access to additional permissions.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "routers", "description": "Routers direct the flow of network traffic into, out of, and within a VPC via routes.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "routes", "description": "Routes define router policy.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "sagas", "description": "Sagas are the abstraction used to represent multi-step operations within the Oxide deployment. These operations can be used to query saga status and report errors.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "session", "description": "Information pertaining to the current session.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "silos", "description": "Silos represent a logical partition of users and resources.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "snapshots", "description": "Snapshots of Virtual Disks at a particular point in time.", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "subnets", "description": "This tag should be moved into a generic network tag", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "system", "description": "Internal system information", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "updates", "description": "This tag should be moved into a operations tag", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } }, { "name": "vpcs", "description": "A Virtual Private Cloud (VPC) is an isolated network environment that should probaby be moved into a more generic networking tag", "externalDocs": { "url": "http://oxide.computer/docs/#xxx" } } ] }