{ "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": { "/hardware/racks": { "get": { "tags": [ "racks" ], "summary": "List racks in the system.", "description": "", "operationId": "hardware_racks_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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": [ "racks" ], "summary": "Fetch information about a particular rack.", "description": "", "operationId": "hardware_racks_get_rack", "parameters": [ { "in": "path", "name": "rack_id", "required": true, "schema": { "description": "The rack's unique ID.", "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": [ "sleds" ], "summary": "List sleds in the system.", "description": "", "operationId": "hardware_sleds_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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": [ "sleds" ], "summary": "Fetch information about a sled in the system.", "description": "", "operationId": "hardware_sleds_get_sled", "parameters": [ { "in": "path", "name": "sled_id", "required": true, "schema": { "description": "The sled's unique ID.", "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" } } } }, "/login": { "post": { "tags": [ "hidden" ], "operationId": "spoof_login", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginParams" } } }, "required": true }, "responses": { "default": { "description": "" } } } }, "/logout": { "post": { "tags": [ "hidden" ], "operationId": "logout", "responses": { "default": { "description": "" } } } }, "/organizations": { "get": { "tags": [ "organizations" ], "summary": "List all organizations.", "description": "", "operationId": "organizations_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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.", "description": "", "operationId": "organizations_post", "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", "description": "", "operationId": "organizations_get_organization", "parameters": [ { "in": "path", "name": "organization_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.", "description": "", "operationId": "organizations_put_organization", "parameters": [ { "in": "path", "name": "organization_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.", "description": "", "operationId": "organizations_delete_organization", "parameters": [ { "in": "path", "name": "organization_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": { "get": { "tags": [ "projects" ], "summary": "List all projects.", "description": "", "operationId": "organization_projects_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "type": "string" }, "style": "form" }, { "in": "query", "name": "sort_by", "schema": { "$ref": "#/components/schemas/NameOrIdSortMode" }, "style": "form" }, { "in": "path", "name": "organization_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.", "description": "", "operationId": "organization_projects_post", "parameters": [ { "in": "path", "name": "organization_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", "description": "", "operationId": "organization_projects_get_project", "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" } ], "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.", "description": "", "operationId": "organization_projects_put_project", "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" } ], "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.", "description": "", "operationId": "organization_projects_delete_project", "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" } ], "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.", "description": "", "operationId": "project_disks_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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" } ], "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.", "description": "", "operationId": "project_disks_post", "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" } ], "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": "Fetch a single disk in a project.", "description": "", "operationId": "project_disks_get_disk", "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.", "description": "", "operationId": "project_disks_delete_disk", "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}/instances": { "get": { "tags": [ "instances" ], "summary": "List instances in a project.", "description": "", "operationId": "project_instances_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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" } ], "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.", "description": "", "operationId": "project_instances_post", "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" } ], "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.", "description": "", "operationId": "project_instances_get_instance", "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.", "description": "", "operationId": "project_instances_delete_instance", "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.", "description": "", "operationId": "instance_disks_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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_disks_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_disks_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.", "description": "", "operationId": "project_instances_migrate_instance", "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}/reboot": { "post": { "tags": [ "instances" ], "summary": "Reboot an instance.", "description": "", "operationId": "project_instances_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}/start": { "post": { "tags": [ "instances" ], "summary": "Boot an instance.", "description": "", "operationId": "project_instances_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.", "description": "", "operationId": "project_instances_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}/vpcs": { "get": { "tags": [ "vpcs" ], "summary": "List VPCs in a project.", "description": "", "operationId": "project_vpcs_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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" } ], "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.", "description": "", "operationId": "project_vpcs_post", "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" } ], "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.", "description": "", "operationId": "project_vpcs_get_vpc", "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.", "description": "", "operationId": "project_vpcs_put_vpc", "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": { "204": { "description": "resource updated" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "vpcs" ], "summary": "Delete a vpc from a project.", "description": "", "operationId": "project_vpcs_delete_vpc", "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": [ "firewall" ], "summary": "List firewall rules for a VPC.", "description": "", "operationId": "vpc_firewall_rules_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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/VpcFirewallRuleResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true }, "put": { "tags": [ "firewall" ], "summary": "Replace the firewall rules for a VPC", "description": "", "operationId": "vpc_firewall_rules_put", "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/VpcFirewallRuleUpdateResult" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/organizations/{organization_name}/projects/{project_name}/vpcs/{vpc_name}/routers": { "get": { "tags": [ "routers" ], "summary": "List VPC Custom and System Routers", "description": "", "operationId": "vpc_routers_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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": [ "routers" ], "summary": "Create a VPC Router", "description": "", "operationId": "vpc_routers_post", "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": [ "routers" ], "summary": "Get a VPC Router", "description": "", "operationId": "vpc_routers_get_router", "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": [ "routers" ], "summary": "Update a VPC Router", "description": "", "operationId": "vpc_routers_put_router", "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": { "204": { "description": "resource updated" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "routers" ], "summary": "Delete a router from its VPC", "description": "", "operationId": "vpc_routers_delete_router", "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": [ "routes" ], "summary": "List a Router's routes", "description": "", "operationId": "routers_routes_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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": [ "routes" ], "summary": "Create a VPC Router", "description": "", "operationId": "routers_routes_post", "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": [ "routes" ], "summary": "Get a VPC Router route", "description": "", "operationId": "routers_routes_get_route", "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": [ "routes" ], "summary": "Update a Router route", "description": "", "operationId": "routers_routes_put_route", "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": { "204": { "description": "resource updated" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "routes" ], "summary": "Delete a route from its router", "description": "", "operationId": "routers_routes_delete_route", "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": [ "subnets" ], "summary": "List subnets in a VPC.", "description": "", "operationId": "vpc_subnets_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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": [ "subnets" ], "summary": "Create a subnet in a VPC.", "description": "", "operationId": "vpc_subnets_post", "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": [ "subnets" ], "summary": "Get subnet in a VPC.", "description": "", "operationId": "vpc_subnets_get_subnet", "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": [ "subnets" ], "summary": "Update a VPC Subnet.", "description": "", "operationId": "vpc_subnets_put_subnet", "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": { "204": { "description": "resource updated" }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } }, "delete": { "tags": [ "subnets" ], "summary": "Delete a subnet from a VPC.", "description": "", "operationId": "vpc_subnets_delete_subnet", "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}/ips": { "get": { "tags": [ "subnets" ], "summary": "List IP addresses on a VPC subnet.", "description": "", "operationId": "subnets_ips_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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 } }, "/roles": { "get": { "tags": [ "roles" ], "summary": "List the built-in roles", "description": "", "operationId": "roles_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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", "description": "", "operationId": "roles_get_role", "parameters": [ { "in": "path", "name": "role_name", "required": true, "schema": { "description": "The built-in role's unique name.", "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)", "description": "", "operationId": "sagas_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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)", "description": "", "operationId": "sagas_get_saga", "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/SessionUser" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } }, "/timeseries/schema": { "get": { "tags": [ "metrics" ], "summary": "List all timeseries schema", "description": "", "operationId": "timeseries_schema_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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 } }, "/users": { "get": { "tags": [ "users" ], "summary": "List the built-in system users", "description": "", "operationId": "users_get", "parameters": [ { "in": "query", "name": "limit", "schema": { "nullable": true, "description": "Maximum number of items returned by a single call", "type": "integer", "format": "uint32", "minimum": 1 }, "style": "form" }, { "in": "query", "name": "page_token", "schema": { "nullable": true, "description": "Token returned by previous call to retreive the subsequent page", "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/UserResultsPage" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } }, "x-dropshot-pagination": true } }, "/users/{user_name}": { "get": { "tags": [ "users" ], "summary": "Fetch a specific built-in system user", "description": "", "operationId": "users_get_user", "parameters": [ { "in": "path", "name": "user_name", "required": true, "schema": { "$ref": "#/components/schemas/Name" }, "style": "simple" } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } }, "4XX": { "$ref": "#/components/responses/Error" }, "5XX": { "$ref": "#/components/responses/Error" } } } } }, "components": { "responses": { "Error": { "description": "Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "schemas": { "ByteCount": { "description": "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", "CumulativeI64", "CumulativeF64", "HistogramI64", "HistogramF64" ] }, "Disk": { "description": "Client view of an [`Disk`]", "type": "object", "properties": { "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" }, "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": [ "description", "device_path", "id", "name", "project_id", "size", "state", "time_created", "time_modified" ] }, "DiskCreate": { "description": "Create-time parameters for a [`Disk`]", "type": "object", "properties": { "description": { "type": "string" }, "name": { "$ref": "#/components/schemas/Name" }, "size": { "description": "size of the Disk", "allOf": [ { "$ref": "#/components/schemas/ByteCount" } ] }, "snapshot_id": { "nullable": true, "description": "id for snapshot from which the Disk should be created, if any", "type": "string", "format": "uuid" } }, "required": [ "description", "name", "size" ] }, "DiskIdentifier": { "description": "Parameters for the [`Disk`] to be attached or detached to an instance", "type": "object", "properties": { "disk": { "$ref": "#/components/schemas/Name" } }, "required": [ "disk" ] }, "DiskResultsPage": { "description": "A single page of results", "type": "object", "properties": { "items": { "description": "list of items on this page of results", "type": "array", "items": { "$ref": "#/components/schemas/Disk" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "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" ] } ] }, "Error": { "description": "Body of an HTTP response for an `HttpError`. This type can be used to deserialize an HTTP response corresponding to an error in order to access the error code, message, etc.", "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", "IpAddr", "Uuid", "Bool" ] }, "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`]", "type": "object", "properties": { "description": { "type": "string" }, "hostname": { "type": "string" }, "memory": { "$ref": "#/components/schemas/ByteCount" }, "name": { "$ref": "#/components/schemas/Name" }, "ncpus": { "$ref": "#/components/schemas/InstanceCpuCount" } }, "required": [ "description", "hostname", "memory", "name", "ncpus" ] }, "InstanceMigrate": { "description": "Migration parameters for an [`Instance`]", "type": "object", "properties": { "dst_sled_uuid": { "type": "string", "format": "uuid" } }, "required": [ "dst_sled_uuid" ] }, "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" ] }, "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" ] }, "Ipv4Net": { "title": "An IPv4 subnet", "description": "An IPv4 subnet, including prefix and subnet mask", "type": "string", "pattern": "^(10\\.(25[0-5]|[1-2][0-4][0-9]|[1-9][0-9]|[0-9]\\.){2}(25[0-5]|[1-2][0-4][0-9]|[1-9][0-9]|[0-9])/(1[0-9]|2[0-8]|[8-9]))$^(172\\.16\\.(25[0-5]|[1-2][0-4][0-9]|[1-9][0-9]|[0-9])\\.(25[0-5]|[1-2][0-4][0-9]|[1-9][0-9]|[0-9])/(1[2-9]|2[0-8]))$^(192\\.168\\.(25[0-5]|[1-2][0-4][0-9]|[1-9][0-9]|[0-9])\\.(25[0-5]|[1-2][0-4][0-9]|[1-9][0-9]|[0-9])/(1[6-9]|2[0-8]))$", "maxLength": 18 }, "Ipv6Net": { "title": "An IPv6 subnet", "description": "An IPv6 subnet, including prefix and subnet mask", "type": "string", "pattern": "^(fd|FD)00:((([0-9a-fA-F]{1,4}\\:){6}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,6}:))/(6[4-9]|[7-9][0-9]|1[0-1][0-9]|12[0-6])$", "maxLength": 43 }, "L4PortRange": { "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 }, "LoginParams": { "type": "object", "properties": { "username": { "type": "string" } }, "required": [ "username" ] }, "MacAddr": { "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 used in the API", "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 '-'.", "type": "string", "pattern": "[a-z](|[a-zA-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" } ] }, "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", "subnet_id", "time_created", "time_modified", "vpc_id" ] }, "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" ] }, "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`]", "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" ] }, "OrganizationUpdate": { "description": "Updateable properties of an [`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`]", "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" ] }, "ProjectUpdate": { "description": "Updateable properties of a [`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": { "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" ] }, "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 subset of [`NetworkTarget`], `RouteDestination` specifies the kind of network traffic that will be matched to be forwarded to the [`RouteTarget`].", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "ip" ] }, "value": { "type": "string", "format": "ip" } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "vpc" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "subnet" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] } ] }, "RouteTarget": { "description": "A subset of [`NetworkTarget`], `RouteTarget` specifies all possible targets that a route can forward to.", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "ip" ] }, "value": { "type": "string", "format": "ip" } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "vpc" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "subnet" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "instance" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "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" } ] }, "router_id": { "description": "The VPC Router to which the route belongs.", "type": "string", "format": "uuid" }, "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" } }, "required": [ "description", "destination", "id", "kind", "name", "router_id", "target", "time_created", "time_modified" ] }, "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" ] } ] }, "SessionUser": { "description": "Client view of currently authed user.", "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } }, "required": [ "id" ] }, "Sled": { "description": "Client view of an [`Sled`]", "type": "object", "properties": { "description": { "description": "human-readable free-form text about a resource", "type": "string" }, "id": { "description": "unique, immutable, system-controlled identifier for each resource", "type": "string", "format": "uuid" }, "name": { "description": "unique, mutable, user-controlled identifier for each resource", "allOf": [ { "$ref": "#/components/schemas/Name" } ] }, "service_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": [ "description", "id", "name", "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" ] }, "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": { "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" ] }, "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" }, "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", "name", "project_id", "system_router_id", "time_created", "time_modified" ] }, "VpcCreate": { "description": "Create-time parameters for a [`Vpc`]", "type": "object", "properties": { "description": { "type": "string" }, "dns_name": { "$ref": "#/components/schemas/Name" }, "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" } }, "required": [ "action", "description", "direction", "filters", "id", "name", "priority", "status", "targets", "time_created", "time_modified" ] }, "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": "A subset of [`NetworkTarget`], `VpcFirewallRuleHostFilter` specifies all possible targets that a route can forward to.", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "vpc" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "subnet" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "instance" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "ip" ] }, "value": { "type": "string", "format": "ip" } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "internet_gateway" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] } ] }, "VpcFirewallRuleProtocol": { "description": "The protocols that may be specified in a firewall rule's filter", "type": "string", "enum": [ "TCP", "UDP", "ICMP" ] }, "VpcFirewallRuleResultsPage": { "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/VpcFirewallRule" } }, "next_page": { "nullable": true, "description": "token used to fetch the next page of results (if any)", "type": "string" } }, "required": [ "items" ] }, "VpcFirewallRuleStatus": { "type": "string", "enum": [ "disabled", "enabled" ] }, "VpcFirewallRuleTarget": { "description": "A subset of [`NetworkTarget`], `VpcFirewallRuleTarget` specifies all possible targets that a firewall rule can be attached to.", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "vpc" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "subnet" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "instance" ] }, "value": { "$ref": "#/components/schemas/Name" } }, "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" } ] }, "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", "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", "additionalProperties": { "$ref": "#/components/schemas/VpcFirewallRuleUpdate" } }, "VpcFirewallRuleUpdateResult": { "description": "Response to an update replacing [`Vpc`]'s firewall", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/VpcFirewallRule" } }, "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`]", "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`]", "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": { "nullable": true, "description": "The IPv4 subnet CIDR block.", "allOf": [ { "$ref": "#/components/schemas/Ipv4Net" } ] }, "ipv6_block": { "nullable": true, "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", "name", "time_created", "time_modified", "vpc_id" ] }, "VpcSubnetCreate": { "description": "Create-time parameters for a [`VpcSubnet`]", "type": "object", "properties": { "description": { "type": "string" }, "ipv4_block": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Ipv4Net" } ] }, "ipv6_block": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Ipv6Net" } ] }, "name": { "$ref": "#/components/schemas/Name" } }, "required": [ "description", "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`]", "type": "object", "properties": { "description": { "nullable": true, "type": "string" }, "ipv4_block": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Ipv4Net" } ] }, "ipv6_block": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Ipv6Net" } ] }, "name": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Name" } ] } } }, "VpcUpdate": { "description": "Updateable properties of a [`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" ] }, "NameOrIdSortMode": { "description": "Supported set of sort modes for scanning by name or id", "type": "string", "enum": [ "name-ascending", "name-descending", "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" ] } } } }