9025 lines
246 KiB
JSON
9025 lines
246 KiB
JSON
{
|
|
"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.",
|
|
"operationId": "hardware_racks_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/IdSortMode"
|
|
},
|
|
"style": "form"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RackResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
}
|
|
},
|
|
"/hardware/racks/{rack_id}": {
|
|
"get": {
|
|
"tags": [
|
|
"racks"
|
|
],
|
|
"summary": "Fetch information about a particular rack.",
|
|
"operationId": "hardware_racks_get_rack",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "rack_id",
|
|
"description": "The rack's unique ID.",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Rack"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/hardware/sleds": {
|
|
"get": {
|
|
"tags": [
|
|
"sleds"
|
|
],
|
|
"summary": "List sleds in the system.",
|
|
"operationId": "hardware_sleds_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/IdSortMode"
|
|
},
|
|
"style": "form"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SledResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
}
|
|
},
|
|
"/hardware/sleds/{sled_id}": {
|
|
"get": {
|
|
"tags": [
|
|
"sleds"
|
|
],
|
|
"summary": "Fetch information about a sled in the system.",
|
|
"operationId": "hardware_sleds_get_sled",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "sled_id",
|
|
"description": "The sled's unique ID.",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Sled"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/images": {
|
|
"get": {
|
|
"tags": [
|
|
"images:global"
|
|
],
|
|
"summary": "List global images.",
|
|
"description": "Returns a list of all the global images. Global images are returned sorted by creation date, with the most recent images appearing first.",
|
|
"operationId": "images_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GlobalImageResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"images:global"
|
|
],
|
|
"summary": "Create a global image.",
|
|
"description": "Create a new global image. This image can then be used by any user as a base for instances.",
|
|
"operationId": "images_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ImageCreate"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "successful creation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GlobalImage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/images/{image_name}": {
|
|
"get": {
|
|
"tags": [
|
|
"images:global"
|
|
],
|
|
"summary": "Get a global image.",
|
|
"description": "Returns the details of a specific global image.",
|
|
"operationId": "images_get_image",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "image_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GlobalImage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"images:global"
|
|
],
|
|
"summary": "Delete a global image.",
|
|
"description": "Permanently delete a global image. This operation cannot be undone. Any instances using the global image will continue to run, however new instances can not be created with this image.",
|
|
"operationId": "images_delete_image",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "image_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "successful deletion"
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/login": {
|
|
"post": {
|
|
"tags": [
|
|
"hidden"
|
|
],
|
|
"operationId": "spoof_login",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LoginParams"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"default": {
|
|
"description": "",
|
|
"content": {
|
|
"*/*": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/logout": {
|
|
"post": {
|
|
"tags": [
|
|
"hidden"
|
|
],
|
|
"operationId": "logout",
|
|
"responses": {
|
|
"default": {
|
|
"description": "",
|
|
"content": {
|
|
"*/*": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations": {
|
|
"get": {
|
|
"tags": [
|
|
"organizations"
|
|
],
|
|
"summary": "List all organizations.",
|
|
"operationId": "organizations_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameOrIdSortMode"
|
|
},
|
|
"style": "form"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/OrganizationResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"organizations"
|
|
],
|
|
"summary": "Create a new organization.",
|
|
"operationId": "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",
|
|
"operationId": "organizations_get_organization",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Organization"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"organizations"
|
|
],
|
|
"summary": "Update a specific organization.",
|
|
"operationId": "organizations_put_organization",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/OrganizationUpdate"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Organization"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"organizations"
|
|
],
|
|
"summary": "Delete a specific organization.",
|
|
"operationId": "organizations_delete_organization",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "successful deletion"
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/policy": {
|
|
"get": {
|
|
"tags": [
|
|
"organizations"
|
|
],
|
|
"summary": "Fetch the IAM policy for this Organization",
|
|
"operationId": "organization_get_policy",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/OrganizationRolesPolicy"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"organizations"
|
|
],
|
|
"summary": "Update the IAM policy for this Organization",
|
|
"operationId": "organization_put_policy",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/OrganizationRolesPolicy"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/OrganizationRolesPolicy"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects": {
|
|
"get": {
|
|
"tags": [
|
|
"projects"
|
|
],
|
|
"summary": "List all projects.",
|
|
"operationId": "organization_projects_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameOrIdSortMode"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProjectResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"projects"
|
|
],
|
|
"summary": "Create a new project.",
|
|
"operationId": "organization_projects_post",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProjectCreate"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "successful creation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Project"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects/{project_name}": {
|
|
"get": {
|
|
"tags": [
|
|
"projects"
|
|
],
|
|
"summary": "Fetch a specific project",
|
|
"operationId": "organization_projects_get_project",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Project"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"projects"
|
|
],
|
|
"summary": "Update a specific project.",
|
|
"operationId": "organization_projects_put_project",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProjectUpdate"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Project"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"projects"
|
|
],
|
|
"summary": "Delete a specific project.",
|
|
"operationId": "organization_projects_delete_project",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "successful deletion"
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects/{project_name}/disks": {
|
|
"get": {
|
|
"tags": [
|
|
"disks"
|
|
],
|
|
"summary": "List disks in a project.",
|
|
"operationId": "project_disks_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DiskResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"disks"
|
|
],
|
|
"summary": "Create a disk in a project.",
|
|
"operationId": "project_disks_post",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DiskCreate"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "successful creation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Disk"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects/{project_name}/disks/{disk_name}": {
|
|
"get": {
|
|
"tags": [
|
|
"disks"
|
|
],
|
|
"summary": "Fetch a single disk in a project.",
|
|
"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.",
|
|
"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}/images": {
|
|
"get": {
|
|
"tags": [
|
|
"images"
|
|
],
|
|
"summary": "List images",
|
|
"description": "List images in a project. The images are returned sorted by creation date, with the most recent images appearing first.",
|
|
"operationId": "project_images_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ImageResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"images"
|
|
],
|
|
"summary": "Create an image",
|
|
"description": "Create a new image in a project.",
|
|
"operationId": "project_images_post",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ImageCreate"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "successful creation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Image"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects/{project_name}/images/{image_name}": {
|
|
"get": {
|
|
"tags": [
|
|
"images"
|
|
],
|
|
"summary": "Get an image",
|
|
"description": "Get the details of a specific image in a project.",
|
|
"operationId": "project_images_get_image",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "image_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Image"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"images"
|
|
],
|
|
"summary": "Delete an image",
|
|
"description": "Permanently delete an image from a project. This operation cannot be undone. Any instances in the project using the image will continue to run, however new instances can not be created with this image.",
|
|
"operationId": "project_images_delete_image",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "image_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "successful deletion"
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects/{project_name}/instances": {
|
|
"get": {
|
|
"tags": [
|
|
"instances"
|
|
],
|
|
"summary": "List instances in a project.",
|
|
"operationId": "project_instances_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InstanceResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"instances"
|
|
],
|
|
"summary": "Create an instance in a project.",
|
|
"operationId": "project_instances_post",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InstanceCreate"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "successful creation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Instance"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}": {
|
|
"get": {
|
|
"tags": [
|
|
"instances"
|
|
],
|
|
"summary": "Get an instance in a project.",
|
|
"operationId": "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.",
|
|
"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.",
|
|
"operationId": "instance_disks_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "instance_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DiskResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/disks/attach": {
|
|
"post": {
|
|
"tags": [
|
|
"instances"
|
|
],
|
|
"operationId": "instance_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.",
|
|
"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}/network-interfaces": {
|
|
"get": {
|
|
"tags": [
|
|
"instances"
|
|
],
|
|
"summary": "List network interfaces attached to this instance.",
|
|
"operationId": "instance_network_interfaces_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "instance_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NetworkInterfaceResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"instances"
|
|
],
|
|
"summary": "Create a network interface for an instance.",
|
|
"operationId": "instance_network_interfaces_post",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "instance_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NetworkInterfaceCreate"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "successful creation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NetworkInterface"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/network-interfaces/{interface_name}": {
|
|
"get": {
|
|
"tags": [
|
|
"instances"
|
|
],
|
|
"summary": "Get an interface attached to an instance.",
|
|
"operationId": "instance_network_interfaces_get_interface",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "instance_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "interface_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NetworkInterface"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"instances"
|
|
],
|
|
"summary": "Detach a network interface from an instance.",
|
|
"operationId": "instance_network_interfaces_delete_interface",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "instance_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "interface_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "successful deletion"
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects/{project_name}/instances/{instance_name}/reboot": {
|
|
"post": {
|
|
"tags": [
|
|
"instances"
|
|
],
|
|
"summary": "Reboot an instance.",
|
|
"operationId": "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.",
|
|
"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.",
|
|
"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}/policy": {
|
|
"get": {
|
|
"tags": [
|
|
"projects"
|
|
],
|
|
"summary": "Fetch the IAM policy for this Project",
|
|
"operationId": "organization_projects_get_project_policy",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProjectRolesPolicy"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"projects"
|
|
],
|
|
"summary": "Update the IAM policy for this Project",
|
|
"operationId": "organization_projects_put_project_policy",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProjectRolesPolicy"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProjectRolesPolicy"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects/{project_name}/snapshots": {
|
|
"get": {
|
|
"tags": [
|
|
"snapshots"
|
|
],
|
|
"summary": "List snapshots in a project.",
|
|
"operationId": "project_snapshots_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SnapshotResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"snapshots"
|
|
],
|
|
"summary": "Create a snapshot of a disk.",
|
|
"operationId": "project_snapshots_post",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SnapshotCreate"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "successful creation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Snapshot"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects/{project_name}/snapshots/{snapshot_name}": {
|
|
"get": {
|
|
"tags": [
|
|
"snapshots"
|
|
],
|
|
"summary": "Get a snapshot in a project.",
|
|
"operationId": "project_snapshots_get_snapshot",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "snapshot_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Snapshot"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"snapshots"
|
|
],
|
|
"summary": "Delete a snapshot from a project.",
|
|
"operationId": "project_snapshots_delete_snapshot",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "snapshot_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "successful deletion"
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects/{project_name}/vpcs": {
|
|
"get": {
|
|
"tags": [
|
|
"vpcs"
|
|
],
|
|
"summary": "List VPCs in a project.",
|
|
"operationId": "project_vpcs_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/VpcResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"vpcs"
|
|
],
|
|
"summary": "Create a VPC in a project.",
|
|
"operationId": "project_vpcs_post",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"description": "The organization's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"description": "The project's unique name within the organization.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/VpcCreate"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "successful creation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Vpc"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/organizations/{organization_name}/projects/{project_name}/vpcs/{vpc_name}": {
|
|
"get": {
|
|
"tags": [
|
|
"vpcs"
|
|
],
|
|
"summary": "Get a VPC in a project.",
|
|
"operationId": "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.",
|
|
"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": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Vpc"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"vpcs"
|
|
],
|
|
"summary": "Delete a vpc from a project.",
|
|
"operationId": "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.",
|
|
"operationId": "vpc_firewall_rules_get",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "vpc_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/VpcFirewallRules"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"firewall"
|
|
],
|
|
"summary": "Replace the firewall rules for a VPC",
|
|
"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/VpcFirewallRules"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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",
|
|
"operationId": "vpc_routers_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "vpc_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/VpcRouterResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"routers"
|
|
],
|
|
"summary": "Create a VPC Router",
|
|
"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",
|
|
"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",
|
|
"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": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/VpcRouter"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"routers"
|
|
],
|
|
"summary": "Delete a router from its VPC",
|
|
"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",
|
|
"operationId": "routers_routes_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "router_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "vpc_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RouterRouteResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"routes"
|
|
],
|
|
"summary": "Create a VPC Router",
|
|
"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",
|
|
"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",
|
|
"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": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RouterRoute"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"routes"
|
|
],
|
|
"summary": "Delete a route from its router",
|
|
"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.",
|
|
"operationId": "vpc_subnets_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "vpc_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/VpcSubnetResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"subnets"
|
|
],
|
|
"summary": "Create a subnet in a VPC.",
|
|
"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.",
|
|
"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.",
|
|
"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": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/VpcSubnet"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"subnets"
|
|
],
|
|
"summary": "Delete a subnet from a VPC.",
|
|
"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}/network-interfaces": {
|
|
"get": {
|
|
"tags": [
|
|
"subnets"
|
|
],
|
|
"summary": "List network interfaces in a VPC subnet.",
|
|
"operationId": "subnet_network_interfaces_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "organization_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "project_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "subnet_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "vpc_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NetworkInterfaceResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
}
|
|
},
|
|
"/policy": {
|
|
"get": {
|
|
"tags": [
|
|
"policy"
|
|
],
|
|
"summary": "Fetch the top-level IAM policy",
|
|
"operationId": "policy_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FleetRolesPolicy"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"policy"
|
|
],
|
|
"summary": "Update the top-level IAM policy",
|
|
"operationId": "policy_put",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FleetRolesPolicy"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FleetRolesPolicy"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/roles": {
|
|
"get": {
|
|
"tags": [
|
|
"roles"
|
|
],
|
|
"summary": "List the built-in roles",
|
|
"operationId": "roles_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RoleResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
}
|
|
},
|
|
"/roles/{role_name}": {
|
|
"get": {
|
|
"tags": [
|
|
"roles"
|
|
],
|
|
"summary": "Fetch a specific built-in role",
|
|
"operationId": "roles_get_role",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "role_name",
|
|
"description": "The built-in role's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Role"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/sagas": {
|
|
"get": {
|
|
"tags": [
|
|
"sagas"
|
|
],
|
|
"summary": "List all sagas (for debugging)",
|
|
"operationId": "sagas_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/IdSortMode"
|
|
},
|
|
"style": "form"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SagaResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
}
|
|
},
|
|
"/sagas/{saga_id}": {
|
|
"get": {
|
|
"tags": [
|
|
"sagas"
|
|
],
|
|
"summary": "Fetch information about a single saga (for debugging)",
|
|
"operationId": "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"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/session/me/sshkeys": {
|
|
"get": {
|
|
"tags": [
|
|
"sshkeys"
|
|
],
|
|
"summary": "List the current user's SSH public keys",
|
|
"operationId": "sshkeys_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SshKeyResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"sshkeys"
|
|
],
|
|
"summary": "Create a new SSH public key for the current user",
|
|
"operationId": "sshkeys_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SshKeyCreate"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "successful creation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SshKey"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/session/me/sshkeys/{ssh_key_name}": {
|
|
"get": {
|
|
"tags": [
|
|
"sshkeys"
|
|
],
|
|
"summary": "Get (by name) an SSH public key belonging to the current user",
|
|
"operationId": "sshkeys_get_key",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "ssh_key_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SshKey"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"sshkeys"
|
|
],
|
|
"summary": "Delete (by name) an SSH public key belonging to the current user",
|
|
"operationId": "sshkeys_delete_key",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "ssh_key_name",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "successful deletion"
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/silos": {
|
|
"get": {
|
|
"tags": [
|
|
"silos"
|
|
],
|
|
"operationId": "silos_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameOrIdSortMode"
|
|
},
|
|
"style": "form"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SiloResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"silos"
|
|
],
|
|
"summary": "Create a new silo.",
|
|
"operationId": "silos_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SiloCreate"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "successful creation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Silo"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/silos/{silo_name}": {
|
|
"get": {
|
|
"tags": [
|
|
"silos"
|
|
],
|
|
"summary": "Fetch a specific silo",
|
|
"operationId": "silos_get_silo",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "silo_name",
|
|
"description": "The silo's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Silo"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"silos"
|
|
],
|
|
"summary": "Delete a specific silo.",
|
|
"operationId": "silos_delete_silo",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "silo_name",
|
|
"description": "The silo's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "successful deletion"
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/silos/{silo_name}/policy": {
|
|
"get": {
|
|
"tags": [
|
|
"silos"
|
|
],
|
|
"summary": "Fetch the IAM policy for this Silo",
|
|
"operationId": "silos_get_silo_policy",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "silo_name",
|
|
"description": "The silo's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SiloRolesPolicy"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"silos"
|
|
],
|
|
"summary": "Update the IAM policy for this Silo",
|
|
"operationId": "silos_put_silo_policy",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "silo_name",
|
|
"description": "The silo's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SiloRolesPolicy"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SiloRolesPolicy"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/timeseries/schema": {
|
|
"get": {
|
|
"tags": [
|
|
"metrics"
|
|
],
|
|
"summary": "List all timeseries schema",
|
|
"operationId": "timeseries_schema_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TimeseriesSchemaResultsPage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
},
|
|
"x-dropshot-pagination": true
|
|
}
|
|
},
|
|
"/updates/refresh": {
|
|
"post": {
|
|
"tags": [
|
|
"updates"
|
|
],
|
|
"summary": "Refresh update metadata",
|
|
"operationId": "updates_refresh",
|
|
"responses": {
|
|
"204": {
|
|
"description": "resource updated"
|
|
},
|
|
"4XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
},
|
|
"5XX": {
|
|
"$ref": "#/components/responses/Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users": {
|
|
"get": {
|
|
"tags": [
|
|
"users"
|
|
],
|
|
"summary": "List the built-in system users",
|
|
"operationId": "users_get",
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "limit",
|
|
"description": "Maximum number of items returned by a single call",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 1
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_token",
|
|
"description": "Token returned by previous call to retreive the subsequent page",
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"style": "form"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "sort_by",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NameSortMode"
|
|
},
|
|
"style": "form"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/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",
|
|
"operationId": "users_get_user",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "user_name",
|
|
"description": "The built-in user's unique name.",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"style": "simple"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/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": {
|
|
"BlockSize": {
|
|
"title": "disk block size in bytes",
|
|
"type": "integer",
|
|
"enum": [
|
|
512,
|
|
2048,
|
|
4096
|
|
]
|
|
},
|
|
"ByteCount": {
|
|
"description": "A count of bytes, typically used either for memory or storage capacity\n\nThe maximum supported byte count is [`i64::MAX`]. This makes it somewhat inconvenient to define constructors: a u32 constructor can be infallible, but an i64 constructor can fail (if the value is negative) and a u64 constructor can fail (if the value is larger than i64::MAX). We provide all of these for consumers' convenience.",
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0
|
|
},
|
|
"DatumType": {
|
|
"description": "The type of an individual datum of a metric.",
|
|
"type": "string",
|
|
"enum": [
|
|
"bool",
|
|
"i64",
|
|
"f64",
|
|
"string",
|
|
"bytes",
|
|
"cumulative_i64",
|
|
"cumulative_f64",
|
|
"histogram_i64",
|
|
"histogram_f64"
|
|
]
|
|
},
|
|
"Digest": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"sha256"
|
|
]
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"Disk": {
|
|
"description": "Client view of an [`Disk`]",
|
|
"type": "object",
|
|
"properties": {
|
|
"block_size": {
|
|
"$ref": "#/components/schemas/ByteCount"
|
|
},
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"device_path": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"description": "unique, immutable, system-controlled identifier for each resource",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"image_id": {
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"project_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"size": {
|
|
"$ref": "#/components/schemas/ByteCount"
|
|
},
|
|
"snapshot_id": {
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"state": {
|
|
"$ref": "#/components/schemas/DiskState"
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"block_size",
|
|
"description",
|
|
"device_path",
|
|
"id",
|
|
"name",
|
|
"project_id",
|
|
"size",
|
|
"state",
|
|
"time_created",
|
|
"time_modified"
|
|
]
|
|
},
|
|
"DiskCreate": {
|
|
"description": "Create-time parameters for a [`Disk`](omicron_common::api::external::Disk)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"disk_source": {
|
|
"description": "initial source for this disk",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/DiskSource"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"size": {
|
|
"description": "total size of the Disk in bytes",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ByteCount"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"disk_source",
|
|
"name",
|
|
"size"
|
|
]
|
|
},
|
|
"DiskIdentifier": {
|
|
"description": "Parameters for the [`Disk`](omicron_common::api::external::Disk) to be attached or detached to an instance",
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
]
|
|
},
|
|
"DiskResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Disk"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"DiskSource": {
|
|
"description": "Different sources for a disk",
|
|
"oneOf": [
|
|
{
|
|
"description": "Create a blank disk",
|
|
"type": "object",
|
|
"properties": {
|
|
"block_size": {
|
|
"description": "size of blocks for this Disk. valid values are: 512, 2048, or 4096",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/BlockSize"
|
|
}
|
|
]
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"blank"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"block_size",
|
|
"type"
|
|
]
|
|
},
|
|
{
|
|
"description": "Create a disk from a disk snapshot",
|
|
"type": "object",
|
|
"properties": {
|
|
"snapshot_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"snapshot"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"snapshot_id",
|
|
"type"
|
|
]
|
|
},
|
|
{
|
|
"description": "Create a disk from a project image",
|
|
"type": "object",
|
|
"properties": {
|
|
"image_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"image"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"image_id",
|
|
"type"
|
|
]
|
|
},
|
|
{
|
|
"description": "Create a disk from a global image",
|
|
"type": "object",
|
|
"properties": {
|
|
"image_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"global_image"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"image_id",
|
|
"type"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"DiskState": {
|
|
"description": "State of a Disk (primarily: attached or not)",
|
|
"oneOf": [
|
|
{
|
|
"description": "Disk is being initialized",
|
|
"type": "object",
|
|
"properties": {
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"creating"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"state"
|
|
]
|
|
},
|
|
{
|
|
"description": "Disk is ready but detached from any Instance",
|
|
"type": "object",
|
|
"properties": {
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"detached"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"state"
|
|
]
|
|
},
|
|
{
|
|
"description": "Disk is being attached to the given Instance",
|
|
"type": "object",
|
|
"properties": {
|
|
"instance": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"attaching"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"instance",
|
|
"state"
|
|
]
|
|
},
|
|
{
|
|
"description": "Disk is attached to the given Instance",
|
|
"type": "object",
|
|
"properties": {
|
|
"instance": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"attached"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"instance",
|
|
"state"
|
|
]
|
|
},
|
|
{
|
|
"description": "Disk is being detached from the given Instance",
|
|
"type": "object",
|
|
"properties": {
|
|
"instance": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"detaching"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"instance",
|
|
"state"
|
|
]
|
|
},
|
|
{
|
|
"description": "Disk has been destroyed",
|
|
"type": "object",
|
|
"properties": {
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"destroyed"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"state"
|
|
]
|
|
},
|
|
{
|
|
"description": "Disk is unavailable",
|
|
"type": "object",
|
|
"properties": {
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"faulted"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"state"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"Error": {
|
|
"description": "Error information from a response.",
|
|
"type": "object",
|
|
"properties": {
|
|
"error_code": {
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"request_id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"message",
|
|
"request_id"
|
|
]
|
|
},
|
|
"FieldSchema": {
|
|
"description": "The name and type information for a field of a timeseries schema.",
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"source": {
|
|
"$ref": "#/components/schemas/FieldSource"
|
|
},
|
|
"ty": {
|
|
"$ref": "#/components/schemas/FieldType"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"source",
|
|
"ty"
|
|
]
|
|
},
|
|
"FieldSource": {
|
|
"description": "The source from which a field is derived, the target or metric.",
|
|
"type": "string",
|
|
"enum": [
|
|
"target",
|
|
"metric"
|
|
]
|
|
},
|
|
"FieldType": {
|
|
"description": "The `FieldType` identifies the data type of a target or metric field.",
|
|
"type": "string",
|
|
"enum": [
|
|
"string",
|
|
"i64",
|
|
"ip_addr",
|
|
"uuid",
|
|
"bool"
|
|
]
|
|
},
|
|
"FleetRoles": {
|
|
"type": "string",
|
|
"enum": [
|
|
"admin",
|
|
"collaborator",
|
|
"viewer"
|
|
]
|
|
},
|
|
"FleetRolesPolicy": {
|
|
"description": "Client view of a [`Policy`], which describes how this resource may be accessed\n\nNote that the Policy only describes access granted explicitly for this resource. The policies of parent resources can also cause a user to have access to this resource.",
|
|
"type": "object",
|
|
"properties": {
|
|
"role_assignments": {
|
|
"description": "Roles directly assigned on this resource",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FleetRolesRoleAssignment"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"role_assignments"
|
|
]
|
|
},
|
|
"FleetRolesRoleAssignment": {
|
|
"description": "Describes the assignment of a particular role on a particular resource to a particular identity (user, group, etc.)\n\nThe resource is not part of this structure. Rather, [`RoleAssignment`]s are put into a [`Policy`] and that Policy is applied to a particular resource.",
|
|
"type": "object",
|
|
"properties": {
|
|
"identity_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"identity_type": {
|
|
"$ref": "#/components/schemas/IdentityType"
|
|
},
|
|
"role_name": {
|
|
"$ref": "#/components/schemas/FleetRoles"
|
|
}
|
|
},
|
|
"required": [
|
|
"identity_id",
|
|
"identity_type",
|
|
"role_name"
|
|
]
|
|
},
|
|
"GlobalImage": {
|
|
"description": "Client view of global Images",
|
|
"type": "object",
|
|
"properties": {
|
|
"block_size": {
|
|
"description": "size of blocks in bytes",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ByteCount"
|
|
}
|
|
]
|
|
},
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"digest": {
|
|
"nullable": true,
|
|
"description": "Hash of the image contents, if applicable",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Digest"
|
|
}
|
|
]
|
|
},
|
|
"id": {
|
|
"description": "unique, immutable, system-controlled identifier for each resource",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"size": {
|
|
"description": "total size in bytes",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ByteCount"
|
|
}
|
|
]
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"url": {
|
|
"nullable": true,
|
|
"description": "URL source of this image, if any",
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"nullable": true,
|
|
"description": "Version of this, if any",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"block_size",
|
|
"description",
|
|
"id",
|
|
"name",
|
|
"size",
|
|
"time_created",
|
|
"time_modified"
|
|
]
|
|
},
|
|
"GlobalImageResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GlobalImage"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"IdentityType": {
|
|
"description": "Describes what kind of identity is described by an id",
|
|
"type": "string",
|
|
"enum": [
|
|
"silo_user"
|
|
]
|
|
},
|
|
"Image": {
|
|
"description": "Client view of project Images",
|
|
"type": "object",
|
|
"properties": {
|
|
"block_size": {
|
|
"description": "size of blocks in bytes",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ByteCount"
|
|
}
|
|
]
|
|
},
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"digest": {
|
|
"nullable": true,
|
|
"description": "Hash of the image contents, if applicable",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Digest"
|
|
}
|
|
]
|
|
},
|
|
"id": {
|
|
"description": "unique, immutable, system-controlled identifier for each resource",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"project_id": {
|
|
"description": "The project the disk belongs to",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"size": {
|
|
"description": "total size in bytes",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ByteCount"
|
|
}
|
|
]
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"url": {
|
|
"nullable": true,
|
|
"description": "URL source of this image, if any",
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"nullable": true,
|
|
"description": "Version of this, if any",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"block_size",
|
|
"description",
|
|
"id",
|
|
"name",
|
|
"project_id",
|
|
"size",
|
|
"time_created",
|
|
"time_modified"
|
|
]
|
|
},
|
|
"ImageCreate": {
|
|
"description": "Create-time parameters for an [`Image`](omicron_common::api::external::Image)",
|
|
"type": "object",
|
|
"properties": {
|
|
"block_size": {
|
|
"description": "block size in bytes",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/BlockSize"
|
|
}
|
|
]
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"source": {
|
|
"description": "The source of the image's contents.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ImageSource"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"block_size",
|
|
"description",
|
|
"name",
|
|
"source"
|
|
]
|
|
},
|
|
"ImageResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Image"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"ImageSource": {
|
|
"description": "The source of the underlying image.",
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"src": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"url"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"src",
|
|
"type"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"src": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"snapshot"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"src",
|
|
"type"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"Instance": {
|
|
"description": "Client view of an [`Instance`]",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"hostname": {
|
|
"description": "RFC1035-compliant hostname for the Instance.",
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"description": "unique, immutable, system-controlled identifier for each resource",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"memory": {
|
|
"description": "memory allocated for this Instance",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ByteCount"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"ncpus": {
|
|
"description": "number of CPUs allocated for this Instance",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/InstanceCpuCount"
|
|
}
|
|
]
|
|
},
|
|
"project_id": {
|
|
"description": "id for the project containing this Instance",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"run_state": {
|
|
"$ref": "#/components/schemas/InstanceState"
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_run_state_updated": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"hostname",
|
|
"id",
|
|
"memory",
|
|
"name",
|
|
"ncpus",
|
|
"project_id",
|
|
"run_state",
|
|
"time_created",
|
|
"time_modified",
|
|
"time_run_state_updated"
|
|
]
|
|
},
|
|
"InstanceCpuCount": {
|
|
"description": "The number of CPUs in an Instance",
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0
|
|
},
|
|
"InstanceCreate": {
|
|
"description": "Create-time parameters for an [`Instance`](omicron_common::api::external::Instance)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"disks": {
|
|
"description": "The disks to be created or attached for this instance.",
|
|
"default": [],
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/InstanceDiskAttachment"
|
|
}
|
|
},
|
|
"hostname": {
|
|
"type": "string"
|
|
},
|
|
"memory": {
|
|
"$ref": "#/components/schemas/ByteCount"
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"ncpus": {
|
|
"$ref": "#/components/schemas/InstanceCpuCount"
|
|
},
|
|
"network_interfaces": {
|
|
"description": "The network interfaces to be created for this instance.",
|
|
"default": {
|
|
"type": "default"
|
|
},
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/InstanceNetworkInterfaceAttachment"
|
|
}
|
|
]
|
|
},
|
|
"user_data": {
|
|
"description": "User data for instance initialization systems (such as cloud-init). Must be a Base64-encoded string, as specified in RFC 4648 § 4 (+ and / characters with padding). Maximum 32 KiB unencoded data.",
|
|
"default": "",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"hostname",
|
|
"memory",
|
|
"name",
|
|
"ncpus"
|
|
]
|
|
},
|
|
"InstanceDiskAttachment": {
|
|
"description": "Describe the instance's disks at creation time",
|
|
"oneOf": [
|
|
{
|
|
"description": "During instance creation, create and attach disks",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"disk_source": {
|
|
"description": "initial source for this disk",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/DiskSource"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"size": {
|
|
"description": "total size of the Disk in bytes",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ByteCount"
|
|
}
|
|
]
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"create"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"disk_source",
|
|
"name",
|
|
"size",
|
|
"type"
|
|
]
|
|
},
|
|
{
|
|
"description": "During instance creation, attach this disk",
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "A disk name to attach",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"attach"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"type"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"InstanceMigrate": {
|
|
"description": "Migration parameters for an [`Instance`](omicron_common::api::external::Instance)",
|
|
"type": "object",
|
|
"properties": {
|
|
"dst_sled_uuid": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
"required": [
|
|
"dst_sled_uuid"
|
|
]
|
|
},
|
|
"InstanceNetworkInterfaceAttachment": {
|
|
"description": "Describes an attachment of a `NetworkInterface` to an `Instance`, at the time the instance is created.",
|
|
"oneOf": [
|
|
{
|
|
"description": "Create one or more `NetworkInterface`s for the `Instance`",
|
|
"type": "object",
|
|
"properties": {
|
|
"params": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/NetworkInterfaceCreate"
|
|
}
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"create"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"params",
|
|
"type"
|
|
]
|
|
},
|
|
{
|
|
"description": "Default networking setup, which creates a single interface with an auto-assigned IP address from project's \"default\" VPC and \"default\" VPC Subnet.",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"default"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
]
|
|
},
|
|
{
|
|
"description": "No network interfaces at all will be created for the instance.",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"none"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"InstanceResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Instance"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"InstanceState": {
|
|
"description": "Running state of an Instance (primarily: booted or stopped)\n\nThis typically reflects whether it's starting, running, stopping, or stopped, but also includes states related to the Instance's lifecycle",
|
|
"type": "string",
|
|
"enum": [
|
|
"creating",
|
|
"starting",
|
|
"running",
|
|
"stopping",
|
|
"stopped",
|
|
"rebooting",
|
|
"migrating",
|
|
"repairing",
|
|
"failed",
|
|
"destroyed"
|
|
]
|
|
},
|
|
"IpNet": {
|
|
"oneOf": [
|
|
{
|
|
"title": "v4",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Ipv4Net"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "v6",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Ipv6Net"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"Ipv4Net": {
|
|
"example": "192.168.1.0/24",
|
|
"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": {
|
|
"example": "fd12:3456::/64",
|
|
"title": "An IPv6 subnet",
|
|
"description": "An IPv6 subnet, including prefix and subnet mask",
|
|
"type": "string",
|
|
"pattern": "^(fd|FD)[0-9a-fA-F]{2}:((([0-9a-fA-F]{1,4}\\:){6}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,6}:))/(6[4-9]|[7-9][0-9]|1[0-1][0-9]|12[0-6])$",
|
|
"maxLength": 43
|
|
},
|
|
"L4PortRange": {
|
|
"example": "22",
|
|
"title": "A range of IP ports",
|
|
"description": "An inclusive-inclusive range of IP ports. The second port may be omitted to represent a single port",
|
|
"type": "string",
|
|
"pattern": "^[0-9]{1,5}(-[0-9]{1,5})?$",
|
|
"minLength": 1,
|
|
"maxLength": 11
|
|
},
|
|
"LoginParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"username"
|
|
]
|
|
},
|
|
"MacAddr": {
|
|
"example": "ff:ff:ff:ff:ff:ff",
|
|
"title": "A MAC address",
|
|
"description": "A Media Access Control address, in EUI-48 format",
|
|
"type": "string",
|
|
"pattern": "^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$",
|
|
"minLength": 17,
|
|
"maxLength": 17
|
|
},
|
|
"Name": {
|
|
"title": "A name 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"
|
|
]
|
|
},
|
|
"NetworkInterfaceCreate": {
|
|
"description": "Create-time parameters for a [`NetworkInterface`](omicron_common::api::external::NetworkInterface)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"ip": {
|
|
"nullable": true,
|
|
"description": "The IP address for the interface. One will be auto-assigned if not provided.",
|
|
"type": "string",
|
|
"format": "ip"
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"subnet_name": {
|
|
"description": "The VPC Subnet in which to create the interface.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"vpc_name": {
|
|
"description": "The VPC in which to create the interface.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"name",
|
|
"subnet_name",
|
|
"vpc_name"
|
|
]
|
|
},
|
|
"NetworkInterfaceResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/NetworkInterface"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"Organization": {
|
|
"description": "Client view of an [`Organization`]",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"description": "unique, immutable, system-controlled identifier for each resource",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"id",
|
|
"name",
|
|
"time_created",
|
|
"time_modified"
|
|
]
|
|
},
|
|
"OrganizationCreate": {
|
|
"description": "Create-time parameters for an [`Organization`](crate::external_api::views::Organization)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"name"
|
|
]
|
|
},
|
|
"OrganizationResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Organization"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"OrganizationRoles": {
|
|
"type": "string",
|
|
"enum": [
|
|
"admin",
|
|
"collaborator"
|
|
]
|
|
},
|
|
"OrganizationRolesPolicy": {
|
|
"description": "Client view of a [`Policy`], which describes how this resource may be accessed\n\nNote that the Policy only describes access granted explicitly for this resource. The policies of parent resources can also cause a user to have access to this resource.",
|
|
"type": "object",
|
|
"properties": {
|
|
"role_assignments": {
|
|
"description": "Roles directly assigned on this resource",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/OrganizationRolesRoleAssignment"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"role_assignments"
|
|
]
|
|
},
|
|
"OrganizationRolesRoleAssignment": {
|
|
"description": "Describes the assignment of a particular role on a particular resource to a particular identity (user, group, etc.)\n\nThe resource is not part of this structure. Rather, [`RoleAssignment`]s are put into a [`Policy`] and that Policy is applied to a particular resource.",
|
|
"type": "object",
|
|
"properties": {
|
|
"identity_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"identity_type": {
|
|
"$ref": "#/components/schemas/IdentityType"
|
|
},
|
|
"role_name": {
|
|
"$ref": "#/components/schemas/OrganizationRoles"
|
|
}
|
|
},
|
|
"required": [
|
|
"identity_id",
|
|
"identity_type",
|
|
"role_name"
|
|
]
|
|
},
|
|
"OrganizationUpdate": {
|
|
"description": "Updateable properties of an [`Organization`](crate::external_api::views::Organization)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"nullable": true,
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"Project": {
|
|
"description": "Client view of a [`Project`]",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"description": "unique, immutable, system-controlled identifier for each resource",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"organization_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"id",
|
|
"name",
|
|
"organization_id",
|
|
"time_created",
|
|
"time_modified"
|
|
]
|
|
},
|
|
"ProjectCreate": {
|
|
"description": "Create-time parameters for a [`Project`](crate::external_api::views::Project)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"name"
|
|
]
|
|
},
|
|
"ProjectResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Project"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"ProjectRoles": {
|
|
"type": "string",
|
|
"enum": [
|
|
"admin",
|
|
"collaborator",
|
|
"viewer"
|
|
]
|
|
},
|
|
"ProjectRolesPolicy": {
|
|
"description": "Client view of a [`Policy`], which describes how this resource may be accessed\n\nNote that the Policy only describes access granted explicitly for this resource. The policies of parent resources can also cause a user to have access to this resource.",
|
|
"type": "object",
|
|
"properties": {
|
|
"role_assignments": {
|
|
"description": "Roles directly assigned on this resource",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProjectRolesRoleAssignment"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"role_assignments"
|
|
]
|
|
},
|
|
"ProjectRolesRoleAssignment": {
|
|
"description": "Describes the assignment of a particular role on a particular resource to a particular identity (user, group, etc.)\n\nThe resource is not part of this structure. Rather, [`RoleAssignment`]s are put into a [`Policy`] and that Policy is applied to a particular resource.",
|
|
"type": "object",
|
|
"properties": {
|
|
"identity_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"identity_type": {
|
|
"$ref": "#/components/schemas/IdentityType"
|
|
},
|
|
"role_name": {
|
|
"$ref": "#/components/schemas/ProjectRoles"
|
|
}
|
|
},
|
|
"required": [
|
|
"identity_id",
|
|
"identity_type",
|
|
"role_name"
|
|
]
|
|
},
|
|
"ProjectUpdate": {
|
|
"description": "Updateable properties of a [`Project`](crate::external_api::views::Project)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"nullable": true,
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"Rack": {
|
|
"description": "Client view of an [`Rack`]",
|
|
"type": "object",
|
|
"properties": {
|
|
"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 `RouteDestination` is used to match traffic with a routing rule, on the destination of that traffic.\n\nWhen traffic is to be sent to a destination that is within a given `RouteDestination`, the corresponding [`RouterRoute`] applies, and traffic will be forward to the [`RouteTarget`] for that rule.",
|
|
"oneOf": [
|
|
{
|
|
"description": "Route applies to traffic destined for a specific IP address",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ip"
|
|
]
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"format": "ip"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "Route applies to traffic destined for a specific IP subnet",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ip_net"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/IpNet"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "Route applies to traffic destined for the given VPC.",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"vpc"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "Route applies to traffic",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"subnet"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"RouteTarget": {
|
|
"description": "A `RouteTarget` describes the possible locations that traffic matching a route destination can be sent.",
|
|
"oneOf": [
|
|
{
|
|
"description": "Forward traffic to a particular IP address.",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ip"
|
|
]
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"format": "ip"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "Forward traffic to a VPC",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"vpc"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "Forward traffic to a VPC Subnet",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"subnet"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "Forward traffic to a specific instance",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"instance"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "Forward traffic to an internet gateway",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"internet_gateway"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"RouterRoute": {
|
|
"description": "A route defines a rule that governs where traffic should be sent based on its destination.",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"destination": {
|
|
"$ref": "#/components/schemas/RouteDestination"
|
|
},
|
|
"id": {
|
|
"description": "unique, immutable, system-controlled identifier for each resource",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"kind": {
|
|
"description": "Describes the kind of router. Set at creation. `read-only`",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/RouterRouteKind"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"target": {
|
|
"$ref": "#/components/schemas/RouteTarget"
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"vpc_router_id": {
|
|
"description": "The VPC Router to which the route belongs.",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"destination",
|
|
"id",
|
|
"kind",
|
|
"name",
|
|
"target",
|
|
"time_created",
|
|
"time_modified",
|
|
"vpc_router_id"
|
|
]
|
|
},
|
|
"RouterRouteCreateParams": {
|
|
"description": "Create-time parameters for a [`RouterRoute`]",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"destination": {
|
|
"$ref": "#/components/schemas/RouteDestination"
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"target": {
|
|
"$ref": "#/components/schemas/RouteTarget"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"destination",
|
|
"name",
|
|
"target"
|
|
]
|
|
},
|
|
"RouterRouteKind": {
|
|
"description": "The classification of a [`RouterRoute`] as defined by the system. The kind determines certain attributes such as if the route is modifiable and describes how or where the route was created.\n\nSee [RFD-21](https://rfd.shared.oxide.computer/rfd/0021#concept-router) for more context",
|
|
"type": "string",
|
|
"enum": [
|
|
"default",
|
|
"vpc_subnet",
|
|
"vpc_peering",
|
|
"custom"
|
|
]
|
|
},
|
|
"RouterRouteResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RouterRoute"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"RouterRouteUpdateParams": {
|
|
"description": "Updateable properties of a [`RouterRoute`]",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"destination": {
|
|
"$ref": "#/components/schemas/RouteDestination"
|
|
},
|
|
"name": {
|
|
"nullable": true,
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"target": {
|
|
"$ref": "#/components/schemas/RouteTarget"
|
|
}
|
|
},
|
|
"required": [
|
|
"destination",
|
|
"target"
|
|
]
|
|
},
|
|
"Saga": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"state": {
|
|
"$ref": "#/components/schemas/SagaState"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"state"
|
|
]
|
|
},
|
|
"SagaErrorInfo": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"error": {
|
|
"type": "string",
|
|
"enum": [
|
|
"action_failed"
|
|
]
|
|
},
|
|
"source_error": {}
|
|
},
|
|
"required": [
|
|
"error",
|
|
"source_error"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"error": {
|
|
"type": "string",
|
|
"enum": [
|
|
"deserialize_failed"
|
|
]
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"error",
|
|
"message"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"error": {
|
|
"type": "string",
|
|
"enum": [
|
|
"injected_error"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"error"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"error": {
|
|
"type": "string",
|
|
"enum": [
|
|
"serialize_failed"
|
|
]
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"error",
|
|
"message"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"error": {
|
|
"type": "string",
|
|
"enum": [
|
|
"subsaga_create_failed"
|
|
]
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"error",
|
|
"message"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"SagaResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Saga"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"SagaState": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"running"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"state"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"succeeded"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"state"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"error_info": {
|
|
"$ref": "#/components/schemas/SagaErrorInfo"
|
|
},
|
|
"error_node_name": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"failed"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"error_info",
|
|
"error_node_name",
|
|
"state"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"SessionUser": {
|
|
"description": "Client view of currently authed user.",
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
"required": [
|
|
"id"
|
|
]
|
|
},
|
|
"Silo": {
|
|
"description": "Client view of a ['Silo']",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"discoverable": {
|
|
"description": "A silo where discoverable is false can be retrieved only by its id - it will not be part of the \"list all silos\" output.",
|
|
"type": "boolean"
|
|
},
|
|
"id": {
|
|
"description": "unique, immutable, system-controlled identifier for each resource",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"discoverable",
|
|
"id",
|
|
"name",
|
|
"time_created",
|
|
"time_modified"
|
|
]
|
|
},
|
|
"SiloCreate": {
|
|
"description": "Create-time parameters for a [`Silo`](crate::external_api::views::Silo)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"discoverable": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"discoverable",
|
|
"name"
|
|
]
|
|
},
|
|
"SiloResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Silo"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"SiloRoles": {
|
|
"type": "string",
|
|
"enum": [
|
|
"admin",
|
|
"collaborator",
|
|
"viewer"
|
|
]
|
|
},
|
|
"SiloRolesPolicy": {
|
|
"description": "Client view of a [`Policy`], which describes how this resource may be accessed\n\nNote that the Policy only describes access granted explicitly for this resource. The policies of parent resources can also cause a user to have access to this resource.",
|
|
"type": "object",
|
|
"properties": {
|
|
"role_assignments": {
|
|
"description": "Roles directly assigned on this resource",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SiloRolesRoleAssignment"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"role_assignments"
|
|
]
|
|
},
|
|
"SiloRolesRoleAssignment": {
|
|
"description": "Describes the assignment of a particular role on a particular resource to a particular identity (user, group, etc.)\n\nThe resource is not part of this structure. Rather, [`RoleAssignment`]s are put into a [`Policy`] and that Policy is applied to a particular resource.",
|
|
"type": "object",
|
|
"properties": {
|
|
"identity_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"identity_type": {
|
|
"$ref": "#/components/schemas/IdentityType"
|
|
},
|
|
"role_name": {
|
|
"$ref": "#/components/schemas/SiloRoles"
|
|
}
|
|
},
|
|
"required": [
|
|
"identity_id",
|
|
"identity_type",
|
|
"role_name"
|
|
]
|
|
},
|
|
"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"
|
|
]
|
|
},
|
|
"Snapshot": {
|
|
"description": "Client view of a Snapshot",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"disk_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"id": {
|
|
"description": "unique, immutable, system-controlled identifier for each resource",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"project_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"size": {
|
|
"$ref": "#/components/schemas/ByteCount"
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"disk_id",
|
|
"id",
|
|
"name",
|
|
"project_id",
|
|
"size",
|
|
"time_created",
|
|
"time_modified"
|
|
]
|
|
},
|
|
"SnapshotCreate": {
|
|
"description": "Create-time parameters for a [`Snapshot`](omicron_common::api::external::Snapshot)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"disk": {
|
|
"description": "The name of the disk to be snapshotted",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"disk",
|
|
"name"
|
|
]
|
|
},
|
|
"SnapshotResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Snapshot"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"SshKey": {
|
|
"description": "Client view of a [`SshKey`]",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"description": "unique, immutable, system-controlled identifier for each resource",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"public_key": {
|
|
"description": "SSH public key, e.g., `\"ssh-ed25519 AAAAC3NzaC...\"`",
|
|
"type": "string"
|
|
},
|
|
"silo_user_id": {
|
|
"description": "The user to whom this key belongs",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"id",
|
|
"name",
|
|
"public_key",
|
|
"silo_user_id",
|
|
"time_created",
|
|
"time_modified"
|
|
]
|
|
},
|
|
"SshKeyCreate": {
|
|
"description": "Create-time parameters for an [`SshKey`](crate::external_api::views::SshKey)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"public_key": {
|
|
"description": "SSH public key, e.g., `\"ssh-ed25519 AAAAC3NzaC...\"`",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"name",
|
|
"public_key"
|
|
]
|
|
},
|
|
"SshKeyResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SshKey"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"TimeseriesName": {
|
|
"title": "The name of a timeseries",
|
|
"description": "Names are constructed by concatenating the target and metric names with ':'. Target and metric names must be lowercase alphanumeric characters with '_' separating words.",
|
|
"type": "string",
|
|
"pattern": "(([a-z]+[a-z0-9]*)(_([a-z0-9]+))*):(([a-z]+[a-z0-9]*)(_([a-z0-9]+))*)"
|
|
},
|
|
"TimeseriesSchema": {
|
|
"description": "The schema for a timeseries.\n\nThis includes the name of the timeseries, as well as the datum type of its metric and the schema for each field.",
|
|
"type": "object",
|
|
"properties": {
|
|
"created": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"datum_type": {
|
|
"$ref": "#/components/schemas/DatumType"
|
|
},
|
|
"field_schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FieldSchema"
|
|
}
|
|
},
|
|
"timeseries_name": {
|
|
"$ref": "#/components/schemas/TimeseriesName"
|
|
}
|
|
},
|
|
"required": [
|
|
"created",
|
|
"datum_type",
|
|
"field_schema",
|
|
"timeseries_name"
|
|
]
|
|
},
|
|
"TimeseriesSchemaResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TimeseriesSchema"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"User": {
|
|
"description": "Client view of a [`User`]",
|
|
"type": "object",
|
|
"properties": {
|
|
"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"
|
|
},
|
|
"ipv6_prefix": {
|
|
"description": "The unique local IPv6 address range for subnets in this VPC",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Ipv6Net"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"project_id": {
|
|
"description": "id for the project containing this VPC",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"system_router_id": {
|
|
"description": "id for the system router where subnet default routes are registered",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"dns_name",
|
|
"id",
|
|
"ipv6_prefix",
|
|
"name",
|
|
"project_id",
|
|
"system_router_id",
|
|
"time_created",
|
|
"time_modified"
|
|
]
|
|
},
|
|
"VpcCreate": {
|
|
"description": "Create-time parameters for a [`Vpc`](crate::external_api::views::Vpc)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"dns_name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
},
|
|
"ipv6_prefix": {
|
|
"nullable": true,
|
|
"description": "The IPv6 prefix for this VPC.\n\nAll IPv6 subnets created from this VPC must be taken from this range, which sould be a Unique Local Address in the range `fd00::/48`. The default VPC Subnet will have the first `/64` range from this prefix.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Ipv6Net"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"dns_name",
|
|
"name"
|
|
]
|
|
},
|
|
"VpcFirewallRule": {
|
|
"description": "A single rule in a VPC firewall",
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"description": "whether traffic matching the rule should be allowed or dropped",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/VpcFirewallRuleAction"
|
|
}
|
|
]
|
|
},
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"direction": {
|
|
"description": "whether this rule is for incoming or outgoing traffic",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/VpcFirewallRuleDirection"
|
|
}
|
|
]
|
|
},
|
|
"filters": {
|
|
"description": "reductions on the scope of the rule",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/VpcFirewallRuleFilter"
|
|
}
|
|
]
|
|
},
|
|
"id": {
|
|
"description": "unique, immutable, system-controlled identifier for each resource",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"priority": {
|
|
"description": "the relative priority of this rule",
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0
|
|
},
|
|
"status": {
|
|
"description": "whether this rule is in effect",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/VpcFirewallRuleStatus"
|
|
}
|
|
]
|
|
},
|
|
"targets": {
|
|
"description": "list of sets of instances that the rule applies to",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/VpcFirewallRuleTarget"
|
|
}
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"vpc_id": {
|
|
"description": "the VPC to which this rule belongs",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
"required": [
|
|
"action",
|
|
"description",
|
|
"direction",
|
|
"filters",
|
|
"id",
|
|
"name",
|
|
"priority",
|
|
"status",
|
|
"targets",
|
|
"time_created",
|
|
"time_modified",
|
|
"vpc_id"
|
|
]
|
|
},
|
|
"VpcFirewallRuleAction": {
|
|
"type": "string",
|
|
"enum": [
|
|
"allow",
|
|
"deny"
|
|
]
|
|
},
|
|
"VpcFirewallRuleDirection": {
|
|
"type": "string",
|
|
"enum": [
|
|
"inbound",
|
|
"outbound"
|
|
]
|
|
},
|
|
"VpcFirewallRuleFilter": {
|
|
"description": "Filter for a firewall rule. A given packet must match every field that is present for the rule to apply to it. A packet matches a field if any entry in that field matches the packet.",
|
|
"type": "object",
|
|
"properties": {
|
|
"hosts": {
|
|
"nullable": true,
|
|
"description": "If present, the sources (if incoming) or destinations (if outgoing) this rule applies to.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/VpcFirewallRuleHostFilter"
|
|
}
|
|
},
|
|
"ports": {
|
|
"nullable": true,
|
|
"description": "If present, the destination ports this rule applies to.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/L4PortRange"
|
|
}
|
|
},
|
|
"protocols": {
|
|
"nullable": true,
|
|
"description": "If present, the networking protocols this rule applies to.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/VpcFirewallRuleProtocol"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"VpcFirewallRuleHostFilter": {
|
|
"description": "The `VpcFirewallRuleHostFilter` is used to filter traffic on the basis of its source or destination host.",
|
|
"oneOf": [
|
|
{
|
|
"description": "The rule applies to traffic from/to all instances in the VPC",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"vpc"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "The rule applies to traffic from/to all instances in the VPC Subnet",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"subnet"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "The rule applies to traffic from/to this specific instance",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"instance"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "The rule applies to traffic from/to a specific IP address",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ip"
|
|
]
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"format": "ip"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "The rule applies to traffic from/to a specific IP subnet",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ip_net"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/IpNet"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"VpcFirewallRuleProtocol": {
|
|
"description": "The protocols that may be specified in a firewall rule's filter",
|
|
"type": "string",
|
|
"enum": [
|
|
"TCP",
|
|
"UDP",
|
|
"ICMP"
|
|
]
|
|
},
|
|
"VpcFirewallRuleStatus": {
|
|
"type": "string",
|
|
"enum": [
|
|
"disabled",
|
|
"enabled"
|
|
]
|
|
},
|
|
"VpcFirewallRuleTarget": {
|
|
"description": "A `VpcFirewallRuleTarget` is used to specify the set of [`Instance`]s to which a firewall rule applies.",
|
|
"oneOf": [
|
|
{
|
|
"description": "The rule applies to all instances in the VPC",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"vpc"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "The rule applies to all instances in the VPC Subnet",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"subnet"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "The rule applies to this specific instance",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"instance"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "The rule applies to a specific IP address",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ip"
|
|
]
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"format": "ip"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"description": "The rule applies to a specific IP subnet",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ip_net"
|
|
]
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/IpNet"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"VpcFirewallRuleUpdate": {
|
|
"description": "A single rule in a VPC firewall",
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"description": "whether traffic matching the rule should be allowed or dropped",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/VpcFirewallRuleAction"
|
|
}
|
|
]
|
|
},
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"direction": {
|
|
"description": "whether this rule is for incoming or outgoing traffic",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/VpcFirewallRuleDirection"
|
|
}
|
|
]
|
|
},
|
|
"filters": {
|
|
"description": "reductions on the scope of the rule",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/VpcFirewallRuleFilter"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "name of the rule, unique to this VPC",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"priority": {
|
|
"description": "the relative priority of this rule",
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0
|
|
},
|
|
"status": {
|
|
"description": "whether this rule is in effect",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/VpcFirewallRuleStatus"
|
|
}
|
|
]
|
|
},
|
|
"targets": {
|
|
"description": "list of sets of instances that the rule applies to",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/VpcFirewallRuleTarget"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"action",
|
|
"description",
|
|
"direction",
|
|
"filters",
|
|
"name",
|
|
"priority",
|
|
"status",
|
|
"targets"
|
|
]
|
|
},
|
|
"VpcFirewallRuleUpdateParams": {
|
|
"description": "Updateable properties of a `Vpc`'s firewall Note that VpcFirewallRules are implicitly created along with a Vpc, so there is no explicit creation.",
|
|
"type": "object",
|
|
"properties": {
|
|
"rules": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/VpcFirewallRuleUpdate"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"rules"
|
|
]
|
|
},
|
|
"VpcFirewallRules": {
|
|
"description": "Collection of a [`Vpc`]'s firewall rules",
|
|
"type": "object",
|
|
"properties": {
|
|
"rules": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/VpcFirewallRule"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"rules"
|
|
]
|
|
},
|
|
"VpcResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Vpc"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"VpcRouter": {
|
|
"description": "A VPC router defines a series of rules that indicate where traffic should be sent depending on its destination.",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"description": "unique, immutable, system-controlled identifier for each resource",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"kind": {
|
|
"$ref": "#/components/schemas/VpcRouterKind"
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"vpc_id": {
|
|
"description": "The VPC to which the router belongs.",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"id",
|
|
"kind",
|
|
"name",
|
|
"time_created",
|
|
"time_modified",
|
|
"vpc_id"
|
|
]
|
|
},
|
|
"VpcRouterCreate": {
|
|
"description": "Create-time parameters for a [`VpcRouter`](crate::external_api::views::VpcRouter)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"name"
|
|
]
|
|
},
|
|
"VpcRouterKind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"system",
|
|
"custom"
|
|
]
|
|
},
|
|
"VpcRouterResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/VpcRouter"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"VpcRouterUpdate": {
|
|
"description": "Updateable properties of a [`VpcRouter`](crate::external_api::views::VpcRouter)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"nullable": true,
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"VpcSubnet": {
|
|
"description": "A VPC subnet represents a logical grouping for instances that allows network traffic between them, within a IPv4 subnetwork or optionall an IPv6 subnetwork.",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"description": "human-readable free-form text about a resource",
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"description": "unique, immutable, system-controlled identifier for each resource",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"ipv4_block": {
|
|
"description": "The IPv4 subnet CIDR block.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Ipv4Net"
|
|
}
|
|
]
|
|
},
|
|
"ipv6_block": {
|
|
"description": "The IPv6 subnet CIDR block.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Ipv6Net"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "unique, mutable, user-controlled identifier for each resource",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"time_created": {
|
|
"description": "timestamp when this resource was created",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"time_modified": {
|
|
"description": "timestamp when this resource was last modified",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"vpc_id": {
|
|
"description": "The VPC to which the subnet belongs.",
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"id",
|
|
"ipv4_block",
|
|
"ipv6_block",
|
|
"name",
|
|
"time_created",
|
|
"time_modified",
|
|
"vpc_id"
|
|
]
|
|
},
|
|
"VpcSubnetCreate": {
|
|
"description": "Create-time parameters for a [`VpcSubnet`](crate::external_api::views::VpcSubnet)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"ipv4_block": {
|
|
"description": "The IPv4 address range for this subnet.\n\nIt must be allocated from an RFC 1918 private address range, and must not overlap with any other existing subnet in the VPC.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Ipv4Net"
|
|
}
|
|
]
|
|
},
|
|
"ipv6_block": {
|
|
"nullable": true,
|
|
"description": "The IPv6 address range for this subnet.\n\nIt must be allocated from the RFC 4193 Unique Local Address range, with the prefix equal to the parent VPC's prefix. A random `/64` block will be assigned if one is not provided. It must not overlap with any existing subnet in the VPC.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Ipv6Net"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"ipv4_block",
|
|
"name"
|
|
]
|
|
},
|
|
"VpcSubnetResultsPage": {
|
|
"description": "A single page of results",
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"description": "list of items on this page of results",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/VpcSubnet"
|
|
}
|
|
},
|
|
"next_page": {
|
|
"nullable": true,
|
|
"description": "token used to fetch the next page of results (if any)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"items"
|
|
]
|
|
},
|
|
"VpcSubnetUpdate": {
|
|
"description": "Updateable properties of a [`VpcSubnet`](crate::external_api::views::VpcSubnet)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"nullable": true,
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"VpcUpdate": {
|
|
"description": "Updateable properties of a [`Vpc`](crate::external_api::views::Vpc)",
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"dns_name": {
|
|
"nullable": true,
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"nullable": true,
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Name"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"IdSortMode": {
|
|
"description": "Supported set of sort modes for scanning by id only.\n\nCurrently, we only support scanning in ascending order.",
|
|
"type": "string",
|
|
"enum": [
|
|
"id_ascending"
|
|
]
|
|
},
|
|
"NameSortMode": {
|
|
"description": "Supported set of sort modes for scanning by name only\n\nCurrently, we only support scanning in ascending order.",
|
|
"type": "string",
|
|
"enum": [
|
|
"name_ascending"
|
|
]
|
|
},
|
|
"NameOrIdSortMode": {
|
|
"description": "Supported set of sort modes for scanning by name or id",
|
|
"type": "string",
|
|
"enum": [
|
|
"name_ascending",
|
|
"name_descending",
|
|
"id_ascending"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"tags": [
|
|
{
|
|
"name": "disks",
|
|
"description": "Virtual disks are used to store instance-local data which includes the operating system.",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "firewall",
|
|
"description": "Firewall operation controls the flow of network data into a VPC",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "hidden",
|
|
"description": "TODO operations that will not ship to customers",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "images",
|
|
"description": "Images are read-only Virtual Disks that may be used to boot Virtual Machines",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "images:global",
|
|
"description": "Images are read-only Virtual Disks that may be used to boot Virtual Machines. These images are scoped globally.",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "instances",
|
|
"description": "Virtual machine instances are the basic unit of computation. These operations are used for provisioning, controlling, and destroying instances.",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "metrics",
|
|
"description": "Metrics provide insight into the operation of the Oxide deployment. These include telemetry on hardware and software components that can be used to understand the current state as well as to diagnose issues.",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "organizations",
|
|
"description": "Organizations represent a subset of users and projects in an Oxide deployment.",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "policy",
|
|
"description": "System-wide IAM policy",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "projects",
|
|
"description": "Projects are a grouping of associated resources such as instances and disks within an organization for purposes of billing and access control.",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "racks",
|
|
"description": "These operations pertain to hardware inventory and management. Racks are the unit of expansion of an Oxide deployment. Racks are in turn composed of sleds, switches, power supplies, and a cabled backplane.",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "roles",
|
|
"description": "Roles are a component of Identity and Access Management (IAM) that allow a user or agent account access to additional permissions.",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "routers",
|
|
"description": "Routers direct the flow of network traffic into, out of, and within a VPC via routes.",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "routes",
|
|
"description": "Routes define router policy.",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "sagas",
|
|
"description": "Sagas are the abstraction used to represent multi-step operations within the Oxide deployment. These operations can be used to query saga status and report errors.",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "silos",
|
|
"description": "Silos represent a logical partition of users and resources.",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "sleds",
|
|
"description": "This tag should be moved into hardware",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "snapshots",
|
|
"description": "Snapshots of Virtual Disks at a particular point in time.",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "sshkeys",
|
|
"description": "Public SSH keys for an individual user",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "subnets",
|
|
"description": "This tag should be moved into a generic network tag",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "updates",
|
|
"description": "This tag should be moved into a operations tag",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "users",
|
|
"description": "This tag should be moved into an IAM tag",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
},
|
|
{
|
|
"name": "vpcs",
|
|
"description": "A Virtual Private Cloud (VPC) is an isolated network environment that should probaby be moved into a more generic networking tag",
|
|
"externalDocs": {
|
|
"url": "http://oxide.computer/docs/#xxx"
|
|
}
|
|
}
|
|
]
|
|
} |