{ "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": "Get a disk by id", "operationId": "disk_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Disk" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/by-id/global-images/{id}": { "get": { "tags": [ "images:global" ], "summary": "Get a global image by id.", "operationId": "image_global_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GlobalImage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/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" }, "style": "simple" } ], "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": "Get an instance by id.", "operationId": "instance_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "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": "Get an instance's network interface by id.", "operationId": "instance_network_interface_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "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": "Get an organization by id", "operationId": "organization_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Organization" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/by-id/projects/{id}": { "get": { "tags": [ "projects" ], "summary": "Get a project by id", "operationId": "project_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/by-id/snapshots/{id}": { "get": { "tags": [ "snapshots" ], "summary": "Get a snapshot by id.", "operationId": "snapshot_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "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": "Get a vpc router route by id", "operationId": "vpc_router_route_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "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 VPC Router by id", "operationId": "vpc_router_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "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": "Get a VPC subnet by id.", "operationId": "vpc_subnet_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "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": "Get a VPC by id.", "operationId": "vpc_view_by_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "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": {} } } } } } }, "/hardware/racks": { "get": { "tags": [ "hardware" ], "summary": "List racks in the system.", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/IdSortMode" }, "style": "form" } ], "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 } }, "/hardware/racks/{rack_id}": { "get": { "tags": [ "hardware" ], "summary": "Fetch information about a particular rack.", "operationId": "rack_view", "parameters": [ { "in": "path", "name": "rack_id", "description": "The rack's unique ID.", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Rack" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/hardware/sleds": { "get": { "tags": [ "hardware" ], "summary": "List sleds in the system.", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/IdSortMode" }, "style": "form" } ], "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 } }, "/hardware/sleds/{sled_id}": { "get": { "tags": [ "hardware" ], "summary": "Fetch information about a sled in the system.", "operationId": "sled_view", "parameters": [ { "in": "path", "name": "sled_id", "description": "The sled's unique ID.", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Sled" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/images": { "get": { "tags": [ "images:global" ], "summary": "List global images.", "description": "Returns a list of all the global images. Global images are returned sorted by creation date, with the most recent images appearing first.", "operationId": "image_global_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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" } ], "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": [ "images:global" ], "summary": "Create a global image.", "description": "Create a new global image. This image can then be used by any user as a base for instances.", "operationId": "image_global_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" } } } }, "/images/{image_name}": { "get": { "tags": [ "images:global" ], "summary": "Get a global image.", "description": "Returns the details of a specific global image.", "operationId": "image_global_view", "parameters": [ { "in": "path", "name": "image_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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": [ "images:global" ], "summary": "Delete a global image.", "description": "Permanently delete a global image. This operation cannot be undone. Any instances using the global image will continue to run, however new instances can not be created with this image.", "operationId": "image_global_delete", "parameters": [ { "in": "path", "name": "image_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/ip-pools": { "get": { "tags": [ "ip-pools" ], "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameOrIdSortMode" }, "style": "form" } ], "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": [ "ip-pools" ], "summary": "Create a new 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" } } } }, "/ip-pools/{pool_name}": { "get": { "tags": [ "ip-pools" ], "summary": "Fetch a single IP Pool.", "operationId": "ip_pool_view", "parameters": [ { "in": "path", "name": "pool_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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": [ "ip-pools" ], "summary": "Update an IP Pool.", "operationId": "ip_pool_update", "parameters": [ { "in": "path", "name": "pool_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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": [ "ip-pools" ], "summary": "Delete an IP Pool.", "operationId": "ip_pool_delete", "parameters": [ { "in": "path", "name": "pool_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/ip-pools/{pool_name}/ranges": { "get": { "tags": [ "ip-pools" ], "summary": "List the ranges of IP addresses within an existing IP Pool.", "description": "Note that ranges are listed sorted by their first address.", "operationId": "ip_pool_range_list", "parameters": [ { "in": "path", "name": "pool_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" } ], "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 } }, "/ip-pools/{pool_name}/ranges/add": { "post": { "tags": [ "ip-pools" ], "summary": "Add a new range to an existing IP Pool.", "operationId": "ip_pool_range_add", "parameters": [ { "in": "path", "name": "pool_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" } } } }, "/ip-pools/{pool_name}/ranges/remove": { "post": { "tags": [ "ip-pools" ], "summary": "Remove a range from an existing IP Pool.", "operationId": "ip_pool_range_remove", "parameters": [ { "in": "path", "name": "pool_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" } } } }, "/login": { "post": { "tags": [ "hidden" ], "operationId": "spoof_login", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SpoofLoginBody" } } }, "required": true }, "responses": { "default": { "description": "", "content": { "*/*": { "schema": {} } } } } } }, "/login/{silo_name}/{provider_name}": { "get": { "tags": [ "login" ], "summary": "Ask the user to login to their identity provider", "description": "Either display a page asking a user for their credentials, or redirect them to their identity provider.", "operationId": "login", "parameters": [ { "in": "path", "name": "provider_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "silo_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "default": { "description": "", "content": { "*/*": { "schema": {} } } } } }, "post": { "tags": [ "login" ], "summary": "Consume some sort of credentials, and authenticate a user.", "description": "Either receive a username and password, or some sort of identity provider data (like a SAMLResponse). Use these to set the user's session cookie.", "operationId": "consume_credentials", "parameters": [ { "in": "path", "name": "provider_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "silo_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "requestBody": { "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } }, "required": true }, "responses": { "default": { "description": "", "content": { "*/*": { "schema": {} } } } } } }, "/logout": { "post": { "tags": [ "hidden" ], "operationId": "logout", "responses": { "default": { "description": "", "content": { "*/*": { "schema": {} } } } } } }, "/organizations": { "get": { "tags": [ "organizations" ], "summary": "List all organizations.", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameOrIdSortMode" }, "style": "form" } ], "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 a new organization.", "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" } } } }, "/organizations/{organization_name}": { "get": { "tags": [ "organizations" ], "summary": "Fetch a specific organization", "operationId": "organization_view", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 a specific organization.", "operationId": "organization_update", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 a specific organization.", "operationId": "organization_delete", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/policy": { "get": { "tags": [ "organizations" ], "summary": "Fetch the IAM policy for this Organization", "operationId": "organization_policy_view", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 the IAM policy for this Organization", "operationId": "organization_policy_update", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" } } } }, "/organizations/{organization_name}/projects": { "get": { "tags": [ "projects" ], "summary": "List all projects.", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameOrIdSortMode" }, "style": "form" }, { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 new project.", "operationId": "project_create", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" } } } }, "/organizations/{organization_name}/projects/{project_name}": { "get": { "tags": [ "projects" ], "summary": "Fetch a specific project", "operationId": "project_view", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 specific project.", "operationId": "project_update", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 specific project.", "operationId": "project_delete", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/disks": { "get": { "tags": [ "disks" ], "summary": "List disks in a project.", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" }, { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 in a project.", "operationId": "disk_create", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" } } } }, "/organizations/{organization_name}/projects/{project_name}/disks/{disk_name}": { "get": { "tags": [ "disks" ], "summary": "Get a single disk in a project.", "operationId": "disk_view", "parameters": [ { "in": "path", "name": "disk_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 from a project.", "operationId": "disk_delete", "parameters": [ { "in": "path", "name": "disk_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" }, { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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": "Get an image", "description": "Get the details of a specific image in a project.", "operationId": "image_view", "parameters": [ { "in": "path", "name": "image_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 in a project.", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" }, { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 in a project.", "operationId": "instance_create", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" } } } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}": { "get": { "tags": [ "instances" ], "summary": "Get an instance in a project.", "operationId": "instance_view", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 from a project.", "operationId": "instance_delete", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/disks": { "get": { "tags": [ "instances" ], "summary": "List disks attached to this instance.", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" }, { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/disks/attach": { "post": { "tags": [ "instances" ], "operationId": "instance_disk_attach", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" } } } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/disks/detach": { "post": { "tags": [ "instances" ], "operationId": "instance_disk_detach", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" } } } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/migrate": { "post": { "tags": [ "instances" ], "summary": "Migrate an instance to a different propolis-server, possibly on a different sled.", "operationId": "instance_migrate", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" } } } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/network-interfaces": { "get": { "tags": [ "instances" ], "summary": "List network interfaces attached to this instance.", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" }, { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 for an instance.", "operationId": "instance_network_interface_create", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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": "Get an interface attached to an instance.", "operationId": "instance_network_interface_view", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "interface_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 information about an instance's network interface", "operationId": "instance_network_interface_update", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "interface_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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": "Detach a network interface from an instance.", "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" }, "style": "simple" }, { "in": "path", "name": "interface_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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.", "operationId": "instance_reboot", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "202": { "description": "successfully enqueued operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Instance" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/serial-console": { "get": { "tags": [ "instances" ], "summary": "Get contents of an instance's serial console.", "operationId": "instance_serial_console", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "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 }, "style": "form" }, { "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 }, "style": "form" }, { "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 }, "style": "form" } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstanceSerialConsoleData" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/start": { "post": { "tags": [ "instances" ], "summary": "Boot an instance.", "operationId": "instance_start", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "202": { "description": "successfully enqueued operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Instance" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/stop": { "post": { "tags": [ "instances" ], "summary": "Halt an instance.", "operationId": "instance_stop", "parameters": [ { "in": "path", "name": "instance_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "202": { "description": "successfully enqueued operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Instance" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/policy": { "get": { "tags": [ "projects" ], "summary": "Fetch the IAM policy for this Project", "operationId": "project_policy_view", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 the IAM policy for this Project", "operationId": "project_policy_update", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 in a project.", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" }, { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 of a disk.", "operationId": "snapshot_create", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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": "Get a snapshot in a project.", "operationId": "snapshot_view", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "snapshot_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 from a project.", "operationId": "snapshot_delete", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "snapshot_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 in a project.", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" }, { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 in a project.", "operationId": "vpc_create", "parameters": [ { "in": "path", "name": "organization_name", "description": "The organization's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "description": "The project's unique name within the organization.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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": "Get a VPC in a project.", "operationId": "vpc_view", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 from a project.", "operationId": "vpc_delete", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 for a VPC.", "operationId": "vpc_firewall_rules_view", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 the firewall rules for a VPC", "operationId": "vpc_firewall_rules_update", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 VPC Custom and System 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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 VPC Router", "operationId": "vpc_router_create", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 VPC Router", "operationId": "vpc_router_view", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 VPC Router", "operationId": "vpc_router_update", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 from its VPC", "operationId": "vpc_router_delete", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 a Router's routes", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 VPC Router", "operationId": "vpc_router_route_create", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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": "Get a VPC Router route", "operationId": "vpc_router_route_view", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "route_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 Router route", "operationId": "vpc_router_route_update", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "route_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 from its router", "operationId": "vpc_router_route_delete", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "route_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "router_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 in a VPC.", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 in a VPC.", "operationId": "vpc_subnet_create", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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": "Get subnet in a VPC.", "operationId": "vpc_subnet_view", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "subnet_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 VPC Subnet.", "operationId": "vpc_subnet_update", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "subnet_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 from a VPC.", "operationId": "vpc_subnet_delete", "parameters": [ { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "subnet_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 in a VPC subnet.", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" }, { "in": "path", "name": "organization_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "project_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "subnet_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "vpc_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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": [ "policy" ], "summary": "Fetch the top-level IAM policy", "operationId": "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": "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" } } } }, "/roles": { "get": { "tags": [ "roles" ], "summary": "List the 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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" } ], "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 specific 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" }, "style": "simple" } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Role" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/sagas": { "get": { "tags": [ "sagas" ], "summary": "List all sagas (for debugging)", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/IdSortMode" }, "style": "form" } ], "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 } }, "/sagas/{saga_id}": { "get": { "tags": [ "sagas" ], "summary": "Fetch information about a single saga (for debugging)", "operationId": "saga_view", "parameters": [ { "in": "path", "name": "saga_id", "required": true, "schema": { "type": "string", "format": "uuid" }, "style": "simple" } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Saga" } } } }, "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/sshkeys": { "get": { "tags": [ "session" ], "summary": "List the current user's SSH public keys", "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" } ], "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 a new SSH public key for the current 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": "Get (by name) an SSH public key belonging to the current user", "operationId": "session_sshkey_view", "parameters": [ { "in": "path", "name": "ssh_key_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 (by name) an SSH public key belonging to the current user", "operationId": "session_sshkey_delete", "parameters": [ { "in": "path", "name": "ssh_key_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/silos": { "get": { "tags": [ "silos" ], "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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameOrIdSortMode" }, "style": "form" } ], "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": [ "silos" ], "summary": "Create a new 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" } } } }, "/silos/{silo_name}": { "get": { "tags": [ "silos" ], "summary": "Fetch a specific silo", "operationId": "silo_view", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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": [ "silos" ], "summary": "Delete a specific silo.", "operationId": "silo_delete", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "204": { "description": "successful deletion" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/silos/{silo_name}/identity-providers": { "get": { "tags": [ "silos" ], "summary": "List Silo identity providers", "operationId": "silo_identity_provider_list", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "query", "name": "limit", "description": "Maximum number of items returned by a single call", "schema": { "nullable": true, "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" } ], "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 } }, "/silos/{silo_name}/policy": { "get": { "tags": [ "silos" ], "summary": "Fetch the IAM policy for this Silo", "operationId": "silo_policy_view", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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 IAM policy for this Silo", "operationId": "silo_policy_update", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" } } } }, "/silos/{silo_name}/saml-identity-providers": { "post": { "tags": [ "silos" ], "summary": "Create a new SAML identity provider for a silo.", "operationId": "silo_identity_provider_create", "parameters": [ { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "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" } } } }, "/silos/{silo_name}/saml-identity-providers/{provider_name}": { "get": { "tags": [ "silos" ], "summary": "GET a silo's SAML identity provider", "operationId": "silo_identity_provider_view", "parameters": [ { "in": "path", "name": "provider_name", "description": "The SAML identity provider's name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" }, { "in": "path", "name": "silo_name", "description": "The silo's unique name.", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SamlIdentityProvider" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/system/user": { "get": { "tags": [ "system" ], "summary": "List the built-in system 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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameSortMode" }, "style": "form" } ], "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 specific built-in system 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" }, "style": "simple" } ], "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 all 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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" } ], "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 } }, "/updates/refresh": { "post": { "tags": [ "updates" ], "summary": "Refresh update metadata", "operationId": "updates_refresh", "responses": { "204": { "description": "resource updated" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/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 }, "style": "form" }, { "in": "query", "name": "page_token", "description": "Token returned by previous call to retrieve the subsequent page", "schema": { "nullable": true, "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/IdSortMode" }, "style": "form" } ], "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 } } }, "components": { "responses": { "Error": { "description": "Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "schemas": { "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 }, "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": "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" ] }, "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" ] }, "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`](omicron_common::api::external::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" ] }, "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": { "type": "string", "enum": [ "saml" ] }, "IdentityType": { "description": "Describes what kind of identity is described by an id", "type": "string", "enum": [ "silo_user" ] }, "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`](omicron_common::api::external::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" } }, "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" } ] }, "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", "type": "string", "enum": [ "creating", "starting", "running", "stopping", "stopped", "rebooting", "migrating", "repairing", "failed", "destroyed" ] }, "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`](omicron_nexus::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": "^(10\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([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])|172\\.(1[6-9]|2[0-9]|3[0-1])\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\/(1[2-9]|2[0-9]|3[0-2])|192\\.168\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\/(1[6-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 }, "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 }, "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" }, "make_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" }, "name": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Name" } ] } } }, "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" } ] } } }, "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", "type": "string", "enum": [ "default", "vpc_subnet", "vpc_peering", "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": { "type": "string" }, "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" }, "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" ] }, "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" }, "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" }, "user_provision_type": { "description": "User provision type", "allOf": [ { "$ref": "#/components/schemas/UserProvisionType" } ] } }, "required": [ "description", "discoverable", "id", "name", "time_created", "time_modified", "user_provision_type" ] }, "SiloCreate": { "description": "Create-time parameters for a [`Silo`](crate::external_api::views::Silo)", "type": "object", "properties": { "description": { "type": "string" }, "discoverable": { "type": "boolean" }, "name": { "$ref": "#/components/schemas/Name" }, "user_provision_type": { "$ref": "#/components/schemas/UserProvisionType" } }, "required": [ "description", "discoverable", "name", "user_provision_type" ] }, "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 an [`Sled`]", "type": "object", "properties": { "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": [ "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" }, "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", "time_created", "time_modified" ] }, "SnapshotCreate": { "description": "Create-time parameters for a [`Snapshot`](omicron_common::api::external::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" ] }, "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" ] }, "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" ] }, "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" } }, "required": [ "display_name", "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" ] }, "UserProvisionType": { "description": "How users will be provisioned in a silo during authentication.", "type": "string", "enum": [ "fixed", "jit" ] }, "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" ] }, "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.", "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.", "type": "string", "enum": [ "name_ascending" ] }, "NameOrIdSortMode": { "description": "Supported set of sort modes for scanning by name or id", "type": "string", "enum": [ "name_ascending", "name_descending", "id_ascending" ] } } }, "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" } } ] }