diff --git a/.github/workflows/generator.yaml b/.github/workflows/generator.yaml index 2954190..fa0fd17 100644 --- a/.github/workflows/generator.yaml +++ b/.github/workflows/generator.yaml @@ -16,6 +16,6 @@ jobs: with: fetch-depth: 0 - name: Run code generation - run: (bash /usr/local/bin/docker-entrypoint.sh generate -i blob:https://www.vultr.com/ddc5a3ba-302d-4eec-8908-5a72f58c999b --additional-properties moduleName=VultRuby -g ruby -o ./vendor/vultr_ruby) + run: (bash /usr/local/bin/docker-entrypoint.sh generate -i blob/v0.0.1.json --additional-properties moduleName=VultRuby --skip-validate-spec -g ruby -o ./vendor/vultr_ruby) - name: Create Pull Request uses: peter-evans/create-pull-request@v5 diff --git a/blob/v0.0.1.json b/blob/v0.0.1.json new file mode 100644 index 0000000..3713be8 --- /dev/null +++ b/blob/v0.0.1.json @@ -0,0 +1,24077 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Vultr API", + "version": "2.0", + "contact": { + "email": "support@vultr.com", + "name": "", + "url": "https://www.vultr.com" + }, + "description": "# Introduction\n\nThe Vultr API v2 is a set of HTTP endpoints that adhere to RESTful design principles and CRUD actions with predictable URIs. It uses standard HTTP response codes, authentication, and verbs. The API has consistent and well-formed JSON requests and responses with cursor-based pagination to simplify list handling. Error messages are descriptive and easy to understand. All functions of the Vultr customer portal are accessible via the API, enabling you to script complex unattended scenarios with any tool fluent in HTTP.\n\n## Requests\n\nCommunicate with the API by making an HTTP request at the correct endpoint. The chosen method determines the action taken.\n\n| Method | Usage |\n| ------ | ------------- |\n| DELETE | Use the DELETE method to destroy a resource in your account. If it is not found, the operation will return a 4xx error and an appropriate message. |\n| GET | To retrieve information about a resource, use the GET method. The data is returned as a JSON object. GET methods are read-only and do not affect any resources. |\n| PATCH | Some resources support partial modification with PATCH, which modifies specific attributes without updating the entire object representation. |\n| POST | Issue a POST method to create a new object. Include all needed attributes in the request body encoded as JSON. |\n| PUT | Use the PUT method to update information about a resource. PUT will set new values on the item without regard to their current values. |\n\n**Rate Limit:** Vultr safeguards the API against bursts of incoming traffic based on the request's IP address to ensure stability for all users. If your application sends more than 30 requests per second, the API may return HTTP status code 429.\n\n## Response Codes\n\nWe use standard HTTP response codes to show the success or failure of requests. Response codes in the 2xx range indicate success, while codes in the 4xx range indicate an error, such as an authorization failure or a malformed request. All 4xx errors will return a JSON response object with an `error` attribute explaining the error. Codes in the 5xx range indicate a server-side problem preventing Vultr from fulfilling your request.\n\n| Response | Description |\n| ------ | ------------- |\n| 200 OK | The response contains your requested information. |\n| 201 Created | Your request was accepted. The resource was created. |\n| 202 Accepted | Your request was accepted. The resource was created or updated. |\n| 204 No Content | Your request succeeded, there is no additional information returned. |\n| 400 Bad Request | Your request was malformed. |\n| 401 Unauthorized | You did not supply valid authentication credentials. |\n| 403 Forbidden | You are not allowed to perform that action. |\n| 404 Not Found | No results were found for your request. |\n| 429 Too Many Requests | Your request exceeded the API rate limit. |\n| 500 Internal Server Error | We were unable to perform the request due to server-side problems. |\n\n## Meta and Pagination\n\nMany API calls will return a `meta` object with paging information.\n\n### Definitions\n\n| Term | Description |\n| ------ | ------------- |\n| **List** | The items returned from the database for your request (not necessarily shown in a single response depending on the **cursor** size). |\n| **Page** | A subset of the full **list** of items. Choose the size of a **page** with the `per_page` parameter. |\n| **Total** | The `total` attribute indicates the number of items in the full **list**.|\n| **Cursor** | Use the `cursor` query parameter to select a next or previous **page**. |\n| **Next** & **Prev** | Use the `next` and `prev` attributes of the `links` meta object as `cursor` values. |\n\n### How to use Paging\n\nIf your result **list** total exceeds the default **cursor** size (the default depends on the route, but is usually 100 records) or the value defined by the `per_page` query param (when present) the response will be returned to you paginated.\n\n### Paging Example\n\n> These examples have abbreviated attributes and sample values. Your actual `cursor` values will be encoded alphanumeric strings.\n\nTo return a **page** with the first two plans in the List:\n\n curl \"https://api.vultr.com/v2/plans?per_page=2\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n\nThe API returns an object similar to this:\n\n {\n \"plans\": [\n {\n \"id\": \"vc2-1c-2gb\",\n \"vcpu_count\": 1,\n \"ram\": 2048,\n \"locations\": []\n },\n {\n \"id\": \"vc2-24c-97gb\",\n \"vcpu_count\": 24,\n \"ram\": 98304,\n \"locations\": []\n }\n ],\n \"meta\": {\n \"total\": 19,\n \"links\": {\n \"next\": \"WxYzExampleNext\",\n \"prev\": \"WxYzExamplePrev\"\n }\n }\n }\n\nThe object contains two plans. The `total` attribute indicates that 19 plans are available in the List. To navigate forward in the **list**, use the `next` value (`WxYzExampleNext` in this example) as your `cursor` query parameter.\n\n curl \"https://api.vultr.com/v2/plans?per_page=2&cursor=WxYzExampleNext\" \\\n -X GET\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n\nLikewise, you can use the example `prev` value `WxYzExamplePrev` to navigate backward.\n\n## Parameters\n\nYou can pass information to the API with three different types of parameters.\n\n### Path parameters\n\nSome API calls require variable parameters as part of the endpoint path. For example, to retrieve information about a user, supply the `user-id` in the endpoint.\n\n curl \"https://api.vultr.com/v2/users/{user-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n\n### Query parameters\n\nSome API calls allow filtering with query parameters. For example, the `/v2/plans` endpoint supports a `type` query parameter. Setting `type=vhf` instructs the API only to return High Frequency Compute plans in the list. You'll find more specifics about valid filters in the endpoint documentation below.\n\n curl \"https://api.vultr.com/v2/plans?type=vhf\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n\nYou can also combine filtering with paging. Use the `per_page` parameter to retreive a subset of vhf plans.\n\n curl \"https://api.vultr.com/v2/plans?type=vhf&per_page=2\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n\n### Request Body\n\nPUT, POST, and PATCH methods may include an object in the request body with a content type of **application/json**. The documentation for each endpoint below has more information about the expected object.\n\n## API Example Conventions\n\nThe examples in this documentation use `curl`, a command-line HTTP client, to demonstrate useage. Linux and macOS computers usually have curl installed by default, and it's [available for download](https://curl.se/download.html) on all popular platforms including Windows.\n\nEach example is split across multiple lines with the `\\` character, which is compatible with a `bash` terminal. A typical example looks like this:\n\n curl \"https://api.vultr.com/v2/domains\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"domain\" : \"example.com\",\n \"ip\" : \"192.0.2.123\"\n }'\n\n* The `-X` parameter sets the request method. For consistency, we show the method on all examples, even though it's not explicitly required for GET methods.\n* The `-H` lines set required HTTP headers. These examples are formatted to expand the VULTR\\_API\\_KEY environment variable for your convenience.\n* Examples that require a JSON object in the request body pass the required data via the `--data` parameter.\n\nAll values in this guide are examples. Do not rely on the OS or Plan IDs listed in this guide; use the appropriate endpoint to retreive values before creating resources.\n" + }, + "servers": [ + { + "url": "https://api.vultr.com/v2" + } + ], + "paths": { + "/private-networks/{network-id}": { + "get": { + "summary": "Get a private network", + "tags": [ + "private Networks" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/private-networks/{network-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "network": { + "$ref": "#/components/schemas/network" + } + } + }, + "examples": { + "response": { + "value": { + "network": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "region": "ewr", + "description": "Example Network Description", + "v4_subnet": "10.99.0.0", + "v4_subnet_mask": 24 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-network", + "security": [ + { + "API Key": [] + } + ], + "description": "Get information about a Private Network.

**Deprecated**: Use [Get VPC](#operation/get-vpc) instead. ", + "deprecated": true + }, + "delete": { + "summary": "Delete a private network", + "tags": [ + "private Networks" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/private-networks/{network-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-network", + "description": "Delete a Private Network.

**Deprecated**: Use [Delete VPC](#operation/delete-vpc) instead.", + "security": [ + { + "API Key": [] + } + ], + "deprecated": true + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "network-id", + "in": "path", + "required": true, + "description": "The [Network id](#operation/list-networks)." + } + ], + "put": { + "summary": "Update a Private Network", + "operationId": "update-network", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update information for a Private Network.

**Deprecated**: Use [Update VPC](#operation/update-vpc) instead.", + "tags": [ + "private Networks" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/private-networks/{network-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\" : \"Example Private Network\"\n }'" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "The Private Network description." + } + }, + "required": [ + "description" + ] + }, + "examples": { + "request": { + "value": { + "description": "Example Private Network" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ], + "deprecated": true + } + }, + "/private-networks": { + "get": { + "summary": "List Private Networks", + "tags": [ + "private Networks" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/private-networks\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "networks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/network" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "networks": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "region": "ewr", + "date_created": "2020-10-10T01:56:20+00:00", + "description": "Example Network Description", + "v4_subnet": "10.99.0.0", + "v4_subnet_mask": 24 + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-networks", + "security": [ + { + "API Key": [] + } + ], + "description": "Get a list of all Private Networks in your account.

**Deprecated**: Use [List VPCs](#operation/list-vpcs) instead.", + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ], + "deprecated": true + }, + "post": { + "summary": "Create a Private Network", + "tags": [ + "private Networks" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/private-networks\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"description\" : \"Example Private Network\",\n \"v4_subnet\" : \"10.99.0.0\",\n \"v4_subnet_mask\" : 24\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "network": { + "$ref": "#/components/schemas/network" + } + } + }, + "examples": { + "response": { + "value": { + "network": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "region": "ewr", + "description": "Example Private Network", + "v4_subnet": "10.99.0.0", + "v4_subnet_mask": 24 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-network", + "security": [ + { + "API Key": [] + } + ], + "description": "Create a new Private Network in a `region`.\n\n**Deprecated**: Use [Create VPC](#operation/create-vpc) instead.\n\n Private networks should use [RFC1918 private address space](https://tools.ietf.org/html/rfc1918):\n\n 10.0.0.0 - 10.255.255.255 (10/8 prefix)\n 172.16.0.0 - 172.31.255.255 (172.16/12 prefix)\n 192.168.0.0 - 192.168.255.255 (192.168/16 prefix)\n", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "region": { + "type": "string", + "description": "Create the Private Network in this [Region id](#operation/list-regions)." + }, + "description": { + "type": "string", + "description": "A description of the private network." + }, + "v4_subnet": { + "type": "string", + "description": "The IPv4 network address. For example: 10.99.0.0" + }, + "v4_subnet_mask": { + "type": "integer", + "description": "The number of bits for the netmask in CIDR notation. Example: 24" + } + }, + "required": [ + "region" + ] + }, + "examples": { + "example": { + "value": { + "region": "ewr", + "description": "Example Private Network", + "v4_subnet": "10.99.0.0", + "v4_subnet_mask": 24 + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "deprecated": true + } + }, + "/vpcs/{vpc-id}": { + "get": { + "summary": "Get a VPC", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpc": { + "$ref": "#/components/schemas/vpc" + } + } + }, + "examples": { + "response": { + "value": { + "vpc": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "region": "ewr", + "description": "Example VPC Description", + "v4_subnet": "10.99.0.0", + "v4_subnet_mask": 24 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-vpc", + "security": [ + { + "API Key": [] + } + ], + "description": "Get information about a VPC.", + "tags": [ + "VPCs" + ] + }, + "delete": { + "summary": "Delete a VPC", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-vpc", + "description": "Delete a VPC.", + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "VPCs" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vpc-id", + "in": "path", + "required": true, + "description": "The [VPC ID](#operation/list-vpcs)." + } + ], + "put": { + "summary": "Update a VPC", + "operationId": "update-vpc", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update information for a VPC.", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\" : \"Example VPC\"\n }'" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "The VPC description." + } + }, + "required": [ + "description" + ] + }, + "examples": { + "request": { + "value": { + "description": "Example VPC" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "VPCs" + ] + } + }, + "/vpcs": { + "get": { + "summary": "List VPCs", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/vpcs\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpcs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/vpc" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "vpcs": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "region": "ewr", + "date_created": "2020-10-10T01:56:20+00:00", + "description": "Example VPC Description", + "v4_subnet": "10.99.0.0", + "v4_subnet_mask": 24 + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-vpcs", + "security": [ + { + "API Key": [] + } + ], + "description": "Get a list of all VPCs in your account.", + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ], + "tags": [ + "VPCs" + ] + }, + "post": { + "summary": "Create a VPC", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/vpcs\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"description\" : \"Example VPC\",\n \"v4_subnet\" : \"10.99.0.0\",\n \"v4_subnet_mask\" : 24\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpc": { + "$ref": "#/components/schemas/vpc" + } + } + }, + "examples": { + "response": { + "value": { + "network": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "region": "ewr", + "description": "Example VPC", + "v4_subnet": "10.99.0.0", + "v4_subnet_mask": 24 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-vpc", + "security": [ + { + "API Key": [] + } + ], + "description": "Create a new VPC in a `region`. VPCs should use [RFC1918 private address space](https://tools.ietf.org/html/rfc1918):\n\n 10.0.0.0 - 10.255.255.255 (10/8 prefix)\n 172.16.0.0 - 172.31.255.255 (172.16/12 prefix)\n 192.168.0.0 - 192.168.255.255 (192.168/16 prefix)\n", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "region": { + "type": "string", + "description": "Create the VPC in this [Region id](#operation/list-regions)." + }, + "description": { + "type": "string", + "description": "A description of the VPC." + }, + "v4_subnet": { + "type": "string", + "description": "The IPv4 VPC address. For example: 10.99.0.0
If v4_subnet_mask is specified then v4_subnet is a required field." + }, + "v4_subnet_mask": { + "type": "integer", + "description": "The number of bits for the netmask in CIDR notation. Example: 24
If v4_subnet is specified then v4_subnet_mask is a required field." + } + }, + "required": [ + "region" + ] + }, + "examples": { + "example": { + "value": { + "region": "ewr", + "description": "Example VPC", + "v4_subnet": "10.99.0.0", + "v4_subnet_mask": 24 + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "tags": [ + "VPCs" + ] + }, + "parameters": [] + }, + "/vpc2/{vpc-id}": { + "get": { + "summary": "Get a VPC 2.0 network", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/vpc2/{vpc-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpc": { + "$ref": "#/components/schemas/vpc2" + } + } + }, + "examples": { + "response": { + "value": { + "vpc": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "region": "ewr", + "description": "Example VPC Description", + "ip_block": "10.99.0.0", + "prefix_length": 24 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-vpc2", + "security": [ + { + "API Key": [] + } + ], + "description": "Get information about a VPC 2.0 network.", + "tags": [ + "VPC2" + ] + }, + "delete": { + "summary": "Delete a VPC 2.0 network", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/vpc2/{vpc-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-vpc2", + "description": "Delete a VPC 2.0 network.", + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "VPC2" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vpc-id", + "in": "path", + "required": true, + "description": "The [VPC ID](#operation/list-vpcs)." + } + ], + "put": { + "summary": "Update a VPC 2.0 network", + "operationId": "update-vpc2", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update information for a VPC 2.0 network.", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/vpc2/{vpc-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\" : \"Example VPC\"\n }'" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "The VPC description.
Must be no longer than 255 characters and may include only letters, numbers, spaces, underscores and hyphens." + } + }, + "required": [ + "description" + ] + }, + "examples": { + "request": { + "value": { + "description": "Example VPC" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "VPC2" + ] + } + }, + "/vpc2": { + "get": { + "summary": "List VPC 2.0 networks", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/vpc2\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpcs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/vpc2" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "vpcs": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "region": "ewr", + "date_created": "2020-10-10T01:56:20+00:00", + "description": "Example VPC Description", + "ip_block": "10.99.0.0", + "prefix_length": 24 + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-vpc2", + "security": [ + { + "API Key": [] + } + ], + "description": "Get a list of all VPC 2.0 networks in your account.", + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ], + "tags": [ + "VPC2" + ] + }, + "post": { + "summary": "Create a VPC 2.0 network", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/vpc2\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"description\" : \"Example VPC\",\n \"ip_block\" : \"10.99.0.0\",\n \"prefix_length\" : 24\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpc": { + "$ref": "#/components/schemas/vpc2" + } + } + }, + "examples": { + "response": { + "value": { + "network": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "region": "ewr", + "description": "Example VPC", + "ip_block": "10.99.0.0", + "prefix_length": 24 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-vpc2", + "security": [ + { + "API Key": [] + } + ], + "description": "Create a new VPC 2.0 network in a `region`. VPCs should use [RFC1918 private address space](https://tools.ietf.org/html/rfc1918):\n\n 10.0.0.0 - 10.255.255.255 (10/8 prefix)\n 172.16.0.0 - 172.31.255.255 (172.16/12 prefix)\n 192.168.0.0 - 192.168.255.255 (192.168/16 prefix)\n", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "region": { + "type": "string", + "description": "Create the VPC in this [Region id](#operation/list-regions)." + }, + "description": { + "type": "string", + "description": "A description of the VPC.
Must be no longer than 255 characters and may include only letters, numbers, spaces, underscores and hyphens." + }, + "ip_type": { + "type": "enum", + "description": "Accepted values:\n* `v4`" + }, + "ip_block": { + "type": "string", + "description": "The VPC subnet IP address. For example: 10.99.0.0
If a prefix_length is specified then ip_block is a required field." + }, + "prefix_length": { + "type": "integer", + "description": "The number of bits for the netmask in CIDR notation. Example: 24
If an ip_block is specified then prefix_length is a required field." + } + }, + "required": [ + "region" + ] + }, + "examples": { + "example": { + "value": { + "region": "ewr", + "description": "Example VPC", + "ip_block": "10.99.0.0", + "prefix_length": 24 + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "tags": [ + "VPC2" + ] + }, + "parameters": [] + }, + "/vpc2/{vpc-id}/nodes": { + "get": { + "summary": "Get a list of nodes attached to a VPC 2.0 network", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/vpc2/{vpc-id}/nodes\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpc": { + "$ref": "#/components/schemas/vpc2" + } + } + }, + "examples": { + "response": { + "value": { + "nodes": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "ip_address": "10.1.96.3", + "mac_address": "98964710968448", + "description": "Example-Description", + "type": "vps", + "node_status": "active" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-vpc2-nodes", + "security": [ + { + "API Key": [] + } + ], + "description": "Get a list of nodes attached to a VPC 2.0 network.", + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ], + "tags": [ + "VPC2" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vpc-id", + "in": "path", + "required": true, + "description": "The [VPC ID](#operation/list-vpcs)." + } + ] + }, + "/vpc2/{vpc-id}/nodes/attach": { + "post": { + "summary": "Attach nodes to a VPC 2.0 network", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/vpc2/{vpc-id}/nodes/attach\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "202": { + "description": "accepted" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "attach-vpc2-nodes", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nodes": { + "type": "array", + "description": "An array of ID strings for [instances](#operation/list-instances) and [Bare Metal servers](#operation/list-baremetals) to attach as nodes to the VPC 2.0 network. A limit of 1000 nodes can be processed in a request" + } + }, + "required": [ + "nodes" + ] + }, + "examples": { + "example": { + "value": { + "nodes": [ + "a4021db4-c1d0-43ba-8b5c-7a4a35444167", + "12a43ca5-0025-40ef-9edb-3a475809a8c0" + ] + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Attach nodes to a VPC 2.0 network.", + "tags": [ + "VPC2" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vpc-id", + "in": "path", + "required": true, + "description": "The [VPC ID](#operation/list-vpcs)." + } + ] + }, + "/vpc2/{vpc-id}/nodes/detach": { + "post": { + "summary": "Remove nodes from a VPC 2.0 network", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/vpc2/{vpc-id}/nodes/detach\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "202": { + "description": "accepted" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "detach-vpc2-nodes", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nodes": { + "type": "array", + "description": "An array of ID strings for [nodes](#operation/list-vpc2-nodes) to detach from the VPC 2.0 network. A limit of 1000 nodes can be processed in a request" + } + }, + "required": [ + "nodes" + ] + }, + "examples": { + "example": { + "value": { + "nodes": [ + "a4021db4-c1d0-43ba-8b5c-7a4a35444167", + "12a43ca5-0025-40ef-9edb-3a475809a8c0" + ] + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Remove nodes from a VPC 2.0 network.", + "tags": [ + "VPC2" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vpc-id", + "in": "path", + "required": true, + "description": "The [VPC ID](#operation/list-vpcs)." + } + ] + }, + "/users/{user-id}": { + "get": { + "summary": "Get User", + "tags": [ + "users" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/users/{user-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/user" + }, + "examples": { + "user": { + "value": { + "user": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "name": "Example User", + "email": "user@example.com", + "api_enabled": true, + "acls": [ + "manage_users", + "subscriptions_view", + "subscriptions", + "provisioning", + "billing", + "support", + "abuse", + "dns", + "upgrade", + "objstore", + "loadbalancer" + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-user", + "description": "Get information about a User.", + "security": [ + { + "API Key": [] + } + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "user-id", + "in": "path", + "required": true, + "description": "The [User id](#operation/list-users)." + } + ], + "delete": { + "summary": "Delete User", + "operationId": "delete-user", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/users/{user-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete a User.", + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "users" + ] + }, + "patch": { + "summary": "Update User", + "operationId": "update-user", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/users/{user-id}\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"email\" : \"user@example.com\",\n \"name\" : \"Example User\",\n \"password\" : \"example-password\",\n \"api_enabled\" : true,\n \"acls\" : [\n \"manage_users\",\n \"subscriptions_view\",\n \"subscriptions\",\n \"provisioning\",\n \"billing\",\n \"support\",\n \"abuse\",\n \"dns\",\n \"upgrade\",\n \"objstore\",\n \"loadbalancer\"\n ]\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "The User's email address." + }, + "name": { + "type": "string", + "description": "The User's name." + }, + "password": { + "type": "string", + "description": "The User's password." + }, + "api_enabled": { + "type": "boolean", + "description": "API access is permitted for this User.\n\n* true (default)\n* false" + }, + "acls": { + "type": "array", + "description": "An array of permission granted. Valid values:\n\n* abuse\n* alerts\n* billing\n* dns\n* firewall\n* loadbalancer\n* manage\\_users\n* objstore\n* provisioning\n* subscriptions\n* subscriptions\\_view\n* support\n* upgrade", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "request": { + "value": { + "email": "user@example.com", + "name": "Example User", + "password": "example-password", + "api_enabled": true, + "acls": [ + "manage_users", + "subscriptions_view", + "subscriptions", + "provisioning", + "billing", + "support", + "abuse", + "dns", + "upgrade", + "objstore", + "loadbalancer" + ] + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Update information for a User. All attributes are optional. If not set, the attributes will retain their original values.", + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "users" + ] + } + }, + "/users": { + "get": { + "summary": "Get Users", + "tags": [ + "users" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/users\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "$ref": "#/components/schemas/user" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "users": { + "value": { + "users": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "name": "Example User", + "email": "user@example.com", + "api_enabled": true, + "acls": [ + "manage_users", + "subscriptions_view", + "subscriptions", + "provisioning", + "billing", + "support", + "abuse", + "dns", + "upgrade", + "objstore", + "loadbalancer" + ] + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-users", + "description": "Get a list of all Users in your account.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "number" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create User", + "operationId": "create-user", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/users\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"email\" : \"user@example.com\",\n \"name\" : \"Example User\",\n \"password\" : \"example-password\",\n \"api_enabled\" : true,\n \"acls\" : [\n \"manage_users\",\n \"subscriptions_view\",\n \"subscriptions\",\n \"provisioning\",\n \"billing\",\n \"support\",\n \"abuse\",\n \"dns\",\n \"upgrade\",\n \"objstore\",\n \"loadbalancer\"\n ]\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/user" + }, + "examples": { + "user": { + "value": { + "user": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "name": "Example User", + "email": "user@example.com", + "api_enabled": true, + "acls": [ + "manage_users", + "subscriptions_view", + "subscriptions", + "provisioning", + "billing", + "support", + "abuse", + "dns", + "upgrade", + "objstore", + "loadbalancer" + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "description": "Create a new User. The `email`, `name`, and `password` attributes are required.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "The User's email address." + }, + "name": { + "type": "string", + "description": "The User's name." + }, + "password": { + "type": "string", + "description": "The User's password." + }, + "api_enabled": { + "type": "boolean", + "description": "API access is permitted for this User.\n\n* true (default)\n* false" + }, + "acls": { + "type": "array", + "description": "An array of permissions granted.\n\n* abuse\n* alerts\n* billing\n* dns\n* firewall\n* loadbalancer\n* manage\\_users\n* objstore\n* provisioning\n* subscriptions\n* subscriptions\\_view\n* support\n* upgrade", + "items": { + "type": "string" + } + } + }, + "required": [ + "email", + "name", + "password" + ] + }, + "examples": { + "request example": { + "value": { + "name": "Example User", + "email": "user@example.com", + "password": "sh#sedHA_FTdz6w+", + "api_enabled": true, + "acls": [ + "manage_users", + "subscriptions_view", + "subscriptions", + "provisioning", + "billing", + "support", + "abuse", + "dns", + "upgrade", + "objstore", + "loadbalancer" + ] + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "users" + ] + } + }, + "/startup-scripts/{startup-id}": { + "get": { + "summary": "Get Startup Script", + "tags": [ + "startup" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/startup-scripts/{startup-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "headers": {}, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "startup_script": { + "$ref": "#/components/schemas/startup" + } + } + }, + "examples": { + "response": { + "value": { + "startup_script": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "date_modified": "2020-10-10T01:59:20+00:00", + "name": "Example Startup Script", + "type": "pxe", + "script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ==" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-startup-script", + "description": "Get information for a Startup Script.", + "security": [ + { + "API Key": [] + } + ] + }, + "delete": { + "summary": "Delete Startup Script", + "tags": [ + "startup" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/startup-scripts/{startup-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-startup-script", + "security": [ + { + "API Key": [] + } + ], + "description": "Delete a Startup Script." + }, + "patch": { + "summary": "Update Startup Script", + "tags": [ + "startup" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/startup-scripts/{startup-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"Example Startup Script\",\n \"script\" : \"QmFzZTY0IEV4YW1wbGUgRGF0YQ==\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "update-startup-script", + "description": "Update a Startup Script. The attributes `name` and `script` are optional. If not set, the attributes will retain their original values. The `script` attribute is base-64 encoded. New deployments will use the updated script, but this action does not update previously deployed instances.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the Startup Script." + }, + "script": { + "type": "string", + "description": "The base-64 encoded Startup Script." + }, + "type": { + "type": "string", + "description": "The Startup Script type.\n\nboot (default)\npxe" + } + } + }, + "examples": { + "request": { + "value": { + "name": "Example Startup Script", + "script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ==" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "startup-id", + "in": "path", + "required": true, + "description": "The [Startup Script id](#operation/list-startup-scripts)." + } + ] + }, + "/startup-scripts": { + "get": { + "summary": "List Startup Scripts", + "tags": [ + "startup" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/startup-scripts\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "startup_scripts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/startup" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "startup_scripts": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "date_modified": "2020-10-10T01:59:20+00:00", + "name": "Example Startup Script", + "type": "pxe" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "operationId": "list-startup-scripts", + "description": "Get a list of all Startup Scripts.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create Startup Script", + "tags": [ + "startup" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/startup-scripts\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"Example Startup Script\",\n \"type\" : \"pxe\",\n \"script\" : \"QmFzZTY0IEV4YW1wbGUgRGF0YQ==\"\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "startup_script": { + "$ref": "#/components/schemas/startup" + } + } + }, + "examples": { + "response": { + "value": { + "startup_script": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "date_modified": "2020-10-10T01:56:20+00:00", + "name": "Example Startup Script", + "type": "pxe", + "script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ==" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-startup-script", + "description": "Create a new Startup Script. The `name` and `script` attributes are required, and scripts are base-64 encoded.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the Startup Script." + }, + "type": { + "type": "string", + "description": "The Startup Script type.\n\n* boot (default)\n* pxe" + }, + "script": { + "type": "string", + "description": "The base-64 encoded Startup Script." + } + }, + "required": [ + "name", + "script" + ] + }, + "examples": { + "request": { + "value": { + "name": "Example Startup Script", + "type": "pxe", + "script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ==" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "parameters": [] + }, + "/ssh-keys/{ssh-key-id}": { + "get": { + "summary": "Get SSH Key", + "tags": [ + "ssh" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/ssh-keys/{ssh-key-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ssh_key": { + "$ref": "#/components/schemas/ssh" + } + } + }, + "examples": { + "response": { + "value": { + "ssh_key": { + "id": "3b8066a7-b438-455a-9688-44afc9a3597f", + "date_created": "2020-10-10T01:56:20+00:00", + "name": "Example SSH Key", + "ssh_key": "ssh-rsa AA... user@example.com" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-ssh-key", + "description": "Get information about an SSH Key.", + "security": [ + { + "API Key": [] + } + ] + }, + "patch": { + "summary": "Update SSH Key", + "tags": [ + "ssh" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/ssh-keys/{ssh-key-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"Example SSH Key\",\n \"ssh_key\" : \"ssh-rsa AA... user@example.com\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "update-ssh-key", + "description": "Update an SSH Key. The attributes `name` and `ssh_key` are optional. If not set, the attributes will retain their original values. New deployments will use the updated key, but this action does not update previously deployed instances.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The user-supplied name for this SSH Key." + }, + "ssh_key": { + "type": "string", + "description": "The SSH Key." + } + } + }, + "examples": { + "request": { + "value": { + "name": "Example SSH Key", + "ssh_key": "ssh-rsa AA... user@example.com" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "delete": { + "summary": "Delete SSH Key", + "tags": [ + "ssh" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/ssh-keys/{ssh-key-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-ssh-key", + "description": "Delete an SSH Key.", + "security": [ + { + "API Key": [] + } + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "ssh-key-id", + "in": "path", + "required": true, + "description": "The [SSH Key id](#operation/list-ssh-keys)." + } + ] + }, + "/ssh-keys": { + "get": { + "summary": "List SSH Keys", + "tags": [ + "ssh" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/ssh-keys\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ssh_keys": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ssh" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "ssh_keys": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "name": "Example SSH Key", + "ssh_key": "ssh-rsa AA... user@example.com" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "operationId": "list-ssh-keys", + "description": "List all SSH Keys in your account.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500.\n" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create SSH key", + "tags": [ + "ssh" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/ssh-keys\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"Example SSH Key\",\n \"ssh_key\" : \"ssh-rsa AA... user@example.com\"\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ssh_key": { + "$ref": "#/components/schemas/ssh" + } + } + }, + "examples": { + "response": { + "value": { + "ssh_key": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "name": "Example SSH Key", + "ssh_key": "ssh-rsa AA... user@example.com" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + } + }, + "operationId": "create-ssh-key", + "description": "Create a new SSH Key for use with future instances. This does not update any running instances.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The user-supplied name for this SSH Key." + }, + "ssh_key": { + "type": "string", + "description": "The SSH Key." + } + }, + "required": [ + "name", + "ssh_key" + ] + }, + "examples": { + "request": { + "value": { + "name": "Example SSH Key", + "ssh_key": "ssh-rsa AA... user@example.com" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ] + } + }, + "/snapshots/{snapshot-id}": { + "delete": { + "summary": "Delete Snapshot", + "tags": [ + "snapshot" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/snapshots/{snapshot-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-snapshot", + "description": "Delete a Snapshot.", + "security": [ + { + "API Key": [] + } + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "snapshot-id", + "in": "path", + "required": true, + "description": "The [Snapshot id](#operation/list-snapshots)." + } + ], + "get": { + "summary": "Get Snapshot", + "tags": [ + "snapshot" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/snapshots/{snapshot-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "snapshot": { + "$ref": "#/components/schemas/snapshot" + } + } + }, + "examples": { + "response": { + "value": { + "snapshot": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "description": "Example Snapshot", + "size": 42949672960, + "compressed_size": 949678560, + "status": "complete", + "os_id": 215, + "app_id": 0 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-snapshot", + "description": "Get information about a Snapshot.", + "security": [ + { + "API Key": [] + } + ] + }, + "put": { + "summary": "Update Snapshot", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/snapshots/{snapshot-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\": \"Example Snapshot\"\n }'" + } + ], + "operationId": "put-snapshots-snapshot-id", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update the description for a Snapshot.", + "tags": [ + "snapshot" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "The user-supplied description for the Snapshot." + } + }, + "required": [ + "description" + ] + }, + "examples": { + "request": { + "value": { + "description": "Example Snapshot" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ] + } + }, + "/snapshots": { + "get": { + "summary": "List Snapshots", + "tags": [ + "snapshot" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/snapshots\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "snapshots": { + "type": "array", + "items": { + "$ref": "#/components/schemas/snapshot" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "snapshots": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "description": "Example Snapshot", + "size": 42949672960, + "compressed_size": 949678560, + "status": "complete", + "os_id": 215, + "app_id": 0 + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "operationId": "list-snapshots", + "description": "Get information about all Snapshots in your account.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "description", + "description": "Filter the list of Snapshots by `description`" + }, + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create Snapshot", + "tags": [ + "snapshot" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/snapshots\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"instance_id\" : \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"description\" : \"Example Snapshot\"\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "snapshot": { + "$ref": "#/components/schemas/snapshot" + } + } + }, + "examples": { + "response": { + "value": { + "snapshot": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "description": "Example Snapshot", + "size": 0, + "compressed_size": 0, + "status": "pending", + "os_id": 215, + "app_id": 0 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + } + }, + "operationId": "create-snapshot", + "description": "Create a new Snapshot for `instance_id`.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "instance_id": { + "type": "string", + "description": "Create a Snapshot for this [Instance id](#operation/list-instances)." + }, + "description": { + "type": "string", + "description": "The user-supplied description of the Snapshot." + } + }, + "required": [ + "instance_id" + ] + }, + "examples": { + "request": { + "value": { + "instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "description": "Example Snapshot" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/snapshots/create-from-url": { + "post": { + "summary": "Create Snapshot from URL", + "tags": [ + "snapshot" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/snapshots/create-from-url\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"url\" : \"https://example.com/disk_image.raw\",\n \"description\" : \"Example Snapshot\",\n \"uefi\": \"no\"\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "snapshot": { + "$ref": "#/components/schemas/snapshot" + } + } + }, + "examples": { + "snapshot": { + "value": { + "snapshot": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "description": "Example Snapshot", + "size": 0, + "compressed_size": 0, + "status": "pending", + "os_id": 215, + "app_id": 0 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-snapshot-create-from-url", + "description": "Create a new Snapshot from a RAW image located at `url`.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "description": "The public URL containing a RAW image." + }, + "description": { + "type": "string", + "description": "The user-supplied description of the Snapshot." + }, + "uefi": { + "type": "string", + "description": "Whether or not the snapshot uses UEFI." + } + }, + "required": [ + "url" + ] + }, + "examples": { + "example": { + "value": { + "url": "http://example.com/disk_image.raw", + "description": "Example Snapshot" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ] + } + }, + "/subaccounts": { + "get": { + "summary": "List Sub-Accounts", + "tags": [ + "subaccount" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/subaccounts\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "subaccounts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/subaccount" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "subaccounts": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "email": "subaccount@vultr.com", + "subaccount_name": "Acme Widgets LLC", + "subaccount_id": 472924, + "activated": false, + "balance": 0, + "pending_charges": 0 + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "operationId": "list-subaccounts", + "description": "Get information about all sub-accounts for your account.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create Sub-Account", + "tags": [ + "subaccount" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/subaccounts\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"email\" : \"subaccount@vultr.com\",\n \"subaccount_name\" : \"Acme Widgets LLC\"\n \"subaccount_id\" : \"472924\"\n\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "subaccount": { + "$ref": "#/components/schemas/subaccount" + } + } + }, + "examples": { + "response": { + "value": { + "subaccount": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "email": "subaccount@vultr.com", + "subaccount_name": "Acme Widgets LLC", + "subaccount_id": 472924, + "activated": false, + "balance": 0, + "pending_charges": 0 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + } + }, + "operationId": "create-subaccount", + "description": "Create a new subaccount.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "Create a new sub-account with this email address." + }, + "subaccount_name": { + "type": "string", + "description": "Your name for this sub-account." + }, + "subaccount_id": { + "type": "string", + "description": "Your ID for this sub-account." + } + }, + "required": [ + "email" + ] + }, + "examples": { + "request": { + "value": { + "email": "subaccount@vultr.com", + "subaccount_name": "Acme Widgets LLC", + "subaccount_id": 472924 + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/reserved-ips/{reserved-ip}": { + "get": { + "summary": "Get Reserved IP", + "tags": [ + "reserved-ip" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "reserved_ip": { + "$ref": "#/components/schemas/reserved-ip" + } + } + }, + "examples": { + "example-1": { + "value": { + "reserved_ip": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "region": "ewr", + "ip_type": "v4", + "subnet": "192.0.2.123", + "subnet_size": 32, + "label": "Example Reserved IPv4", + "instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-reserved-ip", + "description": "Get information about a Reserved IP.", + "security": [ + { + "API Key": [] + } + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "reserved-ip", + "in": "path", + "required": true, + "description": "The [Reserved IP id](#operation/list-reserved-ips)." + } + ], + "delete": { + "summary": "Delete Reserved IP", + "operationId": "delete-reserved-ip", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + } + }, + "description": "Delete a Reserved IP.", + "tags": [ + "reserved-ip" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "security": [ + { + "API Key": [] + } + ] + }, + "patch": { + "summary": "Update Reserved IP", + "operationId": "patch-reserved-ips-reserved-ip", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "reserved_ip": { + "$ref": "#/components/schemas/reserved-ip" + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update information on a Reserved IP.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "examples": { + "request": { + "value": { + "label": "Example Label" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"Example Label\"\n }'" + } + ], + "tags": [ + "reserved-ip" + ] + } + }, + "/reserved-ips": { + "get": { + "summary": "List Reserved IPs", + "tags": [ + "reserved-ip" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/reserved-ips\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "reserved_ips": { + "type": "array", + "items": { + "$ref": "#/components/schemas/reserved-ip" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "reserved_ips": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "region": "ewr", + "ip_type": "v4", + "subnet": "192.0.2.123", + "subnet_size": 32, + "label": "Example Reserved IPv4", + "instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + }, + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "region": "ewr", + "ip_type": "v6", + "subnet": "2001:0db8:5:5157::", + "subnet_size": 64, + "label": "Example Reserved IPv6", + "instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + ], + "meta": { + "total": 2, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-reserved-ips", + "description": "List all Reserved IPs in your account.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create Reserved IP", + "tags": [ + "reserved-ip" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/reserved-ips\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"ip_type\" : \"v4\",\n \"label\" : \"Example Reserved IPv4\"\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "reserved_ip": { + "$ref": "#/components/schemas/reserved-ip" + } + } + }, + "examples": { + "response": { + "value": { + "reserved_ip": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "region": "ewr", + "ip_type": "v4", + "subnet": "192.0.2.123", + "subnet_size": 32, + "label": "Example Reserved IPv4", + "instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-reserved-ip", + "description": "Create a new Reserved IP. The `region` and `ip_type` attributes are required.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the Reserved IP will be created." + }, + "ip_type": { + "type": "string", + "description": "The type of IP address.\n\n* v4\n* v6" + }, + "label": { + "type": "string", + "description": "The user-supplied label." + } + }, + "required": [ + "region", + "ip_type" + ] + }, + "examples": { + "request": { + "value": { + "region": "ewr", + "ip_type": "v4", + "label": "Example Reserved IPv4" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "parameters": [] + }, + "/reserved-ips/{reserved-ip}/attach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "reserved-ip", + "in": "path", + "required": true, + "description": "The [Reserved IP id](#operation/list-reserved-ips)" + } + ], + "post": { + "summary": "Attach Reserved IP", + "tags": [ + "reserved-ip" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}/attach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"instance_id\" : \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "attach-reserved-ip", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "instance_id": { + "type": "string", + "description": "Attach the Reserved IP to a [Compute Instance id](#operation/list-instances) or a [Bare Metal Instance id](#operation/list-baremetals)." + } + }, + "required": [ + "instance_id" + ] + }, + "examples": { + "request": { + "value": { + "instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ], + "description": "Attach a Reserved IP to an compute instance or a baremetal instance - `instance_id`." + } + }, + "/reserved-ips/{reserved-ip}/detach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "reserved-ip", + "in": "path", + "required": true, + "description": "The [Reserved IP id](#operation/list-reserved-ips)" + } + ], + "post": { + "summary": "Detach Reserved IP", + "tags": [ + "reserved-ip" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}/detach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "detach-reserved-ip", + "description": "Detach a Reserved IP.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/reserved-ips/convert": { + "post": { + "summary": "Convert Instance IP to Reserved IP", + "tags": [ + "reserved-ip" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/reserved-ips/convert\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ip_address\": \"192.0.2.123\",\n \"label\": \"Example Reserved IPv4\"\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "reserved_ip": { + "$ref": "#/components/schemas/reserved-ip" + } + } + }, + "examples": { + "response": { + "value": { + "reserved_ip": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "region": "ewr", + "ip_type": "v4", + "subnet": "192.0.2.123", + "subnet_size": 64, + "label": "Example Reserved IPv4", + "instance_id": "3f26dfe9-6a18-4f3d-a543-0cbca7a3e496" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "convert-reserved-ip", + "description": "Convert the `ip_address` of an existing [instance](#operation/list-instances) into a Reserved IP.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "description": "The IP address to convert." + }, + "label": { + "type": "string", + "description": "A user-supplied label for this IP address." + } + }, + "required": [ + "ip_address" + ] + }, + "examples": { + "request": { + "value": { + "ip_address": "192.0.2.123", + "label": "Example Reserved IPv4" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "parameters": [] + }, + "/os": { + "get": { + "summary": "List OS", + "tags": [ + "os" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/os\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "os": { + "type": "array", + "items": { + "$ref": "#/components/schemas/os" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "os": [ + { + "id": 127, + "name": "CentOS 6 x64", + "arch": "x64", + "family": "centos" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + } + }, + "operationId": "list-os", + "description": "List the OS images available for installation at Vultr.", + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500.\n" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ], + "security": [] + } + }, + "/applications": { + "get": { + "summary": "List Applications", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/applications\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "", + "properties": { + "applications": { + "type": "array", + "description": "", + "items": { + "$ref": "#/components/schemas/application" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "applications": [ + { + "id": 1, + "name": "LEMP", + "short_name": "lemp", + "deploy_name": "LEMP on CentOS 6 x64", + "type": "one-click", + "vendor": "vultr", + "image_id": "" + }, + { + "id": 1028, + "name": "OpenLiteSpeed WordPress", + "short_name": "openlitespeedwordpress", + "deploy_name": "OpenLiteSpeed WordPress on Ubuntu 20.04 x64", + "type": "marketplace", + "vendor": "LiteSpeed_Technologies", + "image_id": "openlitespeed-wordpress" + } + ], + "meta": { + "total": 2, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + } + }, + "operationId": "list-applications", + "description": "Get a list of all available Applications.", + "tags": [ + "application" + ], + "parameters": [ + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "type", + "description": "Filter the results by type.\n\n| | Type | Description |\n| - | ------ | ------------- |\n| | all | All available application types |\n| | marketplace | Marketplace applications |\n| | one-click | Vultr One-Click applications |" + }, + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ], + "security": [] + } + }, + "/account": { + "get": { + "summary": "Get Account Info", + "tags": [ + "account" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/account\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "account": { + "$ref": "#/components/schemas/account" + } + } + }, + "examples": { + "response": { + "value": { + "account": { + "name": "Example Account", + "email": "admin@example.com", + "acls": [ + "manage_users", + "subscriptions_view", + "subscriptions", + "billing", + "support", + "provisioning", + "dns", + "abuse", + "upgrade", + "firewall", + "alerts", + "objstore", + "loadbalancer" + ], + "balance": -100.55, + "pending_charges": 60.25, + "last_payment_date": "2020-10-10T01:56:20+00:00", + "last_payment_amount": -1.25 + } + } + } + } + } + } + } + }, + "operationId": "get-account", + "security": [ + { + "API Key": [] + } + ], + "description": "Get your Vultr account, permission, and billing information." + } + }, + "/backups": { + "get": { + "summary": "List Backups", + "tags": [ + "backup" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/backups\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "backups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/backup" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "backups": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "description": "Example Automatic Backup", + "size": 10000000, + "status": "complete" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-backups", + "description": "Get information about Backups in your account.", + "parameters": [ + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "instance_id", + "description": "Filter the backup list by [Instance id](#operation/list-instances)." + }, + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ], + "security": [ + { + "API Key": [] + } + ] + } + }, + "/blocks": { + "get": { + "summary": "List Block storages", + "tags": [ + "block" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/blocks\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "blocks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/blockstorage" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "block storage list": { + "value": { + "blocks": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "cost": 5, + "status": "pending", + "size_gb": 50, + "region": "ewr", + "attached_to_instance": "742c9913-d088-4d67-bc61-5a10e922fbd1", + "label": "Example Block Storage", + "mount_id": "ewr-example112233" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error" + } + }, + "operationId": "list-blocks", + "description": "List all Block Storage in your account.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create Block Storage", + "operationId": "create-block", + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "block": { + "$ref": "#/components/schemas/blockstorage" + } + } + }, + "examples": { + "created block storage": { + "value": { + "block": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "cost": 5, + "status": "active", + "size_gb": 50, + "region": "ewr", + "attached_to_instance": "742c9913-d088-4d67-bc61-5a10e922fbd1", + "label": "Example Block Storage", + "mount_id": "ewr-example112233", + "block_type": "high_perf" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Create new Block Storage in a `region` with a size of `size_gb`. Size may range between 10 and 40000 depending on the `block_type`.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the Block Storage will be created." + }, + "size_gb": { + "type": "integer", + "description": "Size in GB may range between 10 and 40000, depending on the `block_type`." + }, + "label": { + "type": "string", + "description": "The user-supplied label." + }, + "block_type": { + "type": "string", + "description": "An optional parameter, that determines on the type of block storage volume that will be created.\nSoon to become a required parameter.\n\n* `high_perf` from 10GB to 10,000GB\n* `storage_opt` from 40GB to 40,000GB" + } + }, + "required": [ + "region", + "size_gb" + ] + }, + "examples": { + "request": { + "value": { + "region": "ewr", + "size_gb": 50, + "label": "Example Block Storage" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "tags": [ + "block" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/blocks\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"size_gb\" : 50,\n \"label\" : \"Example Block Storage\",\n \"block_type\": \"high_perf\"\n }'" + } + ] + }, + "parameters": [] + }, + "/blocks/{block-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "block-id", + "in": "path", + "required": true, + "description": "The [Block Storage id](#operation/list-blocks)." + } + ], + "get": { + "summary": "Get Block Storage", + "tags": [ + "block" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/blocks/{block-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "block": { + "$ref": "#/components/schemas/blockstorage" + } + } + }, + "examples": { + "single block storage": { + "value": { + "block": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "cost": 5, + "status": "active", + "size_gb": 50, + "region": "ewr", + "attached_to_instance": "742c9913-d088-4d67-bc61-5a10e922fbd1", + "label": "Example Block Storage", + "mount_id": "ewr-example112233", + "block_type": "high_perf" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "operationId": "get-block", + "description": "Get information for Block Storage.", + "security": [ + { + "API Key": [] + } + ] + }, + "delete": { + "summary": "Delete Block Storage", + "tags": [ + "block" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/blocks/{block-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-block", + "description": "Delete Block Storage.", + "security": [ + { + "API Key": [] + } + ] + }, + "patch": { + "summary": "Update Block Storage", + "tags": [ + "block" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/blocks/{block-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"Updated Block Storage Label\",\n \"size_gb\": 50\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "update-block", + "description": "Update information for Block Storage.\n", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "The user-supplied label." + }, + "size_gb": { + "type": "integer", + "description": "New size of the Block Storage in GB. Size may range between 10 and 40000 depending on the `block_type`." + } + } + }, + "examples": { + "patch request": { + "value": { + "label": "Updated Block Storage Label", + "size_gb": 50 + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ] + } + }, + "/blocks/{block-id}/attach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "block-id", + "in": "path", + "required": true, + "description": "The [Block Storage id](#operation/list-blocks)." + } + ], + "post": { + "summary": "Attach Block Storage", + "tags": [ + "block" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/blocks/{block-id}/attach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"instance_id\" : \"a632673e-2fd5-4ff1-b251-2e28e7b65504\",\n \"live\" : true\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "attach-block", + "description": "Attach Block Storage to Instance `instance_id`.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "instance_id": { + "description": "Attach the Block Storage to this [Instance id](#operation/list-instances).", + "type": "string" + }, + "live": { + "type": "boolean", + "description": "Attach Block Storage without restarting the Instance.\n\n| | Value | Description |\n| - | ----- | ----------- |\n| | true | Attach live, do not restart the instance. |\n| | false | Restart the instance and attach the Block Storage. |" + } + }, + "required": [ + "instance_id" + ] + }, + "examples": { + "post request": { + "value": { + "instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "live": true + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/blocks/{block-id}/detach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "block-id", + "in": "path", + "required": true, + "description": "The [Block Storage id](#operation/list-blocks)." + } + ], + "post": { + "summary": "Detach Block Storage", + "tags": [ + "block" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/blocks/{block-id}/detach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"live\" : true\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "detach-block", + "security": [ + { + "API Key": [] + } + ], + "description": "Detach Block Storage.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "live": { + "type": "boolean", + "description": "Detach Block Storage without restarting the Instance.\n\n| | Value | Description |\n| - | ----- | ----------- |\n| | true | Detach live, do not restart the instance. |\n| | false | Restart the instance and detach the Block Storage. |" + } + } + }, + "examples": { + "post request": { + "value": { + "live": true + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/firewalls": { + "get": { + "summary": "List Firewall Groups", + "tags": [ + "firewall" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/firewalls\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "firewall_groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/firewall-group" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "firewall_groups": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "description": "Example Firewall Group", + "date_created": "2020-10-10T01:56:20+00:00", + "date_modified": "2020-10-10T01:59:20+00:00", + "instance_count": 0, + "rule_count": 0, + "max_rule_count": 50 + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "operationId": "list-firewall-groups", + "description": "Get a list of all Firewall Groups.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create Firewall Group", + "tags": [ + "firewall" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/firewalls\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\" : \"Example Firewall Group\"\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "firewall_group": { + "$ref": "#/components/schemas/firewall-group" + } + } + }, + "examples": { + "response": { + "value": { + "firewall_group": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "description": "Example Firewall Group", + "date_created": "2020-10-10T01:56:20+00:00", + "date_modified": "2020-10-10T01:56:20+00:00", + "instance_count": 0, + "rule_count": 0, + "max_rule_count": 50 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-firewall-group", + "description": "Create a new Firewall Group.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "User-supplied description of this Firewall Group." + } + } + }, + "examples": { + "request": { + "value": { + "description": "Example Firewall Group" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "parameters": [] + }, + "/firewalls/{firewall-group-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "firewall-group-id", + "in": "path", + "required": true, + "description": "The [Firewall Group id](#operation/list-firewall-groups)." + } + ], + "get": { + "summary": "Get Firewall Group", + "tags": [ + "firewall" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "firewall_group": { + "$ref": "#/components/schemas/firewall-group" + } + } + }, + "examples": { + "response": { + "value": { + "firewall_group": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "description": "Example Firewall Group", + "date_created": "2020-10-10T01:56:20+00:00", + "date_modified": "2020-10-10T01:56:20+00:00", + "instance_count": 0, + "rule_count": 0, + "max_rule_count": 50 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-firewall-group", + "description": "Get information for a Firewall Group.", + "security": [ + { + "API Key": [] + } + ] + }, + "put": { + "summary": "Update Firewall Group", + "tags": [ + "firewall" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\" : \"Updated Firewall Group Name\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "update-firewall-group", + "description": "Update information for a Firewall Group.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "User-supplied description of this Firewall Group." + } + }, + "required": [ + "description" + ] + }, + "examples": { + "request": { + "value": { + "description": "Updated Firewall Group Name" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "delete": { + "summary": "Delete Firewall Group", + "tags": [ + "firewall" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-firewall-group", + "security": [ + { + "API Key": [] + } + ], + "description": "Delete a Firewall Group." + } + }, + "/firewalls/{firewall-group-id}/rules": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "firewall-group-id", + "in": "path", + "required": true, + "description": "The [Firewall Group id](#operation/list-firewall-groups)." + } + ], + "get": { + "summary": "List Firewall Rules", + "tags": [ + "firewall" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}/rules\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "firewall_rules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/firewall-rule" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "firewall_rules": [ + { + "id": 1, + "type": "v4", + "ip_type": "v4", + "action": "accept", + "protocol": "tcp", + "port": "80", + "subnet": "192.0.2.0", + "subnet_size": 24, + "source": "", + "notes": "Example Firewall Rule" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-firewall-group-rules", + "description": "Get the Firewall Rules for a Firewall Group.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create Firewall Rules", + "tags": [ + "firewall" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}/rules\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ip_type\" : \"v4\",\n \"protocol\" : \"tcp\",\n \"port\" : \"80\",\n \"subnet\" : \"192.0.2.0\",\n \"subnet_size\" : 24,\n \"source\" : \"\",\n \"notes\" : \"Example Firewall Rule\"\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "firewall_rule": { + "$ref": "#/components/schemas/firewall-rule" + } + } + }, + "examples": { + "response": { + "value": { + "firewall_rule": { + "id": 1, + "type": "v4", + "ip_type": "v4", + "action": "accept", + "protocol": "tcp", + "port": "80", + "subnet": "192.0.2.0", + "subnet_size": 24, + "source": "", + "notes": "Example Firewall Rule" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "post-firewalls-firewall-group-id-rules", + "description": "Create a Firewall Rule for a Firewall Group. The attributes `ip_type`, `protocol`, `subnet`, and `subnet_size` are required.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ip_type": { + "type": "string", + "description": "The type of IP rule.\n\n* v4\n* v6" + }, + "protocol": { + "type": "string", + "description": "The protocol for this rule.\n\n* ICMP\n* TCP\n* UDP\n* GRE\n* ESP\n* AH\n" + }, + "subnet": { + "type": "string", + "description": "IP address representing a subnet. The IP address format must match with the \"ip_type\" parameter value." + }, + "subnet_size": { + "type": "integer", + "description": "The number of bits for the netmask in CIDR notation. Example: 32" + }, + "port": { + "type": "string", + "description": "TCP/UDP only. This field can be a specific port or a colon separated port range." + }, + "source": { + "type": "string", + "description": "If the source string is given a value of \"cloudflare\" subnet and subnet_size will both be ignored.\nPossible values:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | \"\" | Use the value from `subnet` and `subnet_size`. |\n| | cloudflare | Allow all of Cloudflare's IP space through the firewall |\n| | [Load Balancer id](#operation/list-load-balancers) | Provide a load balancer ID to use its IPs |\n" + }, + "notes": { + "type": "string", + "description": "User-supplied notes for this rule." + } + }, + "required": [ + "ip_type", + "protocol", + "subnet", + "subnet_size" + ] + }, + "examples": { + "request": { + "value": { + "ip_type": "v4", + "protocol": "tcp", + "port": "80", + "subnet": "192.0.2.0", + "subnet_size": 24, + "source": "", + "notes": "Example Firewall Rule" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ] + } + }, + "/firewalls/{firewall-group-id}/rules/{firewall-rule-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "firewall-group-id", + "in": "path", + "required": true, + "description": "The [Firewall Group id](#operation/list-firewall-groups)." + }, + { + "schema": { + "type": "string" + }, + "name": "firewall-rule-id", + "in": "path", + "required": true, + "description": "The [Firewall Rule id](#operation/list-firewall-group-rules)." + } + ], + "delete": { + "summary": "Delete Firewall Rule", + "tags": [ + "firewall" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}/rules/{firewall-rule-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-firewall-group-rule", + "description": "Delete a Firewall Rule.", + "security": [ + { + "API Key": [] + } + ] + }, + "get": { + "summary": "Get Firewall Rule", + "operationId": "get-firewall-group-rule", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "firewall_rule": { + "$ref": "#/components/schemas/firewall-rule" + } + } + }, + "examples": { + "example": { + "value": { + "firewall_rule": { + "id": 1, + "type": "v4", + "ip_type": "v4", + "action": "accept", + "protocol": "tcp", + "port": "80", + "subnet": "192.0.2.0", + "subnet_size": 24, + "source": "", + "notes": "Example Firewall Rule" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Get a Firewall Rule.", + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "firewall" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}/rules/{firewall-rule-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + } + }, + "/iso": { + "get": { + "summary": "List ISOs", + "tags": [ + "iso" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/iso\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "isos": { + "type": "array", + "items": { + "$ref": "#/components/schemas/iso" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "isos": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "filename": "my-iso.iso", + "size": 120586240, + "md5sum": "77ba289bdc966ec996278a5a740d96d8", + "sha512sum": "2b31b6fcab34d6ea9a6b293601c39b90cb044e5679fcc5", + "status": "complete" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-isos", + "description": "Get the ISOs in your account.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create ISO", + "tags": [ + "iso" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/iso\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"url\" : \"https://example.com/my-iso.iso\"\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "iso": { + "$ref": "#/components/schemas/iso" + } + } + }, + "examples": { + "response": { + "value": { + "iso": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "filename": "my-iso.iso", + "status": "pending" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-iso", + "description": "Create a new ISO in your account from `url`.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "description": "Public URL location of the ISO image to download. Example: https://example.com/my-iso.iso" + } + }, + "required": [ + "url" + ] + }, + "examples": { + "request": { + "value": { + "url": "http://example.com/my-iso.iso" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ] + } + }, + "/iso/{iso-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "iso-id", + "in": "path", + "required": true, + "description": "The [ISO id](#operation/list-isos)." + } + ], + "get": { + "summary": "Get ISO", + "tags": [ + "iso" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/iso/{iso-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "iso": { + "$ref": "#/components/schemas/iso" + } + } + }, + "examples": { + "response": { + "value": { + "iso": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "filename": "my-iso.iso", + "size": 120586240, + "md5sum": "77ba289bdc966ec996278a5a740d96d8", + "sha512sum": "2b31b6fcab34d6ea9a6b293601c39b90cb044e5679fcc5", + "status": "complete" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "iso-get", + "description": "Get information for an ISO.", + "security": [ + { + "API Key": [] + } + ] + }, + "delete": { + "summary": "Delete ISO", + "tags": [ + "iso" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/iso/{iso-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-iso", + "description": "Delete an ISO.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/iso-public": { + "get": { + "summary": "List Public ISOs", + "tags": [ + "iso" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/iso-public\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "public_isos": { + "type": "array", + "items": { + "$ref": "#/components/schemas/iso-public" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "public_isos": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b604", + "name": "CentOS 7", + "description": "7 x86_64 Minimal", + "md5sum": "7f4df50f42ee1b52b193e79855a3aa19" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + } + }, + "operationId": "list-public-isos", + "description": "List all Vultr Public ISOs.", + "security": [] + } + }, + "/object-storage": { + "get": { + "summary": "List Object Storages", + "tags": [ + "s3" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/object-storage\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object_storages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/object-storage" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "list of object-storages": { + "value": { + "object_storages": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "cluster_id": 2, + "region": "ewr", + "label": "Example Object Storage", + "status": "active", + "s3_hostname": "ewr1.vultrobjects.com", + "s3_access_key": "00example11223344", + "s3_secret_key": "00example1122334455667788990011" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + } + }, + "operationId": "list-object-storages", + "description": "Get a list of all Object Storage in your account.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create Object Storage", + "tags": [ + "s3" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/object-storage\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"Example Object Storage\",\n \"cluster_id\" : 2\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object_storage": { + "$ref": "#/components/schemas/object-storage" + } + } + }, + "examples": { + "response": { + "value": { + "object_storage": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "cluster_id": 2, + "region": "ewr", + "location": "New Jersey", + "label": "Example Object Storage", + "status": "pending", + "s3_hostname": "ewr1.vultrobjects.com", + "s3_access_key": "00example11223344", + "s3_secret_key": "00example1122334455667788990011" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "operationId": "create-object-storage", + "description": "Create new Object Storage. The `cluster_id` attribute is required.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "cluster_id": { + "type": "integer", + "description": "The [Cluster id](#operation/list-object-storage-clusters) where the Object Storage will be created." + }, + "label": { + "type": "string", + "description": "The user-supplied label for this Object Storage." + } + }, + "required": [ + "cluster_id" + ] + }, + "examples": { + "example request": { + "value": { + "label": "Example Object Storage", + "cluster_id": 2 + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "parameters": [] + }, + "/object-storage/{object-storage-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "object-storage-id", + "in": "path", + "required": true, + "description": "The [Object Storage id](#operation/list-object-storages)." + } + ], + "get": { + "summary": "Get Object Storage", + "tags": [ + "s3" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/object-storage/{object-storage-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object_storage": { + "$ref": "#/components/schemas/object-storage" + } + } + }, + "examples": { + "response": { + "value": { + "object_storage": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "cluster_id": 2, + "region": "ewr", + "label": "Example Object Storage", + "status": "active", + "s3_hostname": "ewr1.vultrobjects.com", + "s3_access_key": "00example11223344", + "s3_secret_key": "00example1122334455667788990011" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-object-storage", + "description": "Get information about an Object Storage.", + "security": [ + { + "API Key": [] + } + ] + }, + "delete": { + "summary": "Delete Object Storage", + "tags": [ + "s3" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/object-storage/{object-storage-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-object-storage", + "description": "Delete an Object Storage.", + "security": [ + { + "API Key": [] + } + ] + }, + "put": { + "summary": "Update Object Storage", + "operationId": "update-object-storage", + "responses": { + "204": { + "description": "No Content", + "headers": {} + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update the label for an Object Storage.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "The user-supplied label for the Object Storage." + } + }, + "required": [ + "label" + ] + }, + "examples": { + "request": { + "value": { + "label": "Updated Object Storage Label" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "s3" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/object-storage/{object-storage-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"Updated Object Storage Label\"\n }'" + } + ] + } + }, + "/object-storage/{object-storage-id}/regenerate-keys": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "object-storage-id", + "in": "path", + "required": true, + "description": "The [Object Storage id](#operation/list-object-storages)." + } + ], + "post": { + "summary": "Regenerate Object Storage Keys", + "tags": [ + "s3" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/object-storage/{object-storage-id}/regenerate-keys\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "s3_credentials": { + "type": "object", + "properties": { + "s3_hostname": { + "type": "string", + "description": "The [Cluster hostname](#operation/list-object-storage-clusters) for this Object Storage." + }, + "s3_access_key": { + "type": "string", + "description": "The new Object Storage access key." + }, + "s3_secret_key": { + "type": "string", + "description": "The new Object Storage secret key." + } + } + } + } + }, + "examples": { + "response": { + "value": { + "s3_credentials": { + "s3_hostname": "ewr1.vultrobjects.com", + "s3_access_key": "00example11223344", + "s3_secret_key": "00example1122334455667788990011" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "regenerate-object-storage-keys", + "description": "Regenerate the keys for an Object Storage.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/object-storage/clusters": { + "get": { + "summary": "Get All Clusters", + "tags": [ + "s3" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/object-storage/clusters\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "clusters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/clusters" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "clusters": [ + { + "id": 2, + "region": "ewr", + "hostname": "ewr1.vultrobjects.com", + "deploy": "yes" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + }, + "headers": {} + } + }, + "operationId": "list-object-storage-clusters", + "description": "Get a list of all Object Storage Clusters.", + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ], + "security": [] + } + }, + "/domains": { + "get": { + "summary": "List DNS Domains", + "tags": [ + "dns" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/domains\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domains": { + "type": "array", + "items": { + "$ref": "#/components/schemas/domain" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "list of domains": { + "value": { + "domains": [ + { + "domain": "example.com", + "date_created": "2020-10-10T01:56:20+00:00", + "dns_sec": "enabled" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-dns-domains", + "description": "List all DNS Domains in your account.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500.\n" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create DNS Domain", + "tags": [ + "dns" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/domains\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"domain\" : \"example.com\",\n \"ip\" : \"192.0.2.123\",\n \"dns_sec\" : \"enabled\"\n }'" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domain": { + "$ref": "#/components/schemas/domain" + } + } + }, + "examples": { + "response": { + "value": { + "domain": { + "domain": "example.com", + "date_created": "2020-10-10T01:56:20+00:00", + "dns_sec": "enabled" + } + } + } + } + } + } + } + }, + "operationId": "create-dns-domain", + "description": "Create a DNS Domain for `domain`. If no `ip` address is supplied a domain with no records will be created.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "description": "Your registered DNS Domain name." + }, + "ip": { + "type": "string", + "description": "The default IP address for your DNS Domain. If omitted an empty domain zone will be created." + }, + "dns_sec": { + "type": "string", + "description": "Enable or disable DNSSEC.\n\n* enabled\n* disabled (default)" + } + }, + "required": [ + "domain" + ] + }, + "examples": { + "request": { + "value": { + "domain": "example.com", + "ip": "192.0.2.123", + "dns_sec": "enabled" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "parameters": [] + }, + "/domains/{dns-domain}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "dns-domain", + "in": "path", + "required": true, + "description": "The [DNS Domain](#operation/list-dns-domains)." + } + ], + "get": { + "summary": "Get DNS Domain", + "tags": [ + "dns" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domain": { + "$ref": "#/components/schemas/domain" + } + } + }, + "examples": { + "response": { + "value": { + "domain": { + "domain": "example.com", + "date_created": "2020-10-10T01:56:20+00:00", + "dns_sec": "enabled" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-dns-domain", + "security": [ + { + "API Key": [] + } + ], + "description": "Get information for the DNS Domain." + }, + "delete": { + "summary": "Delete Domain", + "tags": [ + "dns" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-dns-domain", + "security": [ + { + "API Key": [] + } + ], + "description": "Delete the DNS Domain." + }, + "put": { + "summary": "Update a DNS Domain", + "operationId": "update-dns-domain", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"dns_sec\" : \"enabled\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "dns_sec": { + "type": "string", + "description": "Enable or disable DNSSEC.\n\n* enabled\n* disabled" + } + }, + "required": [ + "dns_sec" + ] + }, + "examples": { + "request": { + "value": { + "dns_sec": "enabled" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Update the DNS Domain. ", + "tags": [ + "dns" + ] + } + }, + "/domains/{dns-domain}/soa": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "dns-domain", + "in": "path", + "required": true, + "description": "The [DNS Domain](#operation/list-dns-domains)." + } + ], + "get": { + "summary": "Get SOA information", + "tags": [ + "dns" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/soa\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "dns_soa": { + "$ref": "#/components/schemas/dns-soa" + } + } + }, + "examples": { + "response": { + "value": { + "dns_soa": { + "nsprimary": "ns1.vultr.com", + "email": "admin@example.com" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-dns-domain-soa", + "description": "Get SOA information for the DNS Domain.", + "security": [ + { + "API Key": [] + } + ] + }, + "patch": { + "summary": "Update SOA information", + "tags": [ + "dns" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/soa\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"nsprimary\" : \"ns1.vultr.com\",\n \"email\" : \"admin@example.com\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "update-dns-domain-soa", + "description": "Update the SOA information for the DNS Domain. All attributes are optional. If not set, the attributes will retain their original values.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nsprimary": { + "type": "string", + "description": "Set the primary nameserver." + }, + "email": { + "type": "string", + "description": "Set the contact email address." + } + } + }, + "examples": { + "request": { + "value": { + "nsprimary": "ns1.vultr.com", + "email": "admin@example.com" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/domains/{dns-domain}/dnssec": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "dns-domain", + "in": "path", + "required": true, + "description": "The [DNS Domain](#operation/list-dns-domains)." + } + ], + "get": { + "summary": "Get DNSSec Info", + "tags": [ + "dns" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/dnssec\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "dns_sec": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "response": { + "value": { + "dns_sec": [ + "example.com IN DNSKEY 257 3 13 kRrxANp7YTGqVbaWtMy8hhsK0jcG4ajjICZKMb4fKv79Vx/RSn76vNjzIT7/Uo0BXil01Fk8RRQc4nWZctGJBA==", + "example.com IN DS 27933 13 1 2d9ac457e5c11a104e25d971d0a6254562bddde7", + "example.com IN DS 27933 13 2 8858e7b0dfb881280ce2ca1e0eafcd93d5b53687c21da284d4f8799ba82208a9" + ] + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-dns-domain-dnssec", + "security": [ + { + "API Key": [] + } + ], + "description": "Get the DNSSEC information for the DNS Domain." + } + }, + "/domains/{dns-domain}/records": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "dns-domain", + "in": "path", + "required": true, + "description": "The [DNS Domain](#operation/list-dns-domains)." + } + ], + "post": { + "summary": "Create Record", + "tags": [ + "dns" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/records\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"www\",\n \"type\" : \"A\",\n \"data\" : \"192.0.2.123\",\n \"ttl\" : 300,\n \"priority\" : 0\n }'" + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "record": { + "$ref": "#/components/schemas/dns-record" + } + } + }, + "examples": { + "response": { + "value": { + "record": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "type": "A", + "name": "www", + "data": "192.0.2.123", + "priority": 0, + "ttl": 300 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-dns-domain-record", + "description": "Create a DNS record.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The hostname for this DNS record." + }, + "type": { + "type": "string", + "description": "The DNS record type.\n\n* A\n* AAAA\n* CNAME\n* NS\n* MX\n* SRV\n* TXT\n* CAA\n* SSHFP" + }, + "data": { + "type": "string", + "description": "The DNS data for this record type." + }, + "ttl": { + "type": "integer", + "description": "Time to Live in seconds." + }, + "priority": { + "type": "integer", + "description": "DNS priority. Does not apply to all record types. (Only required for MX and SRV)" + } + }, + "required": [ + "name", + "type", + "data" + ] + }, + "examples": { + "request": { + "value": { + "name": "www", + "type": "A", + "data": "192.0.2.123", + "ttl": 300, + "priority": 0 + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ] + }, + "get": { + "summary": "List Records", + "tags": [ + "dns" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/records\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/dns-record" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "records": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "type": "A", + "name": "foo.example.com", + "data": "192.0.2.123", + "priority": 0, + "ttl": 300 + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-dns-domain-records", + "description": "Get the DNS records for the Domain.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + } + }, + "/domains/{dns-domain}/records/{record-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "dns-domain", + "in": "path", + "required": true, + "description": "The [DNS Domain](#operation/list-dns-domains)." + }, + { + "schema": { + "type": "string" + }, + "name": "record-id", + "in": "path", + "required": true, + "description": "The [DNS Record id](#operation/list-dns-domain-records)." + } + ], + "get": { + "summary": "Get Record", + "tags": [ + "dns" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/records/{record-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "record": { + "$ref": "#/components/schemas/dns-record" + } + } + }, + "examples": { + "response": { + "value": { + "record": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "type": "A", + "name": "www", + "data": "192.0.2.123", + "priority": 0, + "ttl": 300 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-dns-domain-record", + "description": "Get information for a DNS Record.", + "security": [ + { + "API Key": [] + } + ] + }, + "patch": { + "summary": "Update Record", + "tags": [ + "dns" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/records/{record-id}}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"CNAME\",\n \"data\" : \"foo.example.com\",\n \"ttl\" : 300,\n \"priority\" : 0\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + } + }, + "operationId": "update-dns-domain-record", + "description": "Update the information for a DNS record. All attributes are optional. If not set, the attributes will retain their original values.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The hostname for this DNS record." + }, + "data": { + "type": "string", + "description": "The DNS data for this record type." + }, + "ttl": { + "type": "integer", + "description": "Time to Live in seconds." + }, + "priority": { + "type": "integer", + "description": "DNS priority. Does not apply to all record types." + } + } + }, + "examples": { + "request": { + "value": { + "name": "CNAME", + "data": "foo.example.com", + "ttl": 300, + "priority": 0 + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ] + }, + "delete": { + "summary": "Delete Record", + "tags": [ + "dns" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/records/{record-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-dns-domain-record", + "description": "Delete the DNS record.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/regions": { + "get": { + "summary": "List Regions", + "tags": [ + "region" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/regions\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "regions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/region" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "region": { + "value": { + "regions": [ + { + "id": "ams", + "city": "Amsterdam", + "country": "NL", + "continent": "Europe", + "options": [ + "ddos_protection", + "block_storage_high_perf", + "block_storage_storage_opt", + "kubernetes", + "load_balancers" + ] + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + } + }, + "operationId": "list-regions", + "description": "List all Regions at Vultr.", + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ], + "security": [] + } + }, + "/regions/{region-id}/availability": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "region-id", + "in": "path", + "required": true, + "description": "The [Region id](#operation/list-regions)." + } + ], + "get": { + "summary": "List available plans in region", + "tags": [ + "region" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/regions/{region-id}/availability\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "available_plans": { + "type": "array", + "description": "An array of Plans available in this Region.", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "plans": { + "value": { + "available_plans": [ + "vc2-1c-1gb", + "vc2-1c-2gb", + "vc2-2c-4gb", + "vc2-4c-8gb", + "vc2-6c-16gb", + "vc2-8c-32gb", + "vc2-16c-64gb", + "vc2-24c-96gb", + "vdc-4vcpu-8gb", + "vdc-4vcpu-16gb", + "vdc-6vcpu-24gb", + "vdc-8vcpu-32gb", + "vhf-1c-1gb", + "vhf-1c-2gb", + "vhf-2c-4gb", + "vhf-3c-8gb", + "vhf-4c-16gb", + "vhf-6c-24gb", + "vhf-8c-32gb", + "vhf-12c-48gb" + ] + } + } + } + } + } + } + }, + "operationId": "list-available-plans-region", + "description": "Get a list of the available plans in Region `region-id`. Not all plans are available in all regions.", + "parameters": [ + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "type", + "description": "Filter the results by type.\n\n| **Type** | **Description** |\n|----------|-----------------|\n| all | All available types |\n| vc2 | Cloud Compute |\n| vdc | Dedicated Cloud |\n| vhf | High Frequency Compute |\n| vhp | High Performance |\n| voc | All Optimized Cloud types |\n| voc-g | General Purpose Optimized Cloud |\n| voc-c | CPU Optimized Cloud |\n| voc-m | Memory Optimized Cloud |\n| voc-s | Storage Optimized Cloud |\n| vbm | Bare Metal |\n| vcg | Cloud GPU |\n" + } + ], + "security": [] + } + }, + "/load-balancers": { + "get": { + "summary": "List Load Balancers", + "tags": [ + "load-balancer" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/load-balancers\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "operationId": "list-load-balancers", + "description": "List the Load Balancers in your account.", + "security": [ + { + "API Key": [] + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "load_balancers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/loadbalancer" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "load_balancers": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "region": "ewr", + "label": "Example Load Balancer", + "status": "active", + "ipv4": "192.0.2.123", + "ipv6": "2001:0db8:5:4973:ffff:ffff:ffff:ffff", + "generic_info": { + "balancing_algorithm": "roundrobin", + "ssl_redirect": false, + "sticky_sessions": { + "cookie_name": "example-cookie" + }, + "proxy_protocol": false, + "private_network": "9fed374c-0afc-42bf-926c-abcf840b5406" + }, + "health_check": { + "protocol": "http", + "port": 80, + "path": "/health", + "check_interval": 10, + "response_timeout": 5, + "unhealthy_threshold": 3, + "healthy_threshold": 3 + }, + "has_ssl": false, + "http2": false, + "nodes": 1, + "forwarding_rules": [ + { + "id": "73d85156c2c3129d", + "frontend_protocol": "http", + "frontend_port": 80, + "backend_protocol": "http", + "backend_port": 80 + } + ], + "firewall_rules": [ + { + "id": "abcd123b93016eafb", + "port": 80, + "source": "198.51.100.0/24", + "ip_type": "v4" + } + ], + "instances": [] + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500.\n" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create Load Balancer", + "tags": [ + "load-balancer" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/load-balancers\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"balancing_algorithm\" : \"roundrobin\",\n \"ssl_redirect\" : false,\n \"http2\": false,\n \"proxy_protocol\" : false,\n \"label\" : \"Example Load Balancer\",\n \"nodes\" : 1,\n \"health_check\" : {\n \"protocol\" : \"http\",\n \"port\" : 80,\n \"path\" : \"/health\",\n \"check_interval\" : 10,\n \"response_timeout\" : 5,\n \"unhealthy_threshold\" : 3,\n \"healthy_threshold\" : 3\n },\n \"forwarding_rules\": [\n {\n \"frontend_protocol\" : \"http\",\n \"frontend_port\" : 80,\n \"backend_protocol\" : \"http\",\n \"backend_port\" : 80\n }\n ],\n \"firewall_rules\": [\n {\n \"port\" : 80,\n \"source\" : \"0.0.0.0/0\",\n \"ip_type\" : \"v4\",\n }\n ]\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "load_balancer": { + "$ref": "#/components/schemas/loadbalancer" + } + } + }, + "examples": { + "response": { + "value": { + "load_balancer": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "region": "ewr", + "label": "Example Load Balancer", + "status": "pending", + "ipv4": "", + "ipv6": "", + "generic_info": { + "balancing_algorithm": "roundrobin", + "ssl_redirect": false, + "sticky_sessions": { + "cookie_name": "example-cookie" + }, + "proxy_protocol": false, + "private_network": "9fed374c-0afc-42bf-926c-abcf840b5406", + "vpc": "9fed374c-0afc-42bf-926c-abcf840b5406" + }, + "health_check": { + "protocol": "http", + "port": 80, + "path": "/health", + "check_interval": 10, + "response_timeout": 5, + "unhealthy_threshold": 3, + "healthy_threshold": 3 + }, + "has_ssl": false, + "http2": false, + "nodes": 1, + "forwarding_rules": [ + { + "id": "73d85156c2c3129d", + "frontend_protocol": "http", + "frontend_port": 80, + "backend_protocol": "http", + "backend_port": 80 + } + ], + "firewall_rules": [ + { + "id": "abcd123b93016eafb", + "port": 80, + "source": "24.187.16.196/16", + "ip_type": "v4" + } + ], + "instances": [] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-load-balancer", + "description": "Create a new Load Balancer in a particular `region`.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) to create this Load Balancer." + }, + "balancing_algorithm": { + "type": "string", + "description": "The balancing algorithm.\n\n* roundrobin (default)\n* leastconn" + }, + "ssl_redirect": { + "type": "boolean", + "description": "If `true`, this will redirect all HTTP traffic to HTTPS. You must have an HTTPS rule and SSL certificate installed on the load balancer to enable this option.\n\n* true\n* false" + }, + "http2": { + "type": "boolean", + "description": "If `true`, this will enable HTTP2 traffic. You must have an HTTPS forwarding rule combo (HTTPS -> HTTPS) to enable this option.\n\n* true\n* false" + }, + "nodes": { + "type": "integer", + "description": "The number of nodes to add to the load balancer (1-99), must be an odd number. This defaults to 1." + }, + "proxy_protocol": { + "description": "If `true`, you must configure backend nodes to accept Proxy protocol.\n\n* true\n* false (Default)", + "type": "boolean" + }, + "health_check": { + "type": "object", + "description": "The health check configuration. See [Load Balancer documentation](https://www.vultr.com/docs/vultr-load-balancers/#Load_Balancer_Configuration).", + "properties": { + "protocol": { + "type": "string", + "description": "The protocol to use for health checks.\n\n* HTTPS\n* HTTP\n* TCP" + }, + "port": { + "type": "integer", + "description": "The port to use for health checks." + }, + "path": { + "type": "string", + "description": "HTTP Path to check. Only applies if protocol is HTTP, or HTTPS." + }, + "check_interval": { + "type": "integer", + "description": "Interval between health checks." + }, + "response_timeout": { + "type": "integer", + "description": "Timeout before health check fails." + }, + "unhealthy_threshold": { + "type": "integer", + "description": "Number times a check must fail before becoming unhealthy." + }, + "healthy_threshold": { + "type": "integer", + "description": "Number of times a check must succeed before returning to healthy status." + } + } + }, + "forwarding_rules": { + "type": "array", + "description": "An array of forwarding rule objects.", + "items": { + "type": "object", + "properties": { + "frontend_protocol": { + "type": "string", + "description": "The protocol on the Load Balancer to forward to the backend.\n\n* HTTP\n* HTTPS\n* TCP" + }, + "frontend_port": { + "type": "integer", + "description": "The port number on the Load Balancer to forward to the backend." + }, + "backend_protocol": { + "type": "string", + "description": "The protocol destination on the backend server.\n\n* HTTP\n* HTTPS\n* TCP" + }, + "backend_port": { + "type": "integer", + "description": "The port number destination on the backend server." + } + } + } + }, + "sticky_session": { + "type": "object", + "description": "Enables sticky sessions for your load balancer when a cookie_name is provided.", + "properties": { + "cookie_name": { + "type": "string", + "description": "The cookie name to make sticky. See [Load Balancer documentation](https://www.vultr.com/docs/vultr-load-balancers/#Load_Balancer_Configuration)." + } + } + }, + "ssl": { + "type": "object", + "description": "An SSL certificate to install on the Load Balancer.", + "properties": { + "private_key": { + "type": "string", + "description": "The private key." + }, + "certificate": { + "type": "string", + "description": "The SSL certificate." + }, + "chain": { + "type": "string", + "description": "The certificate chain." + }, + "private_key_b64": { + "type": "string", + "description": "The private key base64 encoded. (Base64 encoded values should not be used alongside with non-Base64 encoded values)" + }, + "certificate_b64": { + "type": "string", + "description": "The SSL certificate base64 encoded. (Base64 encoded values should not be used alongside with non-Base64 encoded values)" + }, + "chain_b64": { + "type": "string", + "description": "The certificate chain base64 encoded. (Base64 encoded values should not be used alongside with non-Base64 encoded values)" + } + } + }, + "label": { + "type": "string", + "description": "Label for your Load Balancer." + }, + "instances": { + "type": "array", + "description": "An array of instances IDs that you want attached to the load balancer.", + "items": { + "type": "string" + } + }, + "firewall_rules": { + "type": "array", + "description": "An array of firewall rule objects.", + "items": { + "type": "object", + "properties": { + "port": { + "type": "integer", + "description": "Port for this rule." + }, + "source": { + "type": "string", + "description": "If the source string is given a value of \"cloudflare\" then cloudflare IPs will be supplied. Otherwise enter a IP address with subnet size that you wish to permit through the firewall.\n\nPossible values:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | \"192.168.1.1/16\" | Ip address with a subnet size. |\n| | cloudflare | Allow all of Cloudflare's IP space through the firewall |" + }, + "ip_type": { + "type": "string", + "description": "The type of IP rule.\n\n* v4\n* v6" + } + } + } + }, + "private_network": { + "type": "string", + "description": "Use `vpc` instead. ID of the private network you wish to use. If private_network is omitted it will default to the public network.", + "deprecated": true + }, + "vpc": { + "type": "string", + "description": "ID of the VPC you wish to use. If a VPC ID is omitted it will default to the public network." + } + }, + "required": [ + "region" + ] + }, + "examples": { + "request": { + "value": { + "region": "ewr", + "balancing_algorithm": "roundrobin", + "ssl_redirect": false, + "http2": false, + "nodes": 1, + "proxy_protocol": false, + "label": "Example Load Balancer", + "health_check": { + "protocol": "http", + "port": 80, + "path": "/health", + "check_interval": 10, + "response_timeout": 5, + "unhealthy_threshold": 3, + "healthy_threshold": 3 + }, + "forwarding_rules": [ + { + "frontend_protocol": "http", + "frontend_port": 80, + "backend_protocol": "http", + "backend_port": 80 + } + ], + "firewall_rules": [ + { + "port": 80, + "source": "24.187.16.196/16", + "ip_type": "v4" + } + ], + "vpc": "9fed374c-0afc-42bf-926c-abcf840b5406" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "parameters": [] + }, + "/load-balancers/{load-balancer-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "load-balancer-id", + "in": "path", + "required": true, + "description": "The [Load Balancer id](#operation/list-load-balancers)." + } + ], + "get": { + "summary": "Get Load Balancer", + "tags": [ + "load-balancer" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "load_balancer": { + "$ref": "#/components/schemas/loadbalancer" + } + } + }, + "examples": { + "response": { + "value": { + "load_balancer": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "region": "ewr", + "label": "Example Load Balancer", + "status": "active", + "ipv4": "192.0.2.123", + "ipv6": "2001:0db8:5:4973:ffff:ffff:ffff:ffff", + "generic_info": { + "balancing_algorithm": "roundrobin", + "ssl_redirect": false, + "sticky_sessions": { + "cookie_name": "example-cookie" + }, + "proxy_protocol": false, + "private_network": "9fed374c-0afc-42bf-926c-abcf840b5406", + "vpc": "9fed374c-0afc-42bf-926c-abcf840b5406" + }, + "health_check": { + "protocol": "http", + "port": 80, + "path": "/health", + "check_interval": 10, + "response_timeout": 5, + "unhealthy_threshold": 3, + "healthy_threshold": 3 + }, + "has_ssl": false, + "http2": false, + "nodes": 1, + "forwarding_rules": [ + { + "id": "73d85156c2c3129d", + "frontend_protocol": "http", + "frontend_port": 80, + "backend_protocol": "http", + "backend_port": 80 + } + ], + "firewall_rules": [ + { + "id": "abcd123b93016eafb", + "port": 80, + "source": "198.51.100.0/24", + "ip_type": "v4" + } + ], + "instances": [] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-load-balancer", + "description": "Get information for a Load Balancer.", + "security": [ + { + "API Key": [] + } + ] + }, + "patch": { + "summary": "Update Load Balancer", + "tags": [ + "load-balancer" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ssl\": {\n \"private_key\": \"-----BEGIN RSA ... \",\n \"certificate\": \"-----BEGIN RSA ... \",\n \"chain\": \"-----BEGIN RSA ... \"\n },\n \"sticky_session\": {\n \"cookie_name\": \"example-cookie\"\n },\n \"forwarding_rules\": [\n {\n \"frontend_protocol\": \"http\",\n \"frontend_port\": 80,\n \"backend_protocol\": \"http\",\n \"backend_port\": 80\n }\n ],\n \"health_check\": {\n \"protocol\": \"http\",\n \"port\": 80,\n \"path\": \"/health\",\n \"check_interval\": \"10\",\n \"response_timeout\": \"5\",\n \"unhealthy_threshold\": \"3\",\n \"healthy_threshold\": \"3\"\n },\n \"proxy_protocol\": true,\n \"ssl_redirect\": true,\n \"http2\": true,\n \"nodes\": 1,\n \"balancing_algorithm\": \"roundrobin\",\n \"instances\": [\n \"73d85156c2c3129d\"\n ]\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "update-load-balancer", + "security": [ + { + "API Key": [] + } + ], + "description": "Update information for a Load Balancer. All attributes are optional. If not set, the attributes will retain their original values.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ssl": { + "type": "object", + "description": "An SSL certificate to install on the Load Balancer.", + "properties": { + "private_key": { + "type": "string", + "description": "The private key." + }, + "certificate": { + "type": "string", + "description": "The SSL certificate." + }, + "chain": { + "type": "string", + "description": "The certificate chain." + }, + "private_key_b64": { + "type": "string", + "description": "The private key base64 encoded. (Base64 encoded values should not be used alongside with non-Base64 encoded values)" + }, + "certificate_b64": { + "type": "string", + "description": "The SSL certificate base64 encoded. (Base64 encoded values should not be used alongside with non-Base64 encoded values)" + }, + "chain_b64": { + "type": "string", + "description": "The certificate chain base64 encoded. (Base64 encoded values should not be used alongside with non-Base64 encoded values)" + } + } + }, + "sticky_session": { + "type": "object", + "description": "Enables sticky sessions for your load balancer when a cookie_name is provided.", + "properties": { + "cookie_name": { + "type": "string", + "description": "The cookie name to make sticky. See [Load Balancer documentation](https://www.vultr.com/docs/vultr-load-balancers/#Load_Balancer_Configuration)." + } + } + }, + "forwarding_rules": { + "type": "array", + "description": "An array of forwarding rule objects.", + "items": { + "type": "object", + "properties": { + "frontend_protocol": { + "type": "string", + "description": "The protocol on the Load Balancer to forward to the backend.\n\n* HTTP\n* HTTPS\n* TCP" + }, + "frontend_port": { + "type": "integer", + "description": "The port number on the Load Balancer to forward to the backend." + }, + "backend_protocol": { + "type": "string", + "description": "The protocol destination on the backend server.\n\n* HTTP\n* HTTPS\n* TCP" + }, + "backend_port": { + "type": "integer", + "description": "The port number destination on the backend server." + } + } + } + }, + "health_check": { + "type": "object", + "description": "The health check configuration. [See Load Balancer documentation](https://www.vultr.com/docs/vultr-load-balancers/#Load_Balancer_Configuration).", + "properties": { + "protocol": { + "type": "string", + "description": "The protocol to use for health checks.\n\n* HTTPS\n* HTTP\n* TCP" + }, + "port": { + "type": "integer", + "description": "The port to use for health checks." + }, + "path": { + "type": "string", + "description": "HTTP Path to check. Only applies if protocol is HTTP, or HTTPS." + }, + "check_interval": { + "type": "string", + "description": "Interval between health checks." + }, + "response_timeout": { + "type": "string", + "description": "Timeout before health check fails." + }, + "unhealthy_threshold": { + "type": "string", + "description": "Number times a check must fail before becoming unhealthy." + }, + "healthy_threshold": { + "type": "string", + "description": "Number of times a check must succeed before returning to healthy status." + } + } + }, + "proxy_protocol": { + "type": "boolean", + "description": "If `true`, you must configure backend nodes to accept Proxy protocol.\n\n* true\n* false (Default)" + }, + "ssl_redirect": { + "type": "boolean", + "description": "If `true`, this will redirect all HTTP traffic to HTTPS. You must have an HTTPS rule and SSL certificate installed on the load balancer to enable this option.\n\n* true\n* false" + }, + "http2": { + "type": "boolean", + "description": "If `true`, this will enable HTTP2 traffic. You must have an HTTPS forwarding rule combo (HTTPS -> HTTPS) to enable this option.\n\n* true\n* false" + }, + "nodes": { + "type": "integer", + "description": "The number of nodes to add to the load balancer (1-99), must be an odd number. This defaults to 1." + }, + "balancing_algorithm": { + "type": "string", + "description": "The balancing algorithm.\n\n* roundrobin (default)\n* leastconn" + }, + "instances": { + "type": "array", + "description": "Send the complete array of Instances IDs that should be attached to this Load Balancer. Instances will be attached or detached to match your array. For example, if Instances **X**, **Y**, and **Z** are currently attached, and you send [A,B,Z], then Instance **A** and **B** will be attached, **X** and **Y** will be detached, and **Z** will remain attached.", + "items": { + "type": "string" + } + }, + "label": { + "type": "string", + "description": "The label for your Load Balancer" + }, + "private_network": { + "type": "string", + "description": "Use `vpc` instead. ID of the private network you wish to use. If private_network is omitted it will default to the public network.", + "deprecated": true + }, + "vpc": { + "type": "string", + "description": "ID of the VPC you wish to use. If a VPC ID is omitted it will default to the public network." + }, + "firewall_rules": { + "type": "array", + "description": "An array of firewall rule objects.", + "items": { + "type": "object", + "properties": { + "port": { + "type": "integer", + "description": "Port for this rule." + }, + "source": { + "type": "string", + "description": "If the source string is given a value of \"cloudflare\" then cloudflare IPs will be supplied. Otherwise enter a IP address with subnet size that you wish to permit through the firewall.\n\nPossible values:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | \"192.168.1.1/16\" | Ip address with a subnet size. |\n| | cloudflare | Allow all of Cloudflare's IP space through the firewall |" + }, + "ip_type": { + "type": "string", + "description": "The type of IP rule.\n\n* v4\n* v6" + } + } + } + } + } + }, + "examples": { + "request": { + "value": { + "ssl": { + "private_key": "-----BEGIN RSA ... ", + "certificate": "-----BEGIN RSA ... ", + "chain": "-----BEGIN RSA ... " + }, + "sticky_session": { + "cookie_name": "example-cookie" + }, + "forwarding_rules": [ + { + "frontend_protocol": "http", + "frontend_port": 80, + "backend_protocol": "http", + "backend_port": 80 + } + ], + "firewall_rules": [ + { + "port": 80, + "source": "192.168.1.1/16", + "ip_type": "v4" + } + ], + "health_check": { + "protocol": "http", + "port": 80, + "path": "/health", + "check_interval": "10", + "response_timeout": "5", + "unhealthy_threshold": "3", + "healthy_threshold": "3" + }, + "proxy_protocol": true, + "ssl_redirect": true, + "http2": true, + "nodes": 1, + "balancing_algorithm": "roundrobin", + "instances": [ + "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + ], + "vpc": "9fed374c-0afc-42bf-926c-abcf840b5406" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "delete": { + "summary": "Delete Load Balancer", + "tags": [ + "load-balancer" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-load-balancer", + "description": "Delete a Load Balancer.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/load-balancers/{load-balancer-id}/ssl": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "load-balancer-id", + "in": "path", + "required": true, + "description": "The [Load Balancer id](#operation/delete-load-balancer-ssl)." + } + ], + "delete": { + "summary": "Delete Load Balancer SSL", + "tags": [ + "load-balancer" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/ssl\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-load-balancer-ssl", + "description": "Delete a Load Balancer SSL.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/load-balancers/{load-balancer-id}/forwarding-rules": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "load-balancer-id", + "in": "path", + "required": true, + "description": "The [Load Balancer id](#operation/list-load-balancers)." + } + ], + "get": { + "summary": "List Forwarding Rules", + "tags": [ + "load-balancer" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/forwarding-rules\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "forwarding_rules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/forwarding-rule" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "forwarding_rules": [ + { + "id": "443f2e6c0b60", + "frontend_protocol": "http", + "frontend_port": 80, + "backend_protocol": "http", + "backend_port": 80 + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-load-balancer-forwarding-rules", + "description": "List the fowarding rules for a Load Balancer.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create Forwarding Rule", + "tags": [ + "load-balancer" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/forwarding-rules\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"frontend_protocol\" : \"http\",\n \"frontend_port\" : 8080,\n \"backend_protocol\" : \"http\",\n \"backend_port\" : 80\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-load-balancer-forwarding-rules", + "description": "Create a new forwarding rule for a Load Balancer.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "frontend_protocol": { + "type": "string", + "description": "The protocol on the Load Balancer to forward to the backend.\n\n* HTTP\n* HTTPS\n* TCP" + }, + "frontend_port": { + "type": "integer", + "description": "The port number on the Load Balancer to forward to the backend." + }, + "backend_protocol": { + "type": "string", + "description": "The protocol destination on the backend server.\n\n* HTTP\n* HTTPS\n* TCP" + }, + "backend_port": { + "type": "integer", + "description": "The port number destination on the backend server." + } + }, + "required": [ + "frontend_protocol", + "frontend_port", + "backend_protocol", + "backend_port" + ] + }, + "examples": { + "response": { + "value": { + "frontend_protocol": "http", + "frontend_port": 8080, + "backend_protocol": "http", + "backend_port": 80 + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/load-balancers/{load-balancer-id}/forwarding-rules/{forwarding-rule-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "load-balancer-id", + "in": "path", + "required": true, + "description": "The [Load Balancer id](#operation/list-load-balancers)." + }, + { + "schema": { + "type": "string" + }, + "name": "forwarding-rule-id", + "in": "path", + "required": true, + "description": "The [Forwarding Rule id](#operation/list-load-balancer-forwarding-rules)." + } + ], + "get": { + "summary": "Get Forwarding Rule", + "tags": [ + "load-balancer" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/forwarding-rules/{forwarding-rule-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "forwarding_rule": { + "$ref": "#/components/schemas/forwarding-rule" + } + } + }, + "examples": { + "response": { + "value": { + "forwarding_rule": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "frontend_protocol": "http", + "frontend_port": 8080, + "backend_protocol": "http", + "backend_port": 80 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-load-balancer-forwarding-rule", + "description": "Get information for a Forwarding Rule on a Load Balancer.", + "security": [ + { + "API Key": [] + } + ] + }, + "delete": { + "summary": "Delete Forwarding Rule", + "tags": [ + "load-balancer" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/forwarding-rules/{forwarding-rule-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-load-balancer-forwarding-rule", + "description": "Delete a Forwarding Rule on a Load Balancer.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/plans": { + "get": { + "summary": "List Plans", + "tags": [ + "plans" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/plans\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "plans": { + "type": "array", + "items": { + "$ref": "#/components/schemas/plans" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "plans": [ + { + "id": "vhf-8c-32gb", + "vcpu_count": 8, + "ram": 32768, + "disk": 512, + "disk_count": 1, + "bandwidth": 6144, + "monthly_cost": 192, + "type": "vhf", + "locations": [ + "sea" + ] + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + } + }, + "operationId": "list-plans", + "description": "Get a list of all VPS plans at Vultr.\n\nThe response is an array of JSON `plan` objects, with unique `id` with sub-fields in the general format of:\n\n ---\n\nFor example: `vc2-24c-96gb-sc1`\n\nMore about the sub-fields:\n\n* ``: The Vultr type code. For example, `vc2`, `vhf`, `vdc`, etc.\n* ``: The number of cores, such as `4c` for \"4 cores\", `8c` for \"8 cores\", etc.\n* ``: Size in GB, such as `32gb`.\n* ``: Some plans include a modifier for internal identification purposes, such as CPU type or location surcharges.\n\n> Note: This information about plan id format is for general education. Vultr may change the sub-field format or values at any time. You should not attempt to parse the plan ID sub-fields in your code for any specific purpose.\n", + "parameters": [ + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "type", + "description": "Filter the results by type.\n\n| **Type** | **Description** |\n|----------|-----------------|\n| all | All available types |\n| vc2 | Cloud Compute |\n| vdc | Dedicated Cloud |\n| vhf | High Frequency Compute |\n| vhp | High Performance |\n| voc | All Optimized Cloud types |\n| voc-g | General Purpose Optimized Cloud |\n| voc-c | CPU Optimized Cloud |\n| voc-m | Memory Optimized Cloud |\n| voc-s | Storage Optimized Cloud |\n| vcg | Cloud GPU |" + }, + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "os", + "description": "Filter the results by operating system.\n\n| | Type | Description |\n| - | ------ | ------------- |\n| | windows | All available plans that support windows |" + } + ], + "security": [] + } + }, + "/plans-metal": { + "get": { + "summary": "List Bare Metal Plans", + "tags": [ + "plans" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/plans-metal\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "plans": { + "type": "array", + "items": { + "$ref": "#/components/schemas/plans-metal" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "bare metal": { + "value": { + "plans_metal": [ + { + "id": "vbm-4c-32gb", + "cpu_count": 4, + "cpu_threads": 8, + "cpu_model": "E3-1270v6", + "ram": 32768, + "disk": 240, + "disk_count": 2, + "bandwidth": 5120, + "monthly_cost": 300, + "type": "SSD", + "locations": [ + "ewr" + ] + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + } + }, + "operationId": "list-metal-plans", + "description": "Get a list of all Bare Metal plans at Vultr.\n\nThe response is an array of JSON `plan` objects, with unique `id` with sub-fields in the general format of:\n\n ---\n\nFor example: `vc2-24c-96gb-sc1`\n\nMore about the sub-fields:\n\n* ``: The Vultr type code. For example, `vc2`, `vhf`, `vdc`, etc.\n* ``: The number of cores, such as `4c` for \"4 cores\", `8c` for \"8 cores\", etc.\n* ``: Size in GB, such as `32gb`.\n* ``: Some plans include a modifier for internal identification purposes, such as CPU type or location surcharges.\n\n> Note: This information about plan id format is for general education. Vultr may change the sub-field format or values at any time. You should not attempt to parse the plan ID sub-fields in your code for any specific purpose.\n", + "parameters": [ + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ], + "security": [] + } + }, + "/bare-metals": { + "get": { + "summary": "List Bare Metal Instances", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "bare_metals": { + "type": "array", + "items": { + "$ref": "#/components/schemas/baremetal" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "bare metal": { + "value": { + "bare_metals": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "os": "Application", + "ram": "32768 MB", + "disk": "2x 240GB SSD", + "main_ip": "192.0.2.123", + "cpu_count": 4, + "region": "ams", + "default_password": "example-password", + "date_created": "2020-10-10T01:56:20+00:00", + "status": "active", + "netmask_v4": "255.255.254.0", + "gateway_v4": "192.0.2.1", + "plan": "vbm-4c-32gb", + "v6_network": "2001:0db8:5001:3990::", + "v6_main_ip": "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a", + "v6_network_size": 64, + "label": "Example Bare Metal", + "mac_address": 2199756823533, + "os_id": 186, + "app_id": 3, + "image_id": "", + "features": [ + "ipv6" + ], + "tags": [ + "a tag", + "another" + ], + "user_scheme": "root" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-baremetals", + "description": "List all Bare Metal instances in your account.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500.\n" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create Bare Metal Instance", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ams\",\n \"plan\" : \"vbm-4c-32gb\",\n \"label\" : \"Example Bare Metal\",\n \"app_id\" : 3,\n \"enable_ipv6\" : true\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "baremetal": { + "$ref": "#/components/schemas/baremetal" + } + } + }, + "examples": { + "bare metal": { + "value": { + "bare_metal": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "os": "Application", + "ram": "32768 MB", + "disk": "2x 240GB SSD", + "main_ip": "", + "cpu_count": 4, + "region": "ams", + "date_created": "2020-10-10T01:56:20+00:00", + "status": "pending", + "netmask_v4": "", + "gateway_v4": "", + "plan": "vbm-4c-32gb", + "v6_network": "", + "v6_main_ip": "", + "v6_network_size": 0, + "label": "Example Bare Metal", + "mac_address": 2199756823533, + "tag": "Example Tag", + "tags": [ + "Another tag" + ], + "os_id": 186, + "app_id": 3, + "image_id": "", + "features": [ + "ipv6" + ], + "user_scheme": "root" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-baremetal", + "description": "Create a new Bare Metal instance in a `region` with the desired `plan`. Choose one of the following to deploy the instance:\n\n* `os_id`\n* `snapshot_id`\n* `app_id`\n* `image_id`\n\nSupply other attributes as desired.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) to create the instance." + }, + "plan": { + "type": "string", + "description": "The [Bare Metal plan id](#operation/list-metal-plans) to use for this instance." + }, + "script_id": { + "type": "string", + "description": "The [Startup Script id](#operation/list-startup-scripts) to use for this instance." + }, + "enable_ipv6": { + "type": "boolean", + "description": "Enable IPv6.\n\n* true" + }, + "sshkey_id": { + "type": "array", + "description": "The [SSH Key id](#operation/list-ssh-keys) to install on this instance.", + "items": { + "type": "string" + } + }, + "user_data": { + "type": "string", + "description": "The user-supplied, base64 encoded [user data](https://www.vultr.com/docs/manage-instance-user-data-with-the-vultr-metadata-api/) for this Instance." + }, + "label": { + "type": "string", + "description": "The user-supplied label." + }, + "activation_email": { + "type": "boolean", + "description": "Notify by email after deployment.\n\n* true\n* false (default)" + }, + "hostname": { + "type": "string", + "description": "The user-supplied hostname to use when deploying this instance." + }, + "tag": { + "type": "string", + "description": "Use `tags` instead. The user-supplied tag.", + "deprecated": true + }, + "reserved_ipv4": { + "type": "string", + "description": "The [Reserved IP id](#operation/list-reserved-ips) for this instance." + }, + "os_id": { + "type": "integer", + "description": "If supplied, deploy the instance using this [Operating System id](#operation/list-os)." + }, + "snapshot_id": { + "type": "string", + "description": "If supplied, deploy the instance using this [Snapshot ID](#operation/list-snapshots)." + }, + "app_id": { + "type": "integer", + "description": "If supplied, deploy the instance using this [Application id](#operation/list-applications)." + }, + "image_id": { + "type": "string", + "description": "If supplied, deploy the instance using this [Application image_id](#operation/list-applications)." + }, + "persistent_pxe": { + "type": "boolean", + "description": "Enable persistent PXE.\n\n* true\n* false (default)" + }, + "attach_vpc2": { + "type": "array", + "description": "An array of [VPC IDs](#operation/list-vpc2) to attach to this Bare Metal Instance. This parameter takes precedence over `enable_vpc2`. Please choose one parameter.", + "items": { + "type": "string" + } + }, + "detach_vpc2": { + "type": "array", + "description": "An array of [VPC IDs](#operation/list-vpc2) to detach from this Bare Metal Instance. This parameter takes precedence over `enable_vpc2`.", + "items": { + "type": "string" + } + }, + "enable_vpc2": { + "type": "boolean", + "description": "If `true`, VPC 2.0 support will be added to the new server.\n\nThis parameter attaches a single VPC 2.0 netowrk. When no VPC 2.0 network exists in the region, it will be automatically created.\n\nIf there are multiple VPC 2.0 networks in the instance's region, use `attach_vpc2` instead to specify a VPC 2.0 network." + }, + "tags": { + "type": "array", + "description": "Tags to apply to the instance.", + "items": { + "type": "string" + } + }, + "user_scheme": { + "type": "string", + "description": "Linux-only: The user scheme used for logging into this instance. By default, the \"root\" user is configured. Alternatively, a limited user with sudo permissions can be selected.\n\n* root\n* limited" + } + }, + "required": [ + "region", + "plan" + ] + }, + "examples": { + "request": { + "value": { + "region": "ams", + "plan": "vbm-4c-32gb", + "label": "Example Bare Metal", + "app_id": 3, + "enable_ipv6": true + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "parameters": [] + }, + "/bare-metals/{baremetal-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [Bare Metal id](#operation/list-baremetals)." + } + ], + "get": { + "summary": "Get Bare Metal", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "bare_metal": { + "$ref": "#/components/schemas/baremetal" + } + } + }, + "examples": { + "bare-metal": { + "value": { + "bare_metal": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "os": "Application", + "ram": "32768 MB", + "disk": "2x 240GB SSD", + "main_ip": "192.0.2.123", + "cpu_count": 4, + "region": "ams", + "date_created": "2020-10-10T01:56:20+00:00", + "status": "pending", + "netmask_v4": "255.255.254.0", + "gateway_v4": "192.0.2.1", + "plan": "vbm-4c-32gb", + "v6_network": "2001:0db8:5001:3990::", + "v6_main_ip": "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a", + "v6_network_size": 64, + "mac_address": 2199756823533, + "label": "Example Bare Metal", + "os_id": 183, + "app_id": 3, + "image_id": "", + "features": [ + "ipv6" + ], + "tags": [ + "a tag", + "another" + ], + "user_scheme": "root" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-baremetal", + "security": [ + { + "API Key": [] + } + ], + "description": "Get information for a Bare Metal instance." + }, + "patch": { + "summary": "Update Bare Metal", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"Updated Bare Metal Label\",\n \"tags\" : [\"a tag\", \"another\"],\n \"user_data\" : \"QmFzZTY0IEV4YW1wbGUgRGF0YQ==\"\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "bare_metal": { + "$ref": "#/components/schemas/baremetal" + } + } + }, + "examples": { + "example": { + "value": { + "bare_metal": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "os": "Application", + "ram": "32768 MB", + "disk": "2x 240GB SSD", + "main_ip": "192.0.2.123", + "cpu_count": 4, + "region": "ams", + "date_created": "2020-10-10T01:56:20+00:00", + "status": "pending", + "netmask_v4": "255.255.254.0", + "gateway_v4": "192.0.2.1", + "plan": "vbm-4c-32gb", + "v6_network": "2001:0db8:5001:3990::", + "v6_main_ip": "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a", + "v6_network_size": 64, + "mac_address": 2199756823533, + "label": "Updated Bare Metal Label", + "os_id": 183, + "app_id": 3, + "image_id": "", + "features": [ + "ipv6" + ], + "tags": [ + "a tag", + "another" + ], + "user_scheme": "root" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "update-baremetal", + "description": "Update a Bare Metal instance. All attributes are optional. If not set, the attributes will retain their original values.\n\n**Note:** Changing `os_id`, `app_id` or `image_id` may take a few extra seconds to complete.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "user_data": { + "type": "string", + "description": "The user-supplied, base64 encoded [user data](https://www.vultr.com/docs/manage-instance-user-data-with-the-vultr-metadata-api/) to attach to this instance." + }, + "label": { + "type": "string", + "description": "The user-supplied label." + }, + "tag": { + "type": "string", + "description": "Use `tags` instead. The user-supplied tag.", + "deprecated": true + }, + "os_id": { + "type": "integer", + "description": "If supplied, reinstall the instance using this [Operating System id](#operation/list-os)." + }, + "app_id": { + "type": "integer", + "description": "If supplied, reinstall the instance using this [Application id](#operation/list-applications)." + }, + "image_id": { + "type": "string", + "description": "If supplied, reinstall the instance using this [Application image_id](#operation/list-applications)." + }, + "enable_ipv6": { + "type": "boolean", + "description": "Enable IPv6.\n\n* true" + }, + "attach_vpc2": { + "type": "array", + "description": "An array of [VPC IDs](#operation/list-vpc2) to attach to this Bare Metal Instance. This parameter takes precedence over `enable_vpc2`. Please choose one parameter.", + "items": { + "type": "string" + } + }, + "detach_vpc2": { + "type": "array", + "description": "An array of [VPC IDs](#operation/list-vpc2) to detach from this Bare Metal Instance. This parameter takes precedence over `enable_vpc2`.", + "items": { + "type": "string" + } + }, + "enable_vpc2": { + "type": "boolean", + "description": "If `true`, VPC 2.0 support will be added to the new server.\n\nThis parameter attaches a single VPC 2.0 netowrk. When no VPC 2.0 network exists in the region, it will be automatically created.\n\nIf there are multiple VPC 2.0 networks in the instance's region, use `attach_vpc2` instead to specify a VPC 2.0 network." + }, + "tags": { + "type": "array", + "description": "Tags to apply to the instance.", + "items": { + "type": "string" + } + }, + "user_scheme": { + "type": "string", + "description": "Linux-only: The user scheme used for logging into this instance. The instance must be reinstalled for this change to take effect.\n\n* root\n* limited" + } + } + }, + "examples": { + "request": { + "value": { + "label": "Updated Bare Metal Label", + "tags": [ + "a tag", + "another" + ], + "user_data": "QmFzZTY0IEV4YW1wbGUgRGF0YQ==" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ] + }, + "delete": { + "summary": "Delete Bare Metal", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-baremetal", + "description": "Delete a Bare Metal instance.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/bare-metals/{baremetal-id}/ipv4": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [Bare Metal id](#operation/list-baremetals)." + } + ], + "get": { + "summary": "Bare Metal IPv4 Addresses", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/ipv4\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ipv4s": { + "type": "array", + "items": { + "$ref": "#/components/schemas/baremetal-ipv4" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "ipv4s": { + "value": { + "ipv4s": [ + { + "ip": "192.0.2.123", + "netmask": "255.255.254.0", + "gateway": "192.0.2.1", + "type": "main_ip", + "reverse": "192.0.2.123.vultr.com" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-ipv4-baremetal", + "security": [ + { + "API Key": [] + } + ], + "description": "Get the IPv4 information for the Bare Metal instance." + } + }, + "/bare-metals/{baremetal-id}/ipv6": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [Bare Metal id](#operation/list-baremetals)." + } + ], + "get": { + "summary": "Bare Metal IPv6 Addresses", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/ipv6\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ipv6s": { + "type": "array", + "items": { + "$ref": "#/components/schemas/baremetal-ipv6" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "ipv6s": { + "value": { + "ipv6s": [ + { + "ip": "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a", + "network": "2001:0db8:5001:3990::", + "network_size": 64, + "type": "main_ip" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-ipv6-baremetal", + "description": "Get the IPv6 information for the Bare Metal instance.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/bare-metals/{baremetal-id}/start": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [Bare Metal id](#operation/list-baremetals)." + } + ], + "post": { + "summary": "Start Bare Metal", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/start\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "start-baremetal", + "description": "Start the Bare Metal instance.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/bare-metals/{baremetal-id}/reboot": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [Bare Metal id](#operation/list-baremetals)." + } + ], + "post": { + "summary": "Reboot Bare Metal", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/reboot\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "reboot-baremetal", + "description": "Reboot the Bare Metal instance.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/bare-metals/{baremetal-id}/reinstall": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [Bare Metal id](#operation/list-baremetals)." + } + ], + "post": { + "summary": "Reinstall Bare Metal", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/reinstall\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n --data '{\n \"hostname\" : \"my_new_hostname\"\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "bare_metal": { + "$ref": "#/components/schemas/baremetal" + } + } + }, + "examples": { + "bare_metal": { + "value": { + "bare_metal": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "os": "Application", + "ram": "32768 MB", + "disk": "2x 240GB SSD", + "main_ip": "192.0.2.123", + "cpu_count": 4, + "region": "ams", + "date_created": "2020-10-10T01:56:20+00:00", + "status": "pending", + "netmask_v4": "255.255.254.0", + "gateway_v4": "192.0.2.1", + "plan": "vbm-4c-32gb", + "v6_network": "2001:0db8:5001:3990::", + "v6_main_ip": "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a", + "v6_network_size": 64, + "label": "Example Bare Metal", + "mac_address": 2199756823533, + "tag": "Example Tag", + "os_id": 183, + "app_id": 3, + "image_id": "" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "reinstall-baremetal", + "description": "Reinstall the Bare Metal instance using an optional `hostname`.\n\n\n**Note:** This action may take some time to complete.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "hostname": { + "type": "string", + "description": "The hostname to use when reinstalling this bare metal server." + } + } + }, + "examples": { + "request": { + "value": { + "hostname": "my_new_hostname" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ] + } + }, + "/bare-metals/{baremetal-id}/halt": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [Bare Metal id](#operation/list-baremetals)." + } + ], + "post": { + "summary": "Halt Bare Metal", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/halt\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "halt-baremetal", + "security": [ + { + "API Key": [] + } + ], + "description": "Halt the Bare Metal instance." + } + }, + "/bare-metals/{baremetal-id}/bandwidth": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [Bare Metal id](#operation/list-baremetals)." + } + ], + "get": { + "summary": "Bare Metal Bandwidth", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/bandwidth\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "bandwidth": { + "type": "object", + "description": "This object will contain objects that represent days in the month (UTC). The date is denoted by the nested objects keys.", + "properties": { + "2020-10-10": { + "$ref": "#/components/schemas/bandwidth" + }, + "2020-10-11": { + "$ref": "#/components/schemas/bandwidth" + } + } + } + } + }, + "examples": { + "bandwidth": { + "value": { + "bandwidth": { + "2020-07-25": { + "incoming_bytes": 15989787, + "outgoing_bytes": 25327729 + }, + "2020-07-26": { + "incoming_bytes": 13964112, + "outgoing_bytes": 22257069 + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-bandwidth-baremetal", + "description": "Get bandwidth information for the Bare Metal instance.

The `bandwidth` object in a successful response contains objects representing a day in the month. The date is denoted by the nested object keys. Days begin and end in the UTC timezone. Bandwidth utilization data contained within the date object is refreshed periodically. We do not recommend using this endpoint to gather real-time metrics.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/bare-metals/halt": { + "post": { + "summary": "Halt Bare Metals", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/halt\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"baremetal_ids\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"7f6f84ea-8f87-4d9e-af01-ac44db05911c\",\n \"54a83807-64ce-42e8-a0da-4d6c31c5b93b\"\n ]\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "halt-baremetals", + "description": "Halt Bare Metals.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "baremetal_ids": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "example": { + "value": { + "baremetal_ids": [ + "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "7f6f84ea-8f87-4d9e-af01-ac44db05911c", + "54a83807-64ce-42e8-a0da-4d6c31c5b93b" + ] + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/bare-metals/reboot": { + "post": { + "summary": "Reboot Bare Metals", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/reboot\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"baremetal_ids\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"54a83807-64ce-42e8-a0da-4d6c31c5b93b\",\n \"d092ee75-a113-480c-ae2e-e24cc6f588c3\"\n ]\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "reboot-bare-metals", + "description": "Reboot Bare Metals.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "baremetal_ids": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "example": { + "value": { + "baremetal_ids": [ + "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "54a83807-64ce-42e8-a0da-4d6c31c5b93b", + "d092ee75-a113-480c-ae2e-e24cc6f588c3" + ] + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/bare-metals/start": { + "post": { + "summary": "Start Bare Metals", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/start\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"baremetal_ids\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"1d651bd2-b93c-4bb6-8b91-0546fd765f15\",\n \"c2790719-278d-474c-8dff-cb35d6e5503f\"\n ]\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "start-bare-metals", + "description": "Start Bare Metals.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "baremetal_ids": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "example": { + "value": { + "baremetal_ids": [ + "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "1d651bd2-b93c-4bb6-8b91-0546fd765f15", + "c2790719-278d-474c-8dff-cb35d6e5503f" + ] + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/bare-metals/{baremetal-id}/user-data": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [Bare Metal id](#operation/list-baremetals)." + } + ], + "get": { + "summary": "Get Bare Metal User Data", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/user-data\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "user_data": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The user-supplied, base64 encoded [user data](https://www.vultr.com/docs/manage-instance-user-data-with-the-vultr-metadata-api/) attached to this bare metal." + } + } + } + } + }, + "examples": { + "response": { + "value": { + "user_data": { + "data": "QmFzZTY0IEV4YW1wbGUgRGF0YQ==" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-bare-metal-userdata", + "security": [ + { + "API Key": [] + } + ], + "description": "Get the user-supplied, base64 encoded [user data](https://www.vultr.com/docs/manage-instance-user-data-with-the-vultr-metadata-api/) for a Bare Metal." + } + }, + "/instances": { + "get": { + "summary": "List Instances", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "instances": { + "type": "array", + "items": { + "$ref": "#/components/schemas/instance" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "instance": { + "value": { + "instances": [ + { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "os": "CentOS SELinux 8 x64", + "ram": 2048, + "disk": 55, + "main_ip": "192.0.2.123", + "vcpu_count": 1, + "region": "atl", + "plan": "vc2-6c-16gb", + "date_created": "2020-10-10T01:56:20+00:00", + "status": "active", + "allowed_bandwidth": 2000, + "netmask_v4": "255.255.252.0", + "gateway_v4": "192.0.2.1", + "power_status": "running", + "server_status": "ok", + "v6_network": "2001:0db8:1112:18fb::", + "v6_main_ip": "2001:0db8:1112:18fb:0200:00ff:fe00:0000", + "v6_network_size": 64, + "label": "Example Instance", + "internal_ip": "", + "kvm": "https://my.vultr.com/subs/vps/novnc/api.php?data=00example11223344", + "hostname": "my_hostname", + "os_id": 215, + "app_id": 0, + "image_id": "", + "firewall_group_id": "", + "features": [ + "ddos_protection", + "ipv6", + "auto_backups" + ], + "tags": [ + "a tag", + "another" + ], + "user_scheme": "root" + } + ], + "meta": { + "total": 3, + "links": { + "next": "WxYzExampleNext", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "list-instances", + "description": "List all VPS instances in your account.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "tag", + "description": "Filter by specific tag.", + "deprecated": true + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "label", + "description": "Filter by label." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "main_ip", + "description": "Filter by main ip address." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "region", + "description": "Filter by [Region id](#operation/list-regions)." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "firewall_group_id", + "description": "Filter by [Firewall group id](#operation/list-firewall-groups)." + } + ] + }, + "post": { + "summary": "Create Instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"plan\" : \"vc2-6c-16gb\",\n \"label\" : \"Example Instance\",\n \"os_id\" : 215,\n \"user_data\" : \"QmFzZTY0IEV4YW1wbGUgRGF0YQ==\",\n \"backups\" : \"enabled\",\n \"hostname\": \"my_hostname\",\n \"tags\": [\n \"a tag\",\n \"another\"\n ]\n }'" + } + ], + "responses": { + "202": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "instance": { + "$ref": "#/components/schemas/instance" + } + } + }, + "examples": { + "instance": { + "value": { + "instance": { + "id": "4f0f12e5-1f84-404f-aa84-85f431ea5ec2", + "os": "CentOS 8 Stream", + "ram": 1024, + "disk": 0, + "main_ip": "0.0.0.0", + "vcpu_count": 1, + "region": "ewr", + "plan": "vc2-1c-1gb", + "date_created": "2021-09-14T13:22:20+00:00", + "status": "pending", + "allowed_bandwidth": 1000, + "netmask_v4": "", + "gateway_v4": "0.0.0.0", + "power_status": "running", + "server_status": "none", + "v6_network": "", + "v6_main_ip": "", + "v6_network_size": 0, + "label": "", + "internal_ip": "", + "kvm": "", + "hostname": "my_hostname", + "os_id": 401, + "app_id": 0, + "image_id": "", + "firewall_group_id": "", + "features": [], + "default_password": "v5{Fkvb#2ycPGwHs", + "tags": [ + "a tag", + "another" + ], + "user_scheme": "root" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-instance", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the Instance is located." + }, + "plan": { + "type": "string", + "description": "The [Plan id](#operation/list-plans) to use when deploying this instance." + }, + "os_id": { + "type": "integer", + "description": "The [Operating System id](#operation/list-os) to use when deploying this instance." + }, + "ipxe_chain_url": { + "type": "string", + "description": "The URL location of the iPXE chainloader." + }, + "iso_id": { + "type": "string", + "description": "The [ISO id](#operation/list-isos) to use when deploying this instance." + }, + "script_id": { + "type": "string", + "description": "The [Startup Script id](#operation/list-startup-scripts) to use when deploying this instance." + }, + "snapshot_id": { + "type": "string", + "description": "The [Snapshot id](#operation/list-snapshots) to use when deploying the instance." + }, + "enable_ipv6": { + "type": "boolean", + "description": "Enable IPv6.\n\n* true" + }, + "disable_public_ipv4": { + "type": "boolean", + "description": "Don't set up a public IPv4 address when IPv6 is enabled. Will not do anything unless `enable_ipv6` is also `true`.\n\n* true" + }, + "attach_private_network": { + "type": "array", + "description": "Use `attach_vpc` instead. An array of [Private Network ids](#operation/list-networks) to attach to this Instance. This parameter takes precedence over `enable_private_network`. Please choose one parameter.", + "deprecated": true, + "items": { + "type": "string" + } + }, + "attach_vpc": { + "type": "array", + "description": "An array of [VPC IDs](#operation/list-vpcs) to attach to this Instance. This parameter takes precedence over `enable_vpc`. Please choose one parameter.", + "items": { + "type": "string" + } + }, + "attach_vpc2": { + "type": "array", + "description": "An array of [VPC IDs](#operation/list-vpc2) to attach to this Instance. This parameter takes precedence over `enable_vpc2`. Please choose one parameter.", + "items": { + "type": "string" + } + }, + "label": { + "type": "string", + "description": "A user-supplied label for this instance." + }, + "sshkey_id": { + "type": "array", + "description": "The [SSH Key id](#operation/list-ssh-keys) to install on this instance.", + "items": { + "type": "string" + } + }, + "backups": { + "type": "string", + "description": "Enable automatic backups for the instance.\n\n* enabled\n* disabled" + }, + "app_id": { + "type": "integer", + "description": "The [Application id](#operation/list-applications) to use when deploying this instance." + }, + "image_id": { + "type": "string", + "description": "The [Application image_id](#operation/list-applications) to use when deploying this instance." + }, + "user_data": { + "type": "string", + "description": "The user-supplied, base64 encoded [user data](https://www.vultr.com/docs/manage-instance-user-data-with-the-vultr-metadata-api/) to attach to this instance." + }, + "ddos_protection": { + "type": "boolean", + "description": "Enable DDoS protection (there is an additional charge for this).\n\n* true\n* false" + }, + "activation_email": { + "type": "boolean", + "description": "Notify by email after deployment.\n\n* true\n* false (default)" + }, + "hostname": { + "type": "string", + "description": "The hostname to use when deploying this instance." + }, + "tag": { + "type": "string", + "description": "Use `tags` instead. The user-supplied tag.", + "deprecated": true + }, + "firewall_group_id": { + "type": "string", + "description": "The [Firewall Group id](#operation/list-firewall-groups) to attach to this Instance." + }, + "reserved_ipv4": { + "type": "string", + "description": "ID of the floating IP to use as the main IP of this server." + }, + "enable_private_network": { + "type": "boolean", + "description": "Use `enable_vpc` instead.\n\nIf `true`, private networking support will be added to the new server.\n\nThis parameter attaches a single network. When no network exists in the region, it will be automatically created.\n\nIf there are multiple private networks in the instance's region, use `attach_private_network` instead to specify a network.", + "deprecated": true + }, + "enable_vpc": { + "type": "boolean", + "description": "If `true`, VPC support will be added to the new server.\n\nThis parameter attaches a single VPC. When no VPC exists in the region, it will be automatically created.\n\nIf there are multiple VPCs in the instance's region, use `attach_vpc` instead to specify a network." + }, + "enable_vpc2": { + "type": "boolean", + "description": "If `true`, VPC 2.0 support will be added to the new server.\n\nThis parameter attaches a single VPC 2.0 network. When no VPC 2.0 network exists in the region, it will be automatically created.\n\nIf there are multiple VPC 2.0 networks in the instance's region, use `attach_vpc2` instead to specify a network." + }, + "tags": { + "type": "array", + "description": "Tags to apply to the instance", + "items": { + "type": "string" + } + }, + "user_scheme": { + "type": "string", + "description": "Linux-only: The user scheme used for logging into this instance. By default, the \"root\" user is configured. Alternatively, a limited user with sudo permissions can be selected.\n\n* root\n* limited" + } + }, + "required": [ + "region", + "plan" + ] + }, + "examples": { + "request": { + "value": { + "region": "ewr", + "plan": "vc2-6c-16gb", + "label": "Example Instance", + "os_id": 215, + "user_data": "QmFzZTY0IEV4YW1wbGUgRGF0YQ==", + "backups": "enabled", + "hostname": "my_hostname", + "tags": [ + "a tag", + "another" + ] + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Create a new VPS Instance in a `region` with the desired `plan`. Choose one of the following to deploy the instance:\n\n* `os_id`\n* `iso_id`\n* `snapshot_id`\n* `app_id`\n* `image_id`\n\nSupply other attributes as desired." + } + }, + "/instances/{instance-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "get": { + "summary": "Get Instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "instance": { + "$ref": "#/components/schemas/instance" + } + } + }, + "examples": { + "instance": { + "value": { + "instance": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "os": "Ubuntu 20.04 x64", + "ram": 16384, + "disk": 384, + "main_ip": "192.0.2.123", + "vcpu_count": 4, + "region": "ewr", + "plan": "vc2-6c-16gb", + "date_created": "2020-10-10T01:56:20+00:00", + "status": "active", + "allowed_bandwidth": 5000, + "netmask_v4": "255.255.254.0", + "gateway_v4": "192.0.2.1", + "power_status": "running", + "server_status": "ok", + "v6_network": "", + "v6_main_ip": "", + "v6_network_size": 0, + "label": "Example Instance", + "internal_ip": "", + "kvm": "https://my.vultr.com/subs/vps/novnc/api.php?data=00example11223344", + "hostname": "my_hostname", + "os_id": 215, + "app_id": 0, + "image_id": "", + "firewall_group_id": "", + "features": [ + "ddos_protection", + "ipv6", + "auto_backups" + ], + "tags": [ + "a tag", + "another" + ], + "user_scheme": "root" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-instance", + "description": "Get information about an Instance.", + "security": [ + { + "API Key": [] + } + ] + }, + "patch": { + "summary": "Update Instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"Example Instance\",\n \"tags\" : [\"a tag\", \"another\"],\n \"plan\" : \"vc2-24c-97gb\"\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "instance": { + "$ref": "#/components/schemas/instance" + } + } + }, + "examples": { + "example": { + "value": { + "instance": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "os": "Ubuntu 20.04 x64", + "ram": 16384, + "disk": 384, + "main_ip": "192.0.2.123", + "vcpu_count": 4, + "region": "ewr", + "plan": "vc2-24c-97gb", + "date_created": "2020-10-10T01:56:20+00:00", + "status": "active", + "allowed_bandwidth": 5000, + "netmask_v4": "255.255.254.0", + "gateway_v4": "192.0.2.1", + "power_status": "running", + "server_status": "ok", + "v6_network": "", + "v6_main_ip": "", + "v6_network_size": 0, + "label": "Example Instance", + "internal_ip": "", + "kvm": "https://my.vultr.com/subs/vps/novnc/api.php?data=00example11223344", + "hostname": "my_hostname", + "os_id": 215, + "app_id": 0, + "image_id": "", + "firewall_group_id": "", + "features": [ + "ddos_protection", + "ipv6", + "auto_backups" + ], + "tags": [ + "a tag", + "another" + ], + "user_scheme": "root" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "update-instance", + "description": "Update information for an Instance. All attributes are optional. If not set, the attributes will retain their original values.\n\n**Note:** Changing `os_id`, `app_id` or `image_id` may take a few extra seconds to complete.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "app_id": { + "type": "integer", + "description": "Reinstall the instance with this [Application id](#operation/list-applications)." + }, + "image_id": { + "type": "string", + "description": "Reinstall the instance with this [Application image_id](#operation/list-applications)." + }, + "backups": { + "description": "Enable automatic backups for the instance.\n\n* enabled\n* disabled", + "type": "string" + }, + "firewall_group_id": { + "type": "string", + "description": "The [Firewall Group id](#operation/list-firewall-groups) to attach to this Instance." + }, + "enable_ipv6": { + "type": "boolean", + "description": "Enable IPv6.\n\n* true" + }, + "os_id": { + "type": "string", + "description": "Reinstall the instance with this [ISO id](#operation/list-isos)." + }, + "user_data": { + "type": "string", + "description": "The user-supplied, base64 encoded [user data](https://www.vultr.com/docs/manage-instance-user-data-with-the-vultr-metadata-api/) to attach to this instance." + }, + "tag": { + "type": "string", + "description": "Use `tags` instead. The user-supplied tag.", + "deprecated": true + }, + "plan": { + "type": "string", + "description": "Upgrade the instance with this [Plan id](#operation/list-plans)." + }, + "ddos_protection": { + "description": "Enable DDoS Protection (there is an additional charge for this).\n\n* true\n* false", + "type": "boolean" + }, + "attach_private_network": { + "type": "array", + "description": "Use `attach_vpc` instead. An array of [Private Network ids](#operation/list-networks) to attach to this Instance. This parameter takes precedence over `enable_private_network`. Please choose one parameter.", + "deprecated": true, + "items": { + "type": "string" + } + }, + "attach_vpc": { + "type": "array", + "description": "An array of [VPC IDs](#operation/list-vpcs) to attach to this Instance. This parameter takes precedence over `enable_vpc`. Please choose one parameter.", + "items": { + "type": "string" + } + }, + "attach_vpc2": { + "type": "array", + "description": "An array of [VPC IDs](#operation/list-vpc2) to attach to this Instance. This parameter takes precedence over `enable_vpc2`. Please choose one parameter.", + "items": { + "type": "string" + } + }, + "detach_private_network": { + "type": "array", + "description": "Use `detach_vpc` instead. An array of [Private Network ids](#operation/list-networks) to detach from this Instance. This parameter takes precedence over `enable_private_network`.", + "deprecated": true, + "items": { + "type": "string" + } + }, + "detach_vpc": { + "type": "array", + "description": "An array of [VPC IDs](#operation/list-vpcs) to detach from this Instance. This parameter takes precedence over `enable_vpc`.", + "items": { + "type": "string" + } + }, + "detach_vpc2": { + "type": "array", + "description": "An array of [VPC IDs](#operation/list-vpc2) to detach from this Instance. This parameter takes precedence over `enable_vpc2`.", + "items": { + "type": "string" + } + }, + "enable_private_network": { + "type": "boolean", + "description": "Use `enable_vpc` instead.\n\nIf `true`, private networking support will be added to the new server.\n\nThis parameter attaches a single network. When no network exists in the region, it will be automatically created.\n\nIf there are multiple private networks in the instance's region, use `attach_private_network` instead to specify a network.", + "deprecated": true + }, + "enable_vpc": { + "type": "boolean", + "description": "If `true`, VPC support will be added to the new server.\n\nThis parameter attaches a single VPC. When no VPC exists in the region, it will be automatically created.\n\nIf there are multiple VPCs in the instance's region, use `attach_vpc` instead to specify a VPC." + }, + "enable_vpc2": { + "type": "boolean", + "description": "If `true`, VPC 2.0 support will be added to the new server.\n\nThis parameter attaches a single VPC 2.0 netowrk. When no VPC 2.0 network exists in the region, it will be automatically created.\n\nIf there are multiple VPC 2.0 networks in the instance's region, use `attach_vpc2` instead to specify a VPC 2.0 network." + }, + "label": { + "type": "string", + "description": "The user supplied label." + }, + "tags": { + "type": "array", + "description": "Tags to apply to the instance.", + "items": { + "type": "string" + } + }, + "user_scheme": { + "type": "string", + "description": "Linux-only: The user scheme used for logging into this instance. The instance must be reinstalled for this change to take effect.\n\n* root\n* limited" + } + } + }, + "examples": { + "request": { + "value": { + "label": "Example Instance", + "tags": [ + "a tag", + "another" + ], + "plan": "vc2-24c-97gb" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "delete": { + "summary": "Delete Instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-instance", + "description": "Delete an Instance.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/instances/halt": { + "post": { + "summary": "Halt Instances", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/halt\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"instance_ids\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"1d651bd2-b93c-4bb6-8b91-0546fd765f15\",\n \"c2790719-278d-474c-8dff-cb35d6e5503f\"\n ]\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "halt-instances", + "description": "Halt Instances.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "instance_ids": { + "type": "array", + "description": "The [Instance IDs](#operation/list-instances) to halt.", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "example": { + "value": { + "instance_ids": [ + "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "1d651bd2-b93c-4bb6-8b91-0546fd765f15", + "c2790719-278d-474c-8dff-cb35d6e5503f" + ] + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/instances/reboot": { + "post": { + "summary": "Reboot instances", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/reboot\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"instance_ids\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"1d651bd2-b93c-4bb6-8b91-0546fd765f15\",\n \"c2790719-278d-474c-8dff-cb35d6e5503f\"\n ]\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "reboot-instances", + "description": "Reboot Instances.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "instance_ids": { + "type": "array", + "description": "The [Instance IDs](#operation/list-instances) to reboot.", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "example": { + "value": { + "instance_ids": [ + "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "1d651bd2-b93c-4bb6-8b91-0546fd765f15", + "c2790719-278d-474c-8dff-cb35d6e5503f" + ] + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/instances/start": { + "post": { + "summary": "Start instances", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/start\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"instance_ids\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"1d651bd2-b93c-4bb6-8b91-0546fd765f15\",\n \"c2790719-278d-474c-8dff-cb35d6e5503f\"\n ]\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "start-instances", + "description": "Start Instances.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "instance_ids": { + "type": "array", + "description": "The [Instance IDs](#operation/list-instances) to start.", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "example": { + "value": { + "instance_ids": [ + "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "1d651bd2-b93c-4bb6-8b91-0546fd765f15", + "c2790719-278d-474c-8dff-cb35d6e5503f" + ] + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/instances/{instance-id}/start": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Start instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/start\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "start-instance", + "description": "Start an Instance.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/instances/{instance-id}/reboot": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Reboot Instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/reboot\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "reboot-instance", + "description": "Reboot an Instance.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/instances/{instance-id}/reinstall": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Reinstall Instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/reinstall\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"hostname\" : \"my_new_hostname\"\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "instance": { + "$ref": "#/components/schemas/instance" + } + } + }, + "examples": { + "example": { + "value": { + "instance": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "os": "Ubuntu 20.04 x64", + "ram": 16384, + "disk": 384, + "main_ip": "192.0.2.123", + "vcpu_count": 4, + "region": "ewr", + "plan": "vc2-6c-16gb", + "date_created": "2020-10-10T01:56:20+00:00", + "status": "active", + "allowed_bandwidth": 5000, + "netmask_v4": "255.255.254.0", + "gateway_v4": "192.0.2.1", + "power_status": "running", + "server_status": "ok", + "v6_network": "", + "v6_main_ip": "", + "v6_network_size": 0, + "label": "Example Instance", + "internal_ip": "", + "kvm": "https://my.vultr.com/subs/vps/novnc/api.php?data=00example11223344", + "hostname": "my_new_hostname", + "tag": "Example Tag", + "os_id": 215, + "app_id": 0, + "image_id": "", + "firewall_group_id": "", + "features": [ + "ddos_protection", + "ipv6", + "auto_backups" + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "reinstall-instance", + "description": "Reinstall an Instance using an optional `hostname`.\n\n**Note:** This action may take a few extra seconds to complete.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "hostname": { + "type": "string", + "description": "The hostname to use when reinstalling this instance." + } + } + }, + "examples": { + "request": { + "value": { + "hostname": "my_new_hostname" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ] + } + }, + "/instances/{instance-id}/bandwidth": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + }, + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "date_range", + "description": "The range of days to include, represented as the number of days relative to the current date. Default 30, Minimum 1 and Max 60." + } + ], + "get": { + "summary": "Instance Bandwidth", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/bandwidth\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "bandwidth": { + "type": "object", + "description": "This object will contain objects that represent days in the month (UTC). The date is denoted by the nested objects keys.", + "properties": { + "2020-10-10": { + "$ref": "#/components/schemas/bandwidth" + }, + "2020-10-11": { + "$ref": "#/components/schemas/bandwidth" + } + } + } + } + }, + "examples": { + "bandwidth": { + "value": { + "bandwidth": { + "2020-07-25": { + "incoming_bytes": 15989787, + "outgoing_bytes": 25327729 + }, + "2020-07-26": { + "incoming_bytes": 13964112, + "outgoing_bytes": 22257069 + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-instance-bandwidth", + "description": "Get bandwidth information about an Instance.

The `bandwidth` object in a successful response contains objects representing a day in the month. The date is denoted by the nested object keys. Days begin and end in the UTC timezone. The bandwidth utilization data contained within the date object is refreshed periodically. We do not recommend using this endpoint to gather real-time metrics.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/instances/{instance-id}/neighbors": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "get": { + "summary": "Get Instance neighbors", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/neighbors\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "neighbors": { + "type": "array", + "description": "An array of [Instance ids](#operation/list-instances) in the same location as this Instance.", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "response": { + "value": { + "neighbors": [ + "478dbfe7-43f8-4dc8-940c-8bb61f547400", + "a8047e6b-16bd-42be-8351-58df7e5ab89c" + ] + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-instance-neighbors", + "security": [ + { + "API Key": [] + } + ], + "description": "Get a list of other instances in the same location as this Instance." + } + }, + "/instances/{instance-id}/private-networks": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "get": { + "summary": "List instance Private Networks", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/private-networks\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "private_networks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/private-networks" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "private_networks": [ + { + "network_id": "d325e78b-bcec-4d4e-b9b8-9c294f37b04d", + "mac_address": "00:00:5e:00:53:5e", + "ip_address": "10.99.0.123" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-instance-private-networks", + "security": [ + { + "API Key": [] + } + ], + "description": "**Deprecated**: use [List Instance VPCs](#operation/list-instance-vpcs) instead.

List the private networks for an Instance.", + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ], + "deprecated": true + } + }, + "/instances/{instance-id}/vpcs": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "get": { + "summary": "List instance VPCs", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/vpcs\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "private_networks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/vpc" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "vpcs": [ + { + "id": "d325e78b-bcec-4d4e-b9b8-9c294f37b04d", + "mac_address": "00:00:5e:00:53:5e", + "ip_address": "10.99.0.123" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-instance-vpcs", + "security": [ + { + "API Key": [] + } + ], + "description": "List the VPCs for an Instance.", + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + } + }, + "/instances/{instance-id}/vpc2": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "get": { + "summary": "List Instance VPC 2.0 Networks", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/vpc2\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpcs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/instance-vpc2" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "response": { + "value": { + "vpcs": [ + { + "id": "d325e78b-bcec-4d4e-b9b8-9c294f37b04d", + "mac_address": "00:00:5e:00:53:5e", + "ip_address": "10.99.0.123" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-instance-vpc2", + "security": [ + { + "API Key": [] + } + ], + "description": "List the VPC 2.0 networks for an Instance.", + "parameters": [ + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + } + }, + "/instances/{instance-id}/iso": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "get": { + "summary": "Get Instance ISO Status", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/iso\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "iso_status": { + "type": "object", + "properties": { + "iso_id": { + "description": "The [ISO id](#operation/list-isos).", + "type": "string" + }, + "state": { + "type": "string", + "description": "The status of this ISO.\n* ready\n* attached" + } + } + } + } + }, + "examples": { + "response": { + "value": { + "iso_status": { + "state": "ready", + "iso_id": "0532a75b-14e8-48b8-b27e-1ebcf382a804" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-instance-iso-status", + "description": "Get the ISO status for an Instance.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/instances/{instance-id}/iso/attach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true + } + ], + "post": { + "summary": "Attach ISO to Instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/iso/attach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"iso_id\" : \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "iso_status": { + "type": "object", + "properties": { + "state": { + "type": "string", + "description": "State of the ISO\n\n* ismounting" + }, + "iso_id": { + "type": "string", + "description": "The [ISO id](#operation/list-isos) being attached." + } + } + } + } + }, + "examples": { + "example": { + "value": { + "iso_status": { + "status": "ismounting", + "iso_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "attach-instance-iso", + "description": "Attach an ISO to an Instance.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "iso_id": { + "description": "The [ISO id](#operation/list-isos) to attach to this Instance.", + "type": "string" + } + } + }, + "examples": { + "request": { + "value": { + "iso_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ] + } + }, + "/instances/{instance-id}/iso/detach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Detach ISO from instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/iso/detach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "iso_status": { + "type": "object", + "properties": { + "state": { + "type": "string", + "description": "State of the ISO\n\n* isunmounting" + } + } + } + } + }, + "examples": { + "example": { + "value": { + "iso_status": { + "status": "isunmounting" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "detach-instance-iso", + "description": "Detach the ISO from an Instance.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/instances/{instance-id}/private-networks/attach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Attach Private Network to Instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/private-networks/attach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"network_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "attach-instance-network", + "description": "Attach Private Network to an Instance.

**Deprecated**: use [Attach VPC to Instance](#operation/attach-instance-vpc) instead.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "network_id": { + "type": "string", + "description": "The [Private Network id](#operation/list-networks) to attach to this Instance." + } + } + }, + "examples": { + "example": { + "value": { + "network_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "deprecated": true + } + }, + "/instances/{instance-id}/private-networks/detach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Detach Private Network from Instance.", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/private-networks/detach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"network_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "detach-instance-network", + "description": "Detach Private Network from an Instance.

**Deprecated**: use [Detach VPC from Instance](#operation/detach-instance-vpc) instead.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "network_id": { + "type": "string", + "description": "The [Private Network id](#operation/list-networks) to detach from this Instance." + } + } + }, + "examples": { + "example": { + "value": { + "network_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "deprecated": true + } + }, + "/instances/{instance-id}/vpcs/attach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Attach VPC to Instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/vpcs/attach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"vpc_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "attach-instance-vpc", + "description": "Attach a VPC to an Instance.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpc_id": { + "type": "string", + "description": "The [VPC ID](#operation/list-vpcs) to attach to this Instance." + } + } + }, + "examples": { + "example": { + "value": { + "vpc_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/instances/{instance-id}/vpcs/detach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Detach VPC from Instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/vpcs/detach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"vpc_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "detach-instance-vpc", + "description": "Detach a VPC from an Instance.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpc_id": { + "type": "string", + "description": "The [VPC ID](#operation/list-vpcs) to detach from this Instance." + } + } + }, + "examples": { + "example": { + "value": { + "vpc_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/instances/{instance-id}/vpc2/attach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Attach VPC 2.0 Network to Instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/vpc2/attach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"vpc_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n \"ip_address\": \"10.1.144.4\"\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "attach-instance-vpc2", + "description": "Attach a VPC 2.0 Network to an Instance.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpc_id": { + "type": "string", + "description": "The [VPC ID](#operation/list-vpc2) to attach to this Instance." + }, + "ip_address": { + "type": "string", + "description": "The IP address to use for this instance on the attached VPC 2.0 network. " + } + }, + "required": [ + "vpc_id" + ] + }, + "examples": { + "example": { + "value": { + "vpc_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "ip_address": "10.1.144.4" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/instances/{instance-id}/vpc2/detach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Detach VPC 2.0 Network from Instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/vpc2/detach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"vpc_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "detach-instance-vpc2", + "description": "Detach a VPC 2.0 Network from an Instance.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpc_id": { + "type": "string", + "description": "The [VPC ID](#operation/list-vpc2) to detach from this Instance." + } + }, + "required": [ + "vpc_id" + ] + }, + "examples": { + "example": { + "value": { + "vpc_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/instances/{instance-id}/backup-schedule": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Set Instance Backup Schedule", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/backup-schedule\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"type\": \"daily\",\n \"hour\": 10,\n \"dow\": 1,\n \"dom\": 1\n }'" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-instance-backup-schedule", + "description": "Set the backup schedule for an Instance in UTC. The `type` is required.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type of backup schedule:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | daily | Back up once per day at `hour`. |\n| | weekly | Back up once per week on `dow` at `hour`. |\n| | monthly | Back up each month at `dom` at `hour`. |\n| | daily\\_alt\\_even | Back up on even dates at `hour`. |\n| | daily\\_alt\\_odd | Back up on odd dates at `hour`. |" + }, + "hour": { + "description": "Hour of day to run in UTC.", + "type": "integer" + }, + "dow": { + "description": "Day of week to run.\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | 1 | Sunday |\n| | 2 | Monday |\n| | 3 | Tuesday |\n| | 4 | Wednesday |\n| | 5 | Thursday |\n| | 6 | Friday |\n| | 7 | Saturday |", + "type": "integer" + }, + "dom": { + "description": "Day of month to run. Use values between 1 and 28.", + "type": "integer" + } + }, + "required": [ + "type" + ] + }, + "examples": { + "request": { + "value": { + "type": "daily", + "hour": 10, + "dow": 1, + "dom": 1 + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "security": [ + { + "API Key": [] + } + ] + }, + "get": { + "summary": "Get Instance Backup Schedule", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/backup-schedule\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "backup_schedule": { + "$ref": "#/components/schemas/backup-schedule" + } + } + }, + "examples": { + "backup-schedule": { + "value": { + "backup_schedule": { + "enabled": true, + "type": "daily", + "next_scheduled_time_utc": "2020-07-28 00:00:00", + "hour": 10, + "dow": 1, + "dom": 1 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-instance-backup-schedule", + "description": "Get the backup schedule for an Instance.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/instances/{instance-id}/restore": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Restore Instance", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/restore\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"backup_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "object", + "properties": { + "restore_type": { + "type": "string" + }, + "restore_id": { + "type": "string" + }, + "status": { + "type": "string" + } + } + } + } + }, + "examples": { + "example": { + "value": { + "status": { + "restore_type": "backup_id", + "restore_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "status": "inprogress" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "restore-instance", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "backup_id": { + "type": "string", + "description": "The [Backup id](#operation/list-backups) used to restore this instance." + }, + "snapshot_id": { + "type": "string", + "description": "The [Snapshot id](#operation/list-snapshots) used to restore this instance." + } + } + }, + "examples": { + "request": { + "value": { + "backup_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Restore an Instance from either `backup_id` or `snapshot_id`.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/instances/{instance-id}/ipv4": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "get": { + "summary": "List Instance IPv4 Information", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv4\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ipv4s": { + "type": "array", + "items": { + "$ref": "#/components/schemas/baremetal-ipv4" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "ipv4": { + "value": { + "ipv4s": [ + { + "ip": "192.0.2.123", + "netmask": "255.255.254.0", + "gateway": "192.0.2.1", + "type": "main_ip", + "reverse": "host1.example.com" + }, + { + "ip": "203.0.113.123", + "netmask": "255.255.255.255", + "gateway": "", + "type": "secondary_ip", + "reverse": "host2.example.com" + }, + { + "ip": "10.99.0.123", + "netmask": "255.255.0.0", + "gateway": "", + "type": "private", + "reverse": "" + } + ], + "meta": { + "total": 3, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-instance-ipv4", + "security": [ + { + "API Key": [] + } + ], + "description": "List the IPv4 information for an Instance.", + "parameters": [ + { + "schema": { + "type": "boolean" + }, + "in": "query", + "name": "public_network", + "description": "If `true`, includes information about the public network adapter (such as MAC address) with the `main_ip` entry." + }, + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500.\n" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + }, + "post": { + "summary": "Create IPv4", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv4\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"reboot\" : true\n }'" + } + ], + "operationId": "create-instance-ipv4", + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {} + }, + "examples": { + "example": { + "value": { + "ipv4": { + "ip": "192.0.2.123", + "netmask": "255.255.254.0", + "gateway": "192.0.2.1", + "type": "secondary_ip", + "reverse": "192.0.2.123.vultr.com" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Create an IPv4 address for an Instance.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "reboot": { + "type": "boolean", + "description": "Set if the server is rebooted immediately after the IPv4 address is created.\n\n* true (default)\n* false" + } + } + }, + "examples": { + "example": { + "value": { + "reboot": true + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "tags": [ + "instances" + ] + } + }, + "/instances/{instance-id}/ipv6": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "get": { + "summary": "Get Instance IPv6 Information", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv6\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ipv6s": { + "type": "array", + "items": { + "$ref": "#/components/schemas/baremetal-ipv6" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "ipv6": { + "value": { + "ipv6s": [ + { + "ip": "2001:0db8:5:6bb:5400:02ff:fee5:3fe3", + "network": "2001:0db8:5:6bb::", + "network_size": 64, + "type": "main_ip" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-instance-ipv6", + "security": [ + { + "API Key": [] + } + ], + "description": "Get the IPv6 information for an VPS Instance." + } + }, + "/instances/{instance-id}/ipv6/reverse": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Create Instance Reverse IPv6", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv6/reverse\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ip\" : \"2001:0db8:5:6bb:5400:2ff:fee5:2\",\n \"reverse\" : \"foo.example.com\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-instance-reverse-ipv6", + "description": "Create a reverse IPv6 entry for an Instance. The `ip` and `reverse` attributes are required. IP address must be in full, expanded format.", + "parameters": [], + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ip": { + "type": "string", + "description": "The IPv6 address in full, expanded format." + }, + "reverse": { + "type": "string", + "description": "The IPv6 reverse entry." + } + }, + "required": [ + "ip", + "reverse" + ] + }, + "examples": { + "request": { + "value": { + "ip": "2001:0db8:0005:6bb0:5400:2ff0:fee5:0002", + "reverse": "foo.example.com" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "get": { + "summary": "List Instance IPv6 Reverse", + "operationId": "list-instance-ipv6-reverse", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "reverse_ipv6s": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reverse": { + "type": "string", + "description": "The IPv6 reverse entry." + }, + "ip": { + "type": "string", + "description": "The IPv6 address." + } + } + } + } + } + }, + "examples": { + "response": { + "value": { + "reverse_ipv6s": [ + { + "ip": "2001:0db8:5:6bb:5400:2ff:fee5:1", + "reverse": "foo.example.com" + } + ] + } + } + } + } + } + } + }, + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv6/reverse\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "description": "List the reverse IPv6 information for an Instance.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/instances/{instance-id}/ipv4/reverse": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Create Instance Reverse IPv4", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv4/reverse\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ip\" : \"192.0.2.123\",\n \"reverse\" : \"foo.example.com\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-instance-reverse-ipv4", + "description": "Create a reverse IPv4 entry for an Instance. The `ip` and `reverse` attributes are required. ", + "parameters": [], + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ip": { + "type": "string", + "description": "The IPv4 address." + }, + "reverse": { + "type": "string", + "description": "The IPv4 reverse entry." + } + }, + "required": [ + "ip", + "reverse" + ] + }, + "examples": { + "request": { + "value": { + "ip": "192.0.2.123", + "reverse": "foo.example.com" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/backups/{backup-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "backup-id", + "in": "path", + "required": true, + "description": "The [Backup id](#operation/list-backups)." + } + ], + "get": { + "summary": "Get a Backup", + "tags": [ + "backup" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/backups/{backup-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "backup": { + "$ref": "#/components/schemas/backup" + } + } + }, + "examples": { + "backup": { + "value": { + "backup": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "description": "Example Description", + "size": 10000000, + "status": "complete" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-backup", + "security": [ + { + "API Key": [] + } + ], + "description": "Get the information for the Backup." + } + }, + "/instances/{instance-id}/user-data": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "get": { + "summary": "Get Instance User Data", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/user-data\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "user_data": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The user-supplied, base64 encoded [user data](https://www.vultr.com/docs/manage-instance-user-data-with-the-vultr-metadata-api/) attached to this instance." + } + } + } + } + }, + "examples": { + "response": { + "value": { + "user_data": { + "data": "QmFzZTY0IEV4YW1wbGUgRGF0YQ==" + } + } + } + } + } + } + } + }, + "operationId": "get-instance-userdata", + "security": [ + { + "API Key": [] + } + ], + "description": "Get the user-supplied, base64 encoded [user data](https://www.vultr.com/docs/manage-instance-user-data-with-the-vultr-metadata-api/) for an Instance." + } + }, + "/instances/{instance-id}/halt": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Halt Instance", + "operationId": "halt-instance", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Halt an Instance.", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/halt\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "instances" + ] + } + }, + "/instances/{instance-id}/ipv4/reverse/default": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "post": { + "summary": "Set Default Reverse DNS Entry", + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/reverse/default\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ip\" : \"192.0.2.123\"\n }'" + } + ], + "operationId": "post-instances-instance-id-ipv4-reverse-default", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Set a reverse DNS entry for an IPv4 address", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ip": { + "type": "string" + } + }, + "required": [ + "ip" + ] + }, + "examples": { + "example": { + "value": { + "ip": "192.0.2.123" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "tags": [ + "instances" + ] + } + }, + "/instances/{instance-id}/ipv4/{ipv4}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + }, + { + "schema": { + "type": "string" + }, + "name": "ipv4", + "in": "path", + "required": true, + "description": "The IPv4 address." + } + ], + "delete": { + "summary": "Delete IPv4 Address", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv4/{ipv4}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "operationId": "delete-instance-ipv4", + "description": "Delete an IPv4 address from an Instance.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [] + } + }, + "/instances/{instance-id}/ipv6/reverse/{ipv6}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + }, + { + "schema": { + "type": "string" + }, + "name": "ipv6", + "in": "path", + "required": true, + "description": "The IPv6 address." + } + ], + "delete": { + "summary": "Delete Instance Reverse IPv6", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv6/reverse/{ipv6}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "operationId": "delete-instance-reverse-ipv6", + "description": "Delete the reverse IPv6 for an Instance.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/instances/{instance-id}/upgrades": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "instance-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "get": { + "summary": "Get Available Instance Upgrades", + "tags": [ + "instances" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/upgrades\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "upgrades": { + "type": "object", + "properties": { + "applications": { + "type": "array", + "items": {} + }, + "plans": { + "type": "array", + "items": {} + }, + "os": { + "type": "array", + "items": {} + } + } + } + } + }, + "examples": { + "example": { + "value": { + "upgrades": { + "os": [ + { + "id": 900, + "name": "Example CentOS 6 x64", + "arch": "x64", + "family": "centos" + }, + { + "id": 901, + "name": "Example CentOS 6 i386", + "arch": "i386", + "family": "centos" + } + ], + "applications": [ + { + "id": 1, + "name": "LEMP", + "short_name": "lemp", + "deploy_name": "LEMP on CentOS 6 x64", + "type": "one-click", + "vendor": "vultr", + "image_id": "" + }, + { + "id": 39, + "name": "LEMP", + "short_name": "lemp", + "deploy_name": "LEMP on CentOS 7 x64", + "type": "one-click", + "vendor": "vultr", + "image_id": "" + }, + { + "id": 1028, + "name": "OpenLiteSpeed WordPress", + "short_name": "openlitespeedwordpress", + "deploy_name": "OpenLiteSpeed WordPress on Ubuntu 20.04 x64", + "type": "marketplace", + "vendor": "LiteSpeed_Technologies", + "image_id": "openlitespeed-wordpress" + } + ], + "plans": [ + "vc2-2c-4gb", + "vc2-4c-8gb", + "vc2-6c-16gb", + "vc2-8c-64gb", + "vc2-16c-64gb", + "vc2-24c-97gb" + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-instance-upgrades", + "description": "Get available upgrades for an Instance", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "type", + "description": "Filter upgrade by type:\n\n- all (applications, os, plans)\n- applications\n- os\n- plans" + } + ] + } + }, + "/bare-metals/{baremetal-id}/upgrades": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [Bare Metal id](#operation/list-baremetals)." + } + ], + "get": { + "summary": "Get Available Bare Metal Upgrades", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/upgrades\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "upgrades": { + "type": "object", + "description": "This object will contain the available Bare Metal Upgrades", + "properties": { + "applications": { + "type": "array", + "items": {} + }, + "os": { + "type": "array", + "items": {} + } + } + } + } + }, + "examples": { + "example": { + "value": { + "upgrades": { + "os": [ + { + "id": 127, + "name": "CentOS 6 x64", + "arch": "x64", + "family": "centos" + }, + { + "id": 147, + "name": "CentOS 6 i386", + "arch": "i386", + "family": "centos" + } + ], + "applications": [ + { + "id": 1, + "name": "LEMP", + "short_name": "lemp", + "deploy_name": "LEMP on CentOS 6 x64", + "type": "one-click", + "vendor": "vultr", + "image_id": "" + }, + { + "id": 39, + "name": "LEMP", + "short_name": "lemp", + "deploy_name": "LEMP on CentOS 7 x64", + "type": "one-click", + "vendor": "vultr", + "image_id": "" + }, + { + "id": 1028, + "name": "OpenLiteSpeed WordPress", + "short_name": "openlitespeedwordpress", + "deploy_name": "OpenLiteSpeed WordPress on Ubuntu 20.04 x64", + "type": "marketplace", + "vendor": "LiteSpeed_Technologies", + "image_id": "openlitespeed-wordpress" + } + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-bare-metals-upgrades", + "description": "Get available upgrades for a Bare Metal", + "parameters": [ + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "type", + "description": "Filter upgrade by type:\n\n- all (applications, plans)\n- applications\n- os" + } + ], + "security": [ + { + "API Key": [] + } + ] + } + }, + "/bare-metals/{baremetal-id}/vnc": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [Bare Metal id](#operation/list-baremetals)." + } + ], + "get": { + "summary": "Get VNC URL for a Bare Metal", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/vnc\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vnc": { + "type": "object", + "description": "This object will contain the VNC URL for the Bare Metal Instance", + "properties": { + "url": { + "type": "string", + "description": "This is the VNC URL for the Bare Metal Instance" + } + } + } + } + }, + "examples": { + "example": { + "value": { + "vnc": { + "url": "https://my.vultr.com/subs/baremetal/novnc/api.php?data=00example11223344" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-bare-metal-vnc", + "description": "Get the VNC URL for a Bare Metal", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/bare-metals/{baremetal-id}/vpc2/attach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [Bare Metal ID](#operation/list-baremetals)." + } + ], + "post": { + "summary": "Attach VPC 2.0 Network to Bare Metal Instance", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/vpc2/attach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"vpc_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n \"ip_address\": \"10.1.144.4\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "attach-baremetals-vpc2", + "description": "Attach a VPC 2.0 Network to a Bare Metal Instance.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpc_id": { + "type": "string", + "description": "The [VPC ID](#operation/list-vpc2) to attach to this Bare Metal Instance." + }, + "ip_address": { + "type": "string", + "description": "The IP address to use for this instance on the attached VPC 2.0 network. " + } + } + }, + "examples": { + "example": { + "value": { + "vpc_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "ip_address": "10.1.144.4" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/bare-metals/{baremetal-id}/vpc2/detach": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [bare-metal ID](#operation/list-baremetals)." + } + ], + "post": { + "summary": "Detach VPC 2.0 Network from Bare Metal Instance", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/vpc2/detach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"vpc_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "detach-baremetal-vpc2", + "description": "Detach a VPC 2.0 Network from an Bare Metal Instance.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpc_id": { + "type": "string", + "description": "The [VPC ID](#operation/list-vpc2) to detach from this Bare Metal Instance." + } + } + }, + "examples": { + "example": { + "value": { + "vpc_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/bare-metals/{baremetal-id}/vpc2": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "baremetal-id", + "in": "path", + "required": true, + "description": "The [Bare Metal ID](#operation/list-baremetals)." + } + ], + "get": { + "summary": "List Bare Metal Instance VPC 2.0 Networks", + "tags": [ + "baremetal" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/vpc2\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vpcs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/instance-vpc2" + } + } + } + }, + "examples": { + "response": { + "value": { + "vpcs": [ + { + "id": "d325e78b-bcec-4d4e-b9b8-9c294f37b04d", + "mac_address": "00:00:5e:00:53:5e", + "ip_address": "10.99.0.123" + } + ] + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-baremetal-vpc2", + "security": [ + { + "API Key": [] + } + ], + "description": "List the VPC 2.0 networks for a Bare Metal Instance." + } + }, + "/load-balancers/{loadbalancer-id}/firewall-rules": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "loadbalancer-id", + "in": "path", + "required": true + } + ], + "get": { + "summary": "List Firewall Rules", + "tags": [ + "load-balancer" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/firewall-rules\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/loadbalancer-firewall-rule" + }, + "examples": { + "Response": { + "value": { + "firewall_rules": [ + { + "id": "asb123f2e6c0b60", + "port": 80, + "source": "24.187.16.196/16", + "ip_type": "v4" + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-loadbalancer-firewall-rules", + "description": "List the firewall rules for a Load Balancer.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "per_page", + "description": "Number of items requested per page. Default is 100 and Max is 500." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "cursor", + "description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)." + } + ] + } + }, + "/load-balancers/{loadbalancer-id}/firewall-rules/{firewall-rule-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "loadbalancer-id", + "in": "path", + "required": true + }, + { + "schema": { + "type": "string" + }, + "name": "firewall-rule-id", + "in": "path", + "required": true + } + ], + "get": { + "summary": "Get Firewall Rule", + "tags": [ + "load-balancer" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/firewall-rules/{firewall-rule-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/loadbalancer-firewall-rule" + }, + "examples": { + "Example": { + "value": { + "firewall_rule": { + "id": "asb123f2e6c0b60", + "port": 80, + "source": "24.187.16.196/16", + "ip_type": "v4" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-loadbalancer-firewall-rule", + "description": "Get a firewall rule for a Load Balancer.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/kubernetes/clusters": { + "post": { + "summary": "Create Kubernetes Cluster", + "tags": [ + "kubernetes" + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vke_cluster": { + "$ref": "#/components/schemas/vke-cluster" + } + } + }, + "examples": { + "example create response": { + "value": { + "vke_cluster": { + "id": "455dcd32-e621-48ee-a10e-0cb5f754e13e", + "firewall_group_id": "", + "label": "vke", + "date_created": "2021-07-07T22:57:01+00:00", + "cluster_subnet": "10.244.0.0/16", + "service_subnet": "10.96.0.0/12", + "ip": "0.0.0.0", + "endpoint": "455dcd32-e621-48ee-a10e-0cb5f754e13e.vultr-k8s.com", + "version": "v1.20.0+1", + "region": "lax", + "status": "pending", + "ha_controlplanes": false, + "node_pools": [ + { + "id": "11e4443a-f92a-46d6-94c8-61c1a1a7514e", + "date_created": "2021-07-07T22:57:01+00:00", + "date_updated": "2021-07-07T22:58:44+00:00", + "label": "my-label", + "tag": "my-tag", + "plan": "vc2-1c-2gb", + "status": "pending", + "node_quantity": 2, + "min_nodes": 2, + "max_nodes": 5, + "auto_scaler": true, + "nodes": [ + { + "id": "43eda5c8-67f7-4c63-88bc-2f568b48b2b0", + "label": "my-label-6ac60e6313dd1", + "date_created": "2021-07-07T22:57:01+00:00", + "status": "pending" + }, + { + "id": "15a7893d-d584-45d5-a74c-d9f46866aa3c", + "label": "my-label-6ac60e6313ddc", + "date_created": "2021-07-07T22:57:01+00:00", + "status": "pending" + } + ] + } + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-kubernetes-cluster", + "description": "Create Kubernetes Cluster", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "The label for your Kubernetes cluster." + }, + "region": { + "type": "string", + "description": "Region you want to deploy VKE in. See [Regions](#tag/region) for more information." + }, + "version": { + "type": "string", + "description": "Version of Kubernetes you want to deploy." + }, + "ha_controlplanes": { + "type": "boolean", + "description": "Whether a highly available control planes configuration should be deployed\n* true\n* false (default)" + }, + "enable_firewall": { + "type": "boolean", + "description": "Whether a [Firewall Group](#tag/firewall) should be deployed and managed by this cluster\n* true\n* false (default)" + }, + "node_pools": { + "type": "array", + "items": { + "type": "object", + "properties": { + "node_quantity": { + "type": "integer", + "description": "Number of instances to deploy in this nodepool. Minimum of 1 node required, but at least 3 is recommended." + }, + "label": { + "type": "string", + "description": "Label for this nodepool. You cannot change the label after a nodepool is created. You cannot have duplicate node pool labels in the same cluster." + }, + "plan": { + "type": "string", + "description": "Plan you want this nodepool to use. Note: minimum plan must be $10" + }, + "tag": { + "type": "string", + "description": "Tag for node pool" + }, + "auto_scaler": { + "type": "boolean", + "description": "Option to use the auto scaler with your cluster. Default false." + }, + "min_nodes": { + "type": "integer", + "description": "Auto scaler field for minimum nodes you want for your cluster. Default 1." + }, + "max_nodes": { + "type": "integer", + "description": "Auto scaler field for maximum nodes you want for your cluster. Default 1." + } + }, + "required": [ + "node_quantity", + "label", + "plan" + ] + } + } + }, + "required": [ + "region", + "version" + ] + }, + "examples": { + "example request": { + "value": { + "label": "vke", + "region": "lax", + "version": "v1.20.0+1", + "node_pools": [ + { + "node_quantity": 2, + "min_nodes": 2, + "max_nodes": 5, + "auto_scaler": true, + "label": "my-label", + "plan": "vc2-1c-2gb", + "tag": "my-tag" + } + ] + } + } + } + } + }, + "description": "Request Body" + }, + "security": [ + { + "API Key": [] + } + ] + }, + "get": { + "summary": "List all Kubernetes Clusters", + "tags": [ + "kubernetes" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vke_clusters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/vke-cluster" + } + } + } + }, + "examples": { + "example response": { + "value": { + "vke_clusters": [ + { + "id": "c907e832-3080-48a6-a54d-7379e645c0b7", + "label": "my-vke", + "date_created": "2021-07-02T12:12:43+00:00", + "cluster_subnet": "10.244.0.0/16", + "service_subnet": "10.96.0.0/12", + "ip": "8.9.30.155", + "endpoint": "c907e832-3080-48a6-a54d-7379e645c0b7.vultr-k8s.com", + "version": "v1.20.0+1", + "region": "ewr", + "status": "active", + "ha_controlplanes": false, + "node_pools": [ + { + "id": "74de1914-63ea-4a78-9da5-b7220063c701", + "date_created": "2021-07-02T12:12:44+00:00", + "date_updated": "2021-07-03T12:12:44+00:00", + "label": "nodepool", + "tag": "my-tag", + "plan": "vc2-1c-2gb", + "status": "active", + "node_quantity": 2, + "min_nodes": 2, + "max_nodes": 5, + "auto_scaler": true, + "nodes": [ + { + "id": "cafd4673-2a62-49c4-a045-44d05ecc0a7b", + "label": "nodepool-6a960df02bc1b", + "date_created": "2021-07-02T12:12:44+00:00", + "status": "active" + }, + { + "id": "5fc5ae88-f73e-46b5-9fa1-ac5ed8dcd33c", + "label": "nodepool-6a960df02bc25", + "date_created": "2021-07-02T12:12:44+00:00", + "status": "active" + } + ] + } + ] + }, + { + "id": "455dcd32-e621-48ee-a10e-0cb5f754e13e", + "label": "vke", + "date_created": "2021-07-07T22:57:01+00:00", + "cluster_subnet": "10.244.0.0/16", + "service_subnet": "10.96.0.0/12", + "ip": "207.246.109.187", + "endpoint": "455dcd32-e621-48ee-a10e-0cb5f754e13e.vultr-k8s.com", + "version": "v1.20.0+1", + "region": "lax", + "status": "active", + "node_pools": [ + { + "id": "11e4443a-f92a-46d6-94c8-61c1a1a7514e", + "date_created": "2021-07-07T22:57:01+00:00", + "date_updated": "2021-07-08T12:12:44+00:00", + "label": "my-label", + "tag": "my-tag", + "plan": "vc2-1c-2gb", + "status": "active", + "node_quantity": 2, + "min_nodes": 2, + "max_nodes": 5, + "auto_scaler": true, + "nodes": [ + { + "id": "43eda5c8-67f7-4c63-88bc-2f568b48b2b0", + "label": "my-label-6ac60e6313dd1", + "date_created": "2021-07-07T22:57:01+00:00", + "status": "active" + }, + { + "id": "15a7893d-d584-45d5-a74c-d9f46866aa3c", + "label": "my-label-6ac60e6313ddc", + "date_created": "2021-07-07T22:57:01+00:00", + "status": "active" + } + ] + } + ] + } + ], + "meta": { + "total": 2, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-kubernetes-clusters", + "description": "List all Kubernetes clusters currently deployed", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/kubernetes/clusters/{vke-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vke-id", + "in": "path", + "required": true, + "description": "The [VKE ID](#operation/list-kubernetes-clusters)." + } + ], + "get": { + "summary": "Get Kubernetes Cluster", + "tags": [ + "kubernetes" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "vke_cluster": { + "$ref": "#/components/schemas/vke-cluster" + } + } + }, + "examples": { + "example response": { + "value": { + "vke_cluster": { + "id": "455dcd32-e621-48ee-a10e-0cb5f754e13e", + "firewall_group_id": "", + "label": "vke", + "date_created": "2021-07-07T22:57:01+00:00", + "cluster_subnet": "10.244.0.0/16", + "service_subnet": "10.96.0.0/12", + "ip": "207.246.109.187", + "endpoint": "455dcd32-e621-48ee-a10e-0cb5f754e13e.vultr-k8s.com", + "version": "v1.20.0+1", + "region": "lax", + "status": "active", + "ha_controlplanes": false, + "node_pools": [ + { + "id": "11e4443a-f92a-46d6-94c8-61c1a1a7514e", + "date_created": "2021-07-07T22:57:01+00:00", + "date_updated": "2021-07-08T12:12:44+00:00", + "label": "my-label", + "tag": "my-tag", + "plan": "vc2-1c-2gb", + "status": "active", + "node_quantity": 2, + "min_nodes": 2, + "max_nodes": 5, + "auto_scaler": true, + "nodes": [ + { + "id": "43eda5c8-67f7-4c63-88bc-2f568b48b2b0", + "label": "my-label-6ac60e6313dd1", + "date_created": "2021-07-07T22:57:01+00:00", + "status": "active" + }, + { + "id": "15a7893d-d584-45d5-a74c-d9f46866aa3c", + "label": "my-label-6ac60e6313ddc", + "date_created": "2021-07-07T22:57:01+00:00", + "status": "active" + } + ] + } + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-kubernetes-clusters", + "description": "Get Kubernetes Cluster", + "security": [ + { + "API Key": [] + } + ] + }, + "put": { + "summary": "Update Kubernetes Cluster", + "tags": [ + "kubernetes" + ], + "responses": { + "204": { + "description": "No Content", + "headers": {} + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "update-kubernetes-cluster", + "description": "Update Kubernetes Cluster", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "Label for the Kubernetes cluster" + } + }, + "required": [ + "label" + ] + }, + "examples": { + "example-1": { + "value": { + "label": "my new label" + } + } + } + } + }, + "description": "Request Body" + }, + "security": [ + { + "API Key": [] + } + ] + }, + "delete": { + "summary": "Delete Kubernetes Cluster", + "tags": [ + "kubernetes" + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-kubernetes-cluster", + "description": "Delete Kubernetes Cluster", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/kubernetes/clusters/{vke-id}/delete-with-linked-resources": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vke-id", + "in": "path", + "required": true + } + ], + "delete": { + "summary": "Delete VKE Cluster and All Related Resources", + "tags": [ + "kubernetes" + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-kubernetes-cluster-vke-id-delete-with-linked-resources", + "description": "Delete Kubernetes Cluster and all related resources. ", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/kubernetes/clusters/{vke-id}/resources": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vke-id", + "in": "path", + "required": true, + "description": "The [VKE ID](#operation/list-kubernetes-clusters)." + } + ], + "get": { + "summary": "Get Kubernetes Resources", + "tags": [ + "kubernetes" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "resources": { + "block_storage": [ + { + "id": "7eb35f6c-c4fa-4835-9548-d4730912cbd4", + "label": "track-again3", + "date_created": "2021-07-29T16:41:07+00:00", + "status": "pending" + }, + { + "id": "6d1526c9-2d55-4f6b-a775-0024ec5048f0", + "label": "tracking", + "date_created": "2021-08-04T15:34:50+00:00", + "status": "pending" + } + ], + "load_balancer": [ + { + "id": "04a27709-8d3d-42c2-ae69-c7d8ae6155d8", + "label": "tracking8", + "date_created": "2021-07-29T16:46:12+00:00", + "status": "active" + } + ] + } + } + }, + "properties": { + "resources": { + "type": "object", + "properties": { + "block_storage": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1, + "description": "Unique identifier for the block storage volume" + }, + "label": { + "type": "string", + "minLength": 1, + "description": "Label given to the block storage volume" + }, + "date_created": { + "type": "string", + "minLength": 1, + "description": "Date the block storage volume was created" + }, + "status": { + "type": "string", + "minLength": 1, + "description": "Status of the block storage volume" + } + } + } + }, + "load_balancer": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1, + "description": "Unique identifier for the load balancer" + }, + "label": { + "type": "string", + "minLength": 1, + "description": "Label given to the load balancer" + }, + "date_created": { + "type": "string", + "minLength": 1, + "description": "Date the load balancer was created" + }, + "status": { + "type": "string", + "minLength": 1, + "description": "Status of the load balancer" + } + } + } + } + } + } + } + }, + "examples": { + "example": { + "value": { + "resources": { + "block_storage": [ + { + "id": "29479a12-6edd-48cf-a883-24eccafab094", + "label": "29479a12-6edd-48cf-a883-24eccafab094", + "date_created": "2021-07-29T16:41:07+00:00", + "status": "active" + }, + { + "id": "0fa3097e-aef9-475e-958a-56f697ed3998", + "label": "0fa3097e-aef9-475e-958a-56f697ed3998", + "date_created": "2021-08-04T15:34:50+00:00", + "status": "pending" + } + ], + "load_balancer": [ + { + "id": "369ed902-2ec4-4a22-b959-cb1709394c3a", + "label": "369ed902-2ec4-4a22-b959-cb1709394c3a", + "date_created": "2021-07-29T16:46:12+00:00", + "status": "active" + } + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-kubernetes-resources", + "description": "Get the block storage volumes and load balancers deployed by the specified Kubernetes cluster.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/kubernetes/clusters/{vke-id}/available-upgrades": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vke-id", + "in": "path", + "required": true, + "description": "The [VKE ID](#operation/list-kubernetes-clusters)." + } + ], + "get": { + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/kubernetes/clusters/{vke-id}/available-upgrades\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "summary": "Get Kubernetes Available Upgrades", + "tags": [ + "kubernetes" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "available_upgrades": [ + "v1.22.8+3", + "v1.21.11+3" + ] + } + }, + "properties": { + "available_upgrades": { + "type": "array", + "description": "Array of available upgrade version strings", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "example": { + "value": { + "available_upgrades": [ + "v1.22.8+3", + "v1.21.11+3" + ] + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-kubernetes-available-upgrades", + "description": "Get the available upgrades for the specified Kubernetes cluster.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/kubernetes/clusters/{vke-id}/upgrades": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vke-id", + "in": "path", + "required": true, + "description": "The [VKE ID](#operation/list-kubernetes-clusters)." + } + ], + "post": { + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/kubernetes/clusters/{vke-id}/upgrades\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"upgrade_version\" : \"v1.22.8+3\"\n }'" + } + ], + "summary": "Start Kubernetes Cluster Upgrade", + "tags": [ + "kubernetes" + ], + "responses": { + "202": { + "description": "Accepted" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "start-kubernetes-cluster-upgrade", + "description": "Start a Kubernetes cluster upgrade.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "upgrade_version": { + "type": "string", + "description": "The version you're upgrading to." + } + }, + "required": [ + "upgrade_version" + ] + }, + "examples": { + "example request": { + "value": { + "upgrade_version": "v1.22.8+3" + } + } + } + } + }, + "description": "Request Body" + }, + "security": [ + { + "API Key": [] + } + ] + } + }, + "/kubernetes/clusters/{vke-id}/node-pools": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vke-id", + "in": "path", + "required": true, + "description": "The [VKE ID](#operation/list-kubernetes-clusters)." + } + ], + "post": { + "summary": "Create NodePool", + "tags": [ + "kubernetes" + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "node_pool": { + "$ref": "#/components/schemas/nodepools" + } + } + }, + "examples": { + "example response": { + "value": { + "node_pool": { + "id": "4130764b-5276-4552-546f-32513239732b", + "date_created": "2021-07-07T23:29:18+00:00", + "date_updated": "2021-07-08T23:29:18+00:00", + "label": "nodepool", + "tag": "my-tag", + "plan": "vc2-1c-2gb", + "status": "pending", + "node_quantity": 2, + "min_nodes": 2, + "max_nodes": 5, + "auto_scaler": true, + "nodes": [ + { + "id": "2f863151-d784-4184-804e-31e4e60945bd", + "label": "nodepool-6c360e638ce61", + "date_created": "2021-07-07T23:29:18+00:00", + "status": "pending" + }, + { + "id": "73a459dc-293f-4c2b-92f7-61be459a033b", + "label": "nodepool-6c360e638ce6c", + "date_created": "2021-07-07T23:29:18+00:00", + "status": "pending" + } + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "create-nodepools", + "description": "Create NodePool for a Existing Kubernetes Cluster", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "node_quantity": { + "type": "integer", + "description": "Number of instances in this nodepool" + }, + "label": { + "type": "string", + "description": "Label for the nodepool. You cannot change the label after a nodepool is created. You cannot have duplicate node pool labels in the same cluster." + }, + "plan": { + "type": "string", + "description": "Plan that this nodepool will use" + }, + "tag": { + "type": "string", + "description": "Tag for node pool" + }, + "auto_scaler": { + "type": "boolean", + "description": "Option to use the auto scaler with your cluster. Default false." + }, + "min_nodes": { + "type": "integer", + "description": "Auto scaler field for minimum nodes you want for your cluster. Default 1." + }, + "max_nodes": { + "type": "integer", + "description": "Auto scaler field for maximum nodes you want for your cluster. Default 1." + } + }, + "required": [ + "node_quantity", + "label", + "plan" + ] + }, + "examples": { + "request body example": { + "value": { + "node_quantity": 2, + "label": "nodepool", + "plan": "vc2-1c-2gb", + "tag": "my-tag", + "min_nodes": 2, + "max_nodes": 5, + "auto_scaler": true + } + } + } + } + }, + "description": "Request Body" + }, + "security": [ + { + "API Key": [] + } + ] + }, + "get": { + "summary": "List NodePools", + "tags": [ + "kubernetes" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "node_pools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/nodepools" + } + } + } + }, + "examples": { + "example response": { + "value": { + "node_pools": [ + { + "id": "e97bdee9-2781-4f31-be03-60fc75f399ae", + "date_created": "2021-07-07T23:27:08+00:00", + "date_updated": "2021-07-08T12:12:44+00:00", + "label": "my-label", + "tag": "my-tag", + "plan": "vc2-1c-2gb", + "status": "active", + "node_quantity": 2, + "min_nodes": 2, + "max_nodes": 5, + "auto_scaler": true, + "nodes": [ + { + "id": "f2e11430-76e5-4dc6-a1c9-ef5682c21ddf", + "label": "my-label-44060e6384c45", + "date_created": "2021-07-07T23:27:08+00:00", + "status": "active" + }, + { + "id": "c0a160eb-a7bc-4377-a6fb-52a9531167ca", + "label": "my-label-44060e6384c50", + "date_created": "2021-07-07T23:27:08+00:00", + "status": "active" + } + ] + }, + { + "id": "4130764b-5276-4552-546f-32513239732b", + "date_created": "2021-07-07T23:29:18+00:00", + "label": "nodepool", + "tag": "my-tag", + "plan": "vc2-1c-2gb", + "status": "active", + "node_quantity": 2, + "min_nodes": 2, + "max_nodes": 5, + "auto_scaler": true, + "nodes": [ + { + "id": "2f863151-d784-4184-804e-31e4e60945bd", + "label": "nodepool-6c360e638ce61", + "date_created": "2021-07-07T23:29:18+00:00", + "status": "active" + }, + { + "id": "73a459dc-293f-4c2b-92f7-61be459a033b", + "label": "nodepool-6c360e638ce6c", + "date_created": "2021-07-07T23:29:18+00:00", + "status": "active" + } + ] + } + ], + "meta": { + "total": 2, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-nodepools", + "description": "List all available NodePools on a Kubernetes Cluster", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/kubernetes/clusters/{vke-id}/node-pools/{nodepool-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vke-id", + "in": "path", + "required": true, + "description": "The [VKE ID](#operation/list-kubernetes-clusters)." + }, + { + "schema": { + "type": "string" + }, + "name": "nodepool-id", + "in": "path", + "required": true, + "description": "The [NodePool ID](#operation/get-nodepools)." + } + ], + "get": { + "summary": "Get NodePool", + "tags": [ + "kubernetes" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "node_pool": { + "$ref": "#/components/schemas/nodepools" + } + } + }, + "examples": { + "example response": { + "value": { + "node_pool": { + "id": "e97bdee9-2781-4f31-be03-60fc75f399ae", + "date_created": "2021-07-07T23:27:08+00:00", + "date_updated": "2021-07-08T12:12:44+00:00", + "label": "my-label", + "tag": "my-tag", + "plan": "vc2-1c-2gb", + "status": "active", + "node_quantity": 2, + "min_nodes": 2, + "max_nodes": 5, + "auto_scaler": true, + "nodes": [ + { + "id": "f2e11430-76e5-4dc6-a1c9-ef5682c21ddf", + "label": "my-label-44060e6384c45", + "date_created": "2021-07-07T23:27:08+00:00", + "status": "active" + }, + { + "id": "c0a160eb-a7bc-4377-a6fb-52a9531167ca", + "label": "my-label-44060e6384c50", + "date_created": "2021-07-07T23:27:08+00:00", + "status": "active" + } + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-nodepool", + "description": "Get Nodepool from a Kubernetes Cluster", + "security": [ + { + "API Key": [] + } + ] + }, + "patch": { + "summary": "Update Nodepool", + "tags": [ + "kubernetes" + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "node_pool": { + "$ref": "#/components/schemas/nodepools" + } + } + }, + "examples": { + "example-1": { + "value": { + "node_pool": { + "id": "e97bdee9-2781-4f31-be03-60fc75f399ae", + "date_created": "2021-07-07T23:27:08+00:00", + "date_updated": "2021-07-08T12:12:44+00:00", + "label": "my-label", + "tag": "my-tag", + "plan": "vc2-1c-2gb", + "status": "active", + "node_quantity": 1, + "min_nodes": 1, + "max_nodes": 5, + "auto_scaler": true, + "nodes": [ + { + "id": "f2e11430-76e5-4dc6-a1c9-ef5682c21ddf", + "label": "my-label-44060e6384c45", + "date_created": "2021-07-07T23:27:08+00:00", + "status": "active" + } + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "update-nodepool", + "description": "Update a Nodepool on a Kubernetes Cluster", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "node_quantity": { + "type": "integer", + "description": "Number of instances in the NodePool. Minimum of 1 is required, but at least 3 is recommended." + }, + "tag": { + "type": "string", + "description": "Tag for your node pool" + }, + "auto_scaler": { + "type": "boolean", + "description": "Option to use the auto scaler for your cluster. Default false." + }, + "min_nodes": { + "type": "integer", + "description": "Auto scaler field for minimum nodes you want for your cluster. Default 1." + }, + "max_nodes": { + "description": "Auto scaler field for maximum nodes you want for your cluster. Default 1.", + "type": "integer" + } + } + }, + "examples": { + "example-1": { + "value": { + "node_quantity": 1, + "tag": "my-tag", + "min_nodes": 1, + "max_nodes": 5, + "auto_scaler": true + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "node_quantity": { + "type": "integer", + "description": "Number of instances in the nodepool. Minimum of 1 is required, but at least 3 is recommended." + } + }, + "required": [ + "node_quantity" + ] + } + } + }, + "description": "Request Body" + }, + "security": [ + { + "API Key": [] + } + ] + }, + "delete": { + "summary": "Delete Nodepool", + "tags": [ + "kubernetes" + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-nodepool", + "description": "Delete a NodePool from a Kubernetes Cluster", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/kubernetes/clusters/{vke-id}/node-pools/{nodepool-id}/nodes/{node-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vke-id", + "in": "path", + "required": true, + "description": "The [VKE ID](#operation/list-kubernetes-clusters)." + }, + { + "schema": { + "type": "string" + }, + "name": "nodepool-id", + "in": "path", + "required": true, + "description": "The [NodePool ID](#operation/get-nodepools)." + }, + { + "schema": { + "type": "string" + }, + "name": "node-id", + "in": "path", + "required": true, + "description": "The [Instance ID](#operation/list-instances)." + } + ], + "delete": { + "summary": "Delete NodePool Instance", + "tags": [ + "kubernetes" + ], + "operationId": "delete-nodepool-instance", + "security": [ + { + "API Key": [] + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete a single nodepool instance from a given Nodepool" + } + }, + "/kubernetes/clusters/{vke-id}/node-pools/{nodepool-id}/nodes/{node-id}/recycle": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vke-id", + "in": "path", + "required": true, + "description": "The [VKE ID](#operation/list-kubernetes-clusters)." + }, + { + "schema": { + "type": "string" + }, + "name": "nodepool-id", + "in": "path", + "required": true, + "description": "The [NodePool ID](#operation/get-nodepools)." + }, + { + "schema": { + "type": "string" + }, + "name": "node-id", + "in": "path", + "required": true, + "description": "Node ID" + } + ], + "post": { + "summary": "Recycle a NodePool Instance", + "tags": [ + "kubernetes" + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "recycle-nodepool-instance", + "description": "Recycle a specific NodePool Instance", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/kubernetes/clusters/{vke-id}/config": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vke-id", + "in": "path", + "required": true, + "description": "The [VKE ID](#operation/list-kubernetes-clusters)." + } + ], + "get": { + "summary": "Get Kubernetes Cluster Kubeconfig", + "tags": [ + "kubernetes" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "kube_config": { + "type": "string", + "description": "Base64 encoded KubeConfig" + } + } + }, + "examples": { + "example response": { + "value": { + "kube_config": "YXBpdmVyc2lvbjogdjEKY2x1c3RlcnM6Ci0gY2x1c3RlcjoKICAgIGNlcnRpZmljYXRlLWF1dGhvcml0eS1kYXRhOiBMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VSblZFTkRRVzF0WjBGM1NVSkJaMGxKU2psdFN6bEViRk5pY0RSM1JGRlpTa3R2V2tsb2RtTk9RVkZGVEVKUlFYZFVla1ZNVFVGclIwRXhWVVVLUW1oTlExWldUWGhHYWtGVlFtZE9Wa0pCWTFSRVZrNW9ZbWxDUjJOdFJuVlpNbXg2V1RJNGVFVjZRVkpDWjA1V1FrRnZWRU5yZERGWmJWWjVZbTFXTUFwYVdFMTRSWHBCVWtKblRsWkNRVTFVUTJ0ME1WbHRWbmxpYlZZd1dsaE5kMGhvWTA1TmFrVjNUbnBCZVUxVVNYaE5la0Y1VjJoalRrMXFTWGRPZWtGNUNrMVVTWGhOZWtGNVYycENVRTFSYzNkRFVWbEVWbEZSUjBWM1NsWlZla1ZYVFVKUlIwRXhWVVZDZUUxT1ZUSkdkVWxGV25sWlZ6VnFZVmhPYW1KNlJWUUtUVUpGUjBFeFZVVkRhRTFMVXpOV2FWcFlTblZhV0ZKc1kzcEZWRTFDUlVkQk1WVkZRWGhOUzFNelZtbGFXRXAxV2xoU2JHTjZRME5CVTBsM1JGRlpTZ3BMYjFwSmFIWmpUa0ZSUlVKQ1VVRkVaMmRGVUVGRVEwTkJVVzlEWjJkRlFrRk1laTlITXpOaVlWZG5TMU5GVmpKQ2RsQlhZbWd6WkhZclYybEhOVlJqQ2s1bllVTlZNMlJWVm5KdGNtaHVXbVJPYWtkTVl5OUJTR3RIWm1OaVIxQlRXbkJ2UVZCbWFuaGtWRTA0WlVOTFlXdGxkR0Z6YkRsdFNDOVhlVTlETXpnS1pGcEZVWGRSZWpseFIzWnpaa3BTT0RKQ01WWTBWM3AxUVdRMEwxSmtaVGxqU3psaVdIWktkRUZMU2xrNVF6aG9VM2RtTDNNM1drRlNabGxYYTIxb1R3cHZkSHBFUnpaR2JtaFljSFJtUkRZdmRXNXNXRWhyYTNveFVHSjZhR1Z2ZG5adU9GUkNUamR2UWpkTVdUaG9kRE5tVTBJeFEwSlRTMGxxV1hsaGJEaHJDbU5XZVU1R1MyUndVRVoxV0ZvelkyYzRaMHN2ZUROS1VXZHBLMGxqVTA0Mk9GZDJaa3gxYXpjM2JXOXNWWE5IY25neWNWRkZTa2RwU2k5SGEzUm5kMndLWlVnNU1FbHpMMkZDZERjd1dsaG9aM2cyTnpkSmVuTnVWMnN3UWpWSFlVeGpaRk5oYUN0WlNraGthbkpMU0N0R01qVTNWekpvTUVOQmQwVkJRV0ZPYUFwTlJqaDNSR2RaUkZaU01GQkJVVWd2UWtGUlJFRm5TMFZOUWpCSFFURlZaRXBSVVZkTlFsRkhRME56UjBGUlZVWkNkMDFEUW1kbmNrSm5SVVpDVVdORUNrRlVRVkJDWjA1V1NGSk5Ra0ZtT0VWQ1ZFRkVRVkZJTDAxQ01FZEJNVlZrUkdkUlYwSkNVME5EVWtoSmFERm1XbnBzU210MFMwVmtOalpITVZWWGRqQUtNRVJCVGtKbmEzRm9hMmxIT1hjd1FrRlJjMFpCUVU5RFFWRkZRV0V3VG1SUVlYa3dPREp0YVcxWllUa3ZOVVpMY1hWa1YwSmpabVpHVkVScFdrTmljUXA1YVUxNFZXeEVTQzl6Tm1Od1YzbEJORXRuY0ZGRWMySXdiM0pzYTNwTk1ERjNieTlsTUc1clUxTTFVVkIyWVZvNU9FaFNObFlyTUV4a0swZzViM1JCQ2xZM2VUbEdlQzlJVUhCdldGWTJhVWswYWpCaVpFdFBNMHQ0VUZKVWRsaDFRMUZETTNRd2FHc3pjVnBRSzFSalNEaHhWRTV6VkVwb1JGTnlSMWRLUjNvS1dqZ3liMGwwY0c5RVRsaEJZVUpqYmxSRmNUUkNXRzFoTTJVNVJHSkpVMU5SZW5aaGFIYzBWMkZwVTFWNGVYUllVakJ5Um1oaFpFUnpkbFJuVVhZNGF3cEdlbkV5TjNkS2RUaHZUV2hIWTJWb2VGUlRXVUpyWjNGWVUzYzNPR2xsTVZadk1XVlBMMGxTYlhsM1ZtMWlhM2M1TWswcldtZFdOV0Z3VERCNlNYRnNDbFEzWmtkekszWTViREkwYkM4eGFIbExVekZCU1ZKTmVrRkljMGw1YVdWdE1GUkZUM0Z6WVVVNVFYWjBlWEZZZEZKblBUMEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0KICAgIHNlcnZlcjogaHR0cHM6Ly9jOTA3ZTgzMi0zMDgwLTQ4YTYtYTU0ZC03Mzc5ZTY0NWMwYjcudnVsdHItazhzLmNvbTo2NDQzCiAgbmFtZTogdmtlCmNvbnRleHRzOgotIGNvbnRleHQ6CiAgICBjbHVzdGVyOiB2a2UKICAgIHVzZXI6IGFkbWluCiAgbmFtZTogdmtlCmN1cnJlbnQtY29udGV4dDogdmtlCmtpbmQ6IENvbmZpZwpwcmVmZXJlbmNlczoge30KdXNlcnM6Ci0gbmFtZTogYWRtaW4KICB1c2VyOgogICAgY2xpZW50LWNlcnRpZmljYXRlLWRhdGE6IExTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVVJWUkVORFFXcHBaMEYzU1VKQlowbEpUVmg0VTFOSGRFRnliR2QzUkZGWlNrdHZXa2xvZG1OT1FWRkZURUpSUVhkVWVrVk1UVUZyUjBFeFZVVUtRbWhOUTFaV1RYaEdha0ZWUW1kT1ZrSkJZMVJFVms1b1ltbENSMk50Um5WWk1teDZXVEk0ZUVWNlFWSkNaMDVXUWtGdlZFTnJkREZaYlZaNVltMVdNQXBhV0UxNFJYcEJVa0puVGxaQ1FVMVVRMnQwTVZsdFZubGliVll3V2xoTmQwaG9ZMDVOYWtWM1RucEJlVTFVU1hoTmVrRjVWMmhqVGsxcVNYZE9la0Y1Q2sxVVNYaE5la0Y1VjJwQ1QwMVJjM2REVVZsRVZsRlJSMFYzU2xaVmVrVlhUVUpSUjBFeFZVVkNlRTFPVlRKR2RVbEZXbmxaVnpWcVlWaE9hbUo2UlZnS1RVSlZSMEV4VlVWRGFFMVBZek5zZW1SSFZuUlBiVEZvWXpOU2JHTnVUWGhFYWtGTlFtZE9Wa0pCVFZSQ1YwWnJZbGRzZFUxSlNVSkpha0ZPUW1kcmNRcG9hMmxIT1hjd1FrRlJSVVpCUVU5RFFWRTRRVTFKU1VKRFowdERRVkZGUVhselRIVndNSHBvYXpsUFVHODVWa05TTUZSbmJ6UTFORThyV0hOTVEyUXhDbE5CWVdKNmFtMVJaM1pEVVZKeFdEaEZUa0Z0VW5kbVdFUjNaRkJMWTFkbmFtcHpRaTlQU2pSR2F6TmpWWFZIVVdkNmFrRkRXVVJYVjNBM1RWaG1TM1VLVm5GeVNGTmtZMnhQWVV0dEwwbGpNMEkxWVd0a1pYcGxRVFJ4UzFGRlRrbFVSbXR1VkdSWVJ6RTFVV3MxU2tNMGNIWXpaa3M1ZUhVMldqZHhjVmRXVlFwdmVFMXdjR2huV1hGWFVsUkNSMnByT0hSRk5sbDZOazVZZGs5NkwxVXpNWEprV0ZOVFluYzRWakpxTUdnNU1FTlRMMkZLVkN0U01sRmxNRWh3YkZNeUNsSjBWek0yYlRjMFVGaHpXRGQ2Ym1aTVZWZEpaMGQxYjBvNVdYTkJNRFphUTFSVllrdFNTekV2V0haRmFGZHVPSGRtWTFCblRHTXlRWEJRTnpsMVlYa0taV0phZVV4SmFXOWFXRXRNVERWQ05tcEZaVkZWV2pGWlRFTjNSV0pCTXpWYVdYSm1lRTVCUmsxcFUwcDFTMnhhUlRWSGNYRlJTVVJCVVVGQ2IzcEZkd3BNZWtGUFFtZE9Wa2hST0VKQlpqaEZRa0ZOUTBGdlVYZElVVmxFVmxJd2JFSkNXWGRHUVZsSlMzZFpRa0pSVlVoQmQwbEhRME56UjBGUlZVWkNkMDFDQ2sxQk1FZERVM0ZIVTBsaU0wUlJSVUpEZDFWQlFUUkpRa0ZSUWpWbUwwdHJVVGxRV1d4WE1uQllUek13V1dSYVZHMUlhbWRhTm10RlFUUmhVelJvVWs4S2NqSldSbHBwUjBoUVluZGFZMjVuZFc1UVRXTnJaRmh2UWs5a1dsVkhkelpoYkUxaVFVOUZhRlpIUVVOSU5IcEhkM2RUUlZrMk5HRTJVV0ZsVFVaSWF3cHZkalU1UW1GclJIZFJkVlprTVdoMk1rcFZkMXB3WTFsTVZUZE5PWGRLWTI5a09FODBNM0EyVGxwTmNrVjBObHB2YmtsSWJGbEpkMGhFTWxWaGVYcHZDamhUVkhWeWNXVm5jakJvYzAwd1ltWlFRbkZzY25CdE9VTXZOV2hVVjJVemJ6STJiRFpNUTBabWFFdzBaamN5VURSaWFYWnNkVTVoYVc5UFp6QXZXVVlLZFVwd09WUjZkMnRuUWtSVE9DOU5hVTFUVDFwSFpVdHlia2hWYlhKa2FGbHpSbTFCVVRCRVRYWlJiMnh1TWtwVlRYSXlkWE4yU0VGcFJGWm9PVkZMWlFwM1lrSlRMMlJ3UW04M09UbEZRWHBpWkdaclpIcG5iVWhDU2k5WU4wVjNNR3B4Tm5Nek5YTkRNMUpqY0dNNFJrd0tMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0KICAgIGNsaWVudC1rZXktZGF0YTogTFMwdExTMUNSVWRKVGlCU1UwRWdVRkpKVmtGVVJTQkxSVmt0TFMwdExRcE5TVWxGYjJkSlFrRkJTME5CVVVWQmVYTk1kWEF3ZW1ock9VOVFiemxXUTFJd1ZHZHZORFUwVHl0WWMweERaREZUUVdGaWVtcHRVV2QyUTFGU2NWZzRDa1ZPUVcxU2QyWllSSGRrVUV0alYyZHFhbk5DTDA5S05FWnJNMk5WZFVkUlozcHFRVU5aUkZkWGNEZE5XR1pMZFZaeGNraFRaR05zVDJGTGJTOUpZek1LUWpWaGEyUmxlbVZCTkhGTFVVVk9TVlJHYTI1VVpGaEhNVFZSYXpWS1F6Undkak5tU3psNGRUWmFOM0Z4VjFaVmIzaE5jSEJvWjFseFYxSlVRa2RxYXdvNGRFVTJXWG8yVGxoMlQzb3ZWVE14Y21SWVUxTmlkemhXTW1vd2FEa3dRMU12WVVwVUsxSXlVV1V3U0hCc1V6SlNkRmN6Tm0wM05GQlljMWczZW01bUNreFZWMGxuUjNWdlNqbFpjMEV3TmxwRFZGVmlTMUpMTVM5WWRrVm9WMjQ0ZDJaalVHZE1ZekpCY0ZBM09YVmhlV1ZpV25sTVNXbHZXbGhMVEV3MVFqWUtha1ZsVVZWYU1WbE1RM2RGWWtFek5WcFpjbVo0VGtGR1RXbFRTblZMYkZwRk5VZHhjVkZKUkVGUlFVSkJiMGxDUVVKaWN6VXpUQzlJUm5CTmFESmpjd3A1Tm5WdVVFRmpRMHQwU1VzNGVVMXBObll6VkRCWVdVWjVSRTFzTlVGdk5EVnJSVFJhTjNWTlVsZExjbTUxV0VsT1NtdG5WSFE0Tmpndk1FSnVURWMyQ2xVd05tazRaMDlvUkRWME4ySlFkMHRZYlM5eFN6RktUVUY1WkRkSWIzQmhPVE4yYVV0dlNYa3pMemxwWjB4Tk0yRkZkRXB2Vlc5S2NUaDJaMDFxVDNRS2MxWk5aMVJWVmpKVVVYZGFUR056ZEdFNU5YTlphamh1V214S2QyczNhSHBFTmtFemNUSTBhRVJ0YUU1a2FUZ3dSSEJEVDJjMk1IbFpTaXQ2Y0dab1dBcHZORkJPTlhsTVZGaFhkSG80SzJ0UllqaDZaR3B0Wms5a1pHVnJaeTlOTTA1T1pUY3JPRVZHV2tJMWExWkRkbEV3UmxoSVIxRlZPREUzV1dNdlNEZHZDamhpVFZsM2QySlZRbEppTkdobmVWWnZkemxVV2s5YVkwMXVMM2xoYVd3M1JtVmljblpGU2s5dVJtdG9Wa3BoUlRKdVlWSlJjbEJ1TmtORWRVdEdXRGdLUTJNM2JHZGhSVU5uV1VWQmVuZEVURlpFY1UxWlYxcHNiWFJUYzJGdWVGaEJhMnBwUW5GVWFreFhTbGRIZVZSTk0xZEtUM2RzZG1GWk9FTlRiSHB5TkFwelMyOTNOMXByT0doQ1ZXSm1WRFJCV1ZWTlpVRlBSV0p2UkhCTVpYQTBURmxYU0hSUmJuQkpWakY1ZURSMVdWZHlSM28yZVhSemVGbE1MMnRvYTBSMENtUnVRVTFDVTBOdlZXOW1VVWczSzBWa2NHdFpZbGxrYW05bFZuWXdlalpPVG1SQ1ZYSk9VbFpQWlc1NFR6WkllR1JIZDNwSFUxVkRaMWxGUVN0elJXVUtVMk5wU0RSbWIybDVkRlZNWW5VMVJVVmtaM0YwTDFseUszTmtVMjl6TURGTWVtOXpSVU4wZGpFMGJrNHZWVlpIYTI5WE5UUTRVVEpOYmtkeUswSTFLd3BvUkRCME1XTXpXQ3RPT1dOc2FYRXdWVzVGZVhad09DOXhWblJUZGxSYWFscEdOVTFKTXpadWJqWXhVVkkxV0hOcFNEVmhWbWQyUlRoYWNFNTBSbHBsQ21sWlRVNHpRM2R6VjNCb1drMUJTV2hVZDI1S1RVOVZlVXhHVlhWT05rTjNhelJFUlhacVZVTm5XVUZ2UWs5R1MxVldPV1ZZVTNRM1pWYzBlakJCU1VzS1VWRnFhR1V2VFc1cVVVWlZhMmhNUWtsbldsUTRUMjlTY1hWTmMwNVplSEZ4ZUhneVkzTXJUMUZZTld4QmFESlZjME5OVjNwSE5Va3hZbmhPTkd0M1ZRbzRXbVZ4TmtoVlpqTndNMDVZWlc4MFVEUkdhM2R0WlZSaGMxaEdXbkozUW5vM2RXcExhVTFuWjFnd2RFSm9kVmg1YUZVNE5UVllUbU5OZG1weVVUUnFDblo2YWk5cFRGWktWWFkzSzBwc2NrWjRWREZFZFZGTFFtZEhZbkJrVmxoUk1FUjJiRmhtZDJrellrNXJXa1pzZVdZeU0wdDNXbWRHTUVKMGVUTjJORWtLUVU5bFRpOUVVRmx2WTNKMFkwbzFXRGxqWms0d2JsSXphRW95Y2xocU9VWnZTbU5qUTFOU2FDOHllU3RGUVRJMU1scHhNRmgyZEZKMVN6Vm9UVkFyVkFwV0szQkdXU3RSTjNwRVVHeERlRTlzZWpoME5uWjRVblJSVEVSbWRHRk1ORkF5Y2paVmFWaEpWM1Z3UTBwWmREZDBOaXQ1YTFKdWVYZzJiMkUzTHpGS0NtNTJWakZCYjBkQlRtRkZSV1VyZERoNGFXUlFaeXRIUm5FemN6VkhUa1pPU0VKQmMzcG1NV3BxVFdwdmF6ZEtiMmxyWWxaVU1FNUJWVmhLZEdWclNra0taekZPVUd0UVQxSjRWakZWY0dKUGVsUXJhMWhyTjBwVmExTTNiVE0zV0VneWRuUm1abVIxTlhFNVEzWkhObkZaYW1OcVpVOHZSRWhzYUZWRmNrMUpXUXBsVHpSQk9FOUNWRWgwUVRkM01XTjVVa2hIVUZWUE1VRlFiRXRTTWtWVU9XMXVOeXROV0hSRU1GQmxjRWh2TVV0UU9VRTlDaTB0TFMwdFJVNUVJRkpUUVNCUVVrbFdRVlJGSUV0RldTMHRMUzB0Q2c9PQo=" + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-kubernetes-clusters-config", + "security": [ + { + "API Key": [] + } + ], + "description": "Get Kubernetes Cluster Kubeconfig" + } + }, + "/kubernetes/versions": { + "get": { + "summary": "Get Kubernetes Versions", + "tags": [ + "kubernetes" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "versions": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "example": { + "value": { + "versions": [ + "v1.20.0+1" + ] + } + } + } + } + } + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-kubernetes-versions", + "description": "Get a list of supported Kubernetes versions", + "security": [] + } + }, + "/billing/history": { + "get": { + "summary": "List Billing History", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "billing_history": { + "type": "array", + "description": "List of all billing history.", + "items": { + "$ref": "#/components/schemas/billing" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "example-1": { + "value": { + "billing_history": [ + { + "id": 123456, + "date": "2020-10-10T01:56:20+00:00", + "type": "invoice", + "description": "Invoice #123456", + "amount": 100.03, + "balance": 79.48 + }, + { + "id": 123457, + "date": "2020-10-10T01:46:05+00:00", + "type": "credit", + "description": "Account Credit", + "amount": 50.55, + "balance": -20.55 + } + ], + "meta": { + "total": 3, + "links": { + "next": "WxYzExampleNext", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-billing-history", + "description": "Retrieve list of billing history", + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "billing" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/billing/history\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + }, + "parameters": [] + }, + "/billing/invoices": { + "get": { + "summary": "List Invoices", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "billing_invoice": [ + { + "id": 123456, + "billing_period": "09-01-2021", + "amount": 5 + } + ] + } + }, + "properties": { + "billing_invoices": { + "type": "array", + "description": "List of billing invoices.", + "items": { + "$ref": "#/components/schemas/invoice" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "examples": { + "example-1": { + "value": { + "billing_invoices": [ + { + "id": 123456, + "date": "2021-10-10T00:00:00+00:00", + "description": "Invoice #123456", + "amount": 5.25, + "balance": 10.25 + } + ], + "meta": { + "total": 1, + "links": { + "next": "", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-invoices", + "description": "Retrieve a list of invoices", + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "billing" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/billing/invoices\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + }, + "parameters": [] + }, + "/billing/invoices/{invoice-id}": { + "get": { + "summary": "Get Invoice", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "billing_invoice": { + "id": 123456, + "description": "Account Credit", + "billing_period": "09-01-2021", + "amount": 5 + } + } + }, + "properties": { + "billing_invoice": { + "$ref": "#/components/schemas/invoice" + } + } + }, + "examples": { + "example-1": { + "value": { + "billing_invoice": { + "id": 123456, + "description": "Account Credit", + "date": "09-01-2021T00:00:00+00:00", + "amount": 5.25 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-invoice", + "description": "Retrieve specified invoice", + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "billing" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/billing/invoices/{invoice-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "invoice-id", + "in": "path", + "required": true, + "description": "ID of invoice" + } + ] + }, + "/billing/invoices/{invoice-id}/items": { + "get": { + "summary": "Get Invoice Items", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "invoice_items": [ + { + "description": "Load Balancer (my-loadbalancer)", + "product": "Load Balancer", + "start_date": "2021-08-31 20:00:00", + "end_date": "2021-09-30 20:00:00", + "units": 720, + "unit_type": "hours", + "unit_price": 0.0149, + "total": 10 + }, + { + "description": "1.1.1.1 (8192 MB) [my-instance]", + "product": "Vultr Cloud Compute", + "start_date": "2021-09-15 09:13:15", + "end_date": "2021-09-30 20:00:00", + "units": 371, + "unit_type": "hours", + "unit_price": 0.0595, + "total": 22.09 + } + ], + "meta": { + "total": 3, + "links": { + "next": "WxYzExampleNext", + "prev": "" + } + } + } + }, + "properties": { + "invoice_items": { + "type": "array", + "description": "List of invoice items.", + "items": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Invoice item description" + }, + "product": { + "type": "string", + "description": "Product name" + }, + "start_date": { + "type": "string", + "description": "Start date of item" + }, + "end_date": { + "type": "string", + "description": "End date of item" + }, + "units": { + "type": "number", + "description": "Number of units item consumed in billing period" + }, + "unit_type": { + "type": "string", + "description": "Unit type. Options include \"hours\", \"overage\", and \"discount\"" + }, + "unit_price": { + "type": "number", + "description": "Price per unit in dollars" + }, + "total": { + "type": "number", + "description": "Total amount due in dollars" + } + } + } + }, + "meta": { + "type": "object", + "properties": { + "total": { + "type": "number" + }, + "links": { + "type": "object", + "properties": { + "next": { + "type": "string" + }, + "prev": { + "type": "string" + } + } + } + } + } + } + }, + "examples": { + "example-1": { + "value": { + "invoice_items": [ + { + "description": "Load Balancer (my-loadbalancer)", + "product": "Load Balancer", + "start_date": "2021-08-31T00:00:00+00:00", + "end_date": "2021-09-30T00:00:00+00:00", + "units": 720, + "unit_type": "hours", + "unit_price": 0.0149, + "total": 10 + }, + { + "description": "1.1.1.1 (8192 MB) [my-instance]", + "product": "Vultr Cloud Compute", + "start_date": "2021-09-15T00:00:00+00:00", + "end_date": "2021-09-30T00:00:00+00:00", + "units": 371, + "unit_type": "hours", + "unit_price": 0.0595, + "total": 22.09 + } + ], + "meta": { + "total": 3, + "links": { + "next": "WxYzExampleNext", + "prev": "" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-invoice-items", + "description": "Retrieve full specified invoice", + "security": [ + { + "API Key": [] + } + ], + "tags": [ + "billing" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/billing/invoices/{invoice-id}/items\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "invoice-id", + "in": "path", + "required": true, + "description": "ID of invoice" + } + ] + }, + "/databases/plans": { + "get": { + "summary": "List Managed Database Plans", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/plans\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "plans": { + "type": "array", + "items": { + "$ref": "#/components/schemas/dbaas-plan" + } + } + } + }, + "examples": { + "plans": { + "value": { + "plans": [ + { + "id": "vultr-dbaas-hobbyist-cc-1-25-1", + "number_of_nodes": 1, + "type": "vc2", + "vcpu_count": 1, + "ram": 1024, + "disk": 25, + "monthly_cost": 15, + "supported_engines": { + "mysql": true, + "pg": true, + "redis": false + }, + "max_connections": { + "mysql": 75, + "pg": 22 + }, + "locations": [ + "DEV", + "ICN", + "SEA" + ] + } + ] + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-database-plans", + "description": "List all Managed Databases plans.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "engine", + "description": "Filter by engine type\n\n* `mysql`\n* `pg`\n* `redis`." + }, + { + "schema": { + "type": "integer" + }, + "in": "query", + "name": "nodes", + "description": "Filter by number of nodes." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "region", + "description": "Filter by [Region id](#operation/list-regions)." + } + ] + } + }, + "/databases": { + "get": { + "summary": "List Managed Databases", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "databases": { + "type": "array", + "items": { + "$ref": "#/components/schemas/database" + } + }, + "meta": { + "$ref": "#/components/schemas/dbaas-meta" + } + } + }, + "examples": { + "database": { + "value": { + "databases": [ + { + "id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5", + "date_created": "2022-05-09 10:13:31", + "plan": "vultr-dbaas-hobbyist-cc-1-25-1", + "plan_disk": 25, + "plan_ram": 1024, + "plan_vcpus": 1, + "plan_replicas": 0, + "region": "EWR", + "database_engine": "mysql", + "database_engine_version": 8, + "vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250", + "status": "Running", + "label": "some label", + "tag": "some tag", + "dbname": "defaultdb", + "host": "HOSTNAME_GOES_HERE", + "public_host": "PUBLIC_HOSTNAME_GOES_HERE", + "user": "vultradmin", + "password": "PASSWORD_GOES_HERE", + "port": 16751, + "maintenance_dow": "sunday", + "maintenance_time": "06:00:00", + "latest_backup": "2022-11-02 12:58:18\"", + "trusted_ips": [ + "..." + ], + "mysql_sql_modes": [ + "ANSI", + "ERROR_FOR_DIVISION_BY_ZERO", + "NO_ENGINE_SUBSTITUTION", + "NO_ZERO_DATE", + "NO_ZERO_IN_DATE", + "STRICT_ALL_TABLES" + ], + "mysql_require_primary_key": true, + "mysql_slow_query_log": false, + "cluster_time_zone": "America/New_York", + "read_replicas": [ + "..." + ] + } + ], + "meta": { + "total": 1 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-databases", + "description": "List all Managed Databases in your account.", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "label", + "description": "Filter by label." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "tag", + "description": "Filter by specific tag." + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "region", + "description": "Filter by [Region id](#operation/list-regions)." + } + ] + }, + "post": { + "summary": "Create Managed Database", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"database_engine\" : \"mysql\",\n \"database_engine_version\" : \"8\"\n \"region\" : \"ewr\",\n \"plan\" : \"vultr-dbaas-hobbyist-cc-1-25-1\",\n \"label\" : \"Example Managed Database\"\n }'" + } + ], + "responses": { + "202": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "database": { + "$ref": "#/components/schemas/database" + } + } + }, + "examples": { + "database": { + "value": { + "database": { + "id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5", + "date_created": "2022-05-09 10:13:31", + "plan": "vultr-dbaas-hobbyist-cc-1-25-1", + "plan_disk": 25, + "plan_ram": 1024, + "plan_vcpus": 1, + "plan_replicas": 0, + "region": "EWR", + "database_engine": "mysql", + "database_engine_version": 8, + "vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250", + "status": "Running", + "label": "some label", + "tag": "some tag", + "dbname": "defaultdb", + "host": "HOSTNAME_GOES_HERE", + "public_host": "PUBLIC_HOSTNAME_GOES_HERE", + "user": "vultradmin", + "password": "PASSWORD_GOES_HERE", + "port": 16751, + "maintenance_dow": "sunday", + "maintenance_time": "06:00:00", + "latest_backup": "2022-11-02 12:58:18\"", + "trusted_ips": [ + "..." + ], + "mysql_sql_modes": [ + "ANSI", + "ERROR_FOR_DIVISION_BY_ZERO", + "NO_ENGINE_SUBSTITUTION", + "NO_ZERO_DATE", + "NO_ZERO_IN_DATE", + "STRICT_ALL_TABLES" + ], + "mysql_require_primary_key": true, + "mysql_slow_query_log": false, + "cluster_time_zone": "America/New_York", + "read_replicas": [ + "..." + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "create-database", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "database_engine": { + "type": "string", + "description": "The database engine type for the Managed Database.\n* `mysql`\n* `pg`\n* `ferretpg`\n* `redis`" + }, + "database_engine_version": { + "type": "string", + "description": "The version of the chosen database engine type for the Managed Database.\n* MySQL: `8`\n* PostgreSQL: `12` - `15`\n* FerretDB + PostgreSQL: `12` - `15`\n* Redis: `7`" + }, + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the Managed Database is located." + }, + "plan": { + "type": "string", + "description": "The [Plan id](#operation/list-database-plans) to use when deploying this Managed Database." + }, + "label": { + "type": "string", + "description": "A user-supplied label for this Managed Database." + }, + "tag": { + "type": "string", + "description": "The user-supplied tag for this Managed Database." + }, + "vpc_id": { + "type": "string", + "description": "The [VPC id](#operation/list-vpcs) to use when deploying this Managed Database. It can also be set to `new` to configure a new VPC network with this deployment." + }, + "maintenance_dow": { + "type": "string", + "description": "The day of week for routine maintenance updates.\n* `monday`\n* `tuesday`\n* `wednesday`\n* `thursday`\n* `friday`\n* `saturday`\n* `sunday`" + }, + "maintenance_time": { + "type": "string", + "description": "The preferred time (UTC) for routine maintenance updates to occur in 24-hour HH:00 format (e.g. `01:00`, `13:00`, `23:00`, etc.)." + }, + "trusted_ips": { + "type": "array", + "description": "A list of IP addresses allowed to access the Managed Database in CIDR notation (defaults to /32 if excluded).", + "items": { + "type": "string" + } + }, + "mysql_sql_modes": { + "type": "array", + "description": "A list of SQL modes to enable on the Managed Database (MySQL engine type only).\n* `ALLOW_INVALID_DATES`\n* `ANSI` (Combination Mode)\n* `ANSI_QUOTES`\n* `ERROR_FOR_DIVISION_BY_ZERO`\n* `HIGH_NOT_PRECEDENCE`\n* `IGNORE_SPACE`\n* `NO_AUTO_VALUE_ON_ZERO`\n* `NO_DIR_IN_CREATE`\n* `NO_ENGINE_SUBSTITUTION`\n* `NO_UNSIGNED_SUBTRACTION`\n* `NO_ZERO_DATE`\n* `NO_ZERO_IN_DATE`\n* `ONLY_FULL_GROUP_BY`\n* `PIPES_AS_CONCAT`\n* `REAL_AS_FLOAT`\n* `STRICT_ALL_TABLES`\n* `STRICT_TRANS_TABLES`\n* `TIME_TRUNCATE_FRACTIONAL`\n* `TRADITIONAL` (Combination Mode)", + "items": { + "type": "string" + } + }, + "mysql_require_primary_key": { + "type": "boolean", + "description": "Require a primary key for all tables on the Managed Database (MySQL engine type only)." + }, + "mysql_slow_query_log": { + "type": "boolean", + "description": "Enable or disable slow query logging on the Managed Database (MySQL engine type only)." + }, + "mysql_long_query_time": { + "type": "integer", + "description": "The number of seconds to denote a slow query when logging is enabled (MySQL engine type only)." + }, + "redis_eviction_policy": { + "type": "string", + "description": "Set the data eviction policy for the Managed Database (Redis engine type only)" + } + }, + "required": [ + "database_engine", + "database_engine_version", + "region", + "plan", + "label" + ] + }, + "examples": { + "request": { + "value": { + "database_engine": "mysql", + "database_engine_version": "8", + "region": "ewr", + "plan": "vultr-dbaas-hobbyist-cc-1-25-1", + "label": "Example Managed Database" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Create a new Managed Database in a `region` with the desired `plan`. Supply optional attributes as desired." + } + }, + "/databases/{database-id}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "database-id", + "in": "path", + "required": true, + "description": "The [Managed Database ID](#operation/list-databases)." + } + ], + "get": { + "summary": "Get Managed Database", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "database": { + "$ref": "#/components/schemas/database" + } + } + }, + "examples": { + "database": { + "value": { + "database": { + "id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5", + "date_created": "2022-05-09 10:13:31", + "plan": "vultr-dbaas-hobbyist-cc-1-25-1", + "plan_disk": 25, + "plan_ram": 1024, + "plan_vcpus": 1, + "plan_replicas": 0, + "region": "EWR", + "database_engine": "mysql", + "database_engine_version": 8, + "vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250", + "status": "Running", + "label": "some label", + "tag": "some tag", + "dbname": "defaultdb", + "host": "HOSTNAME_GOES_HERE", + "public_host": "PUBLIC_HOSTNAME_GOES_HERE", + "user": "vultradmin", + "password": "PASSWORD_GOES_HERE", + "port": 16751, + "maintenance_dow": "sunday", + "maintenance_time": "06:00:00", + "latest_backup": "2022-11-02 12:58:18\"", + "trusted_ips": [ + "..." + ], + "mysql_sql_modes": [ + "ANSI", + "ERROR_FOR_DIVISION_BY_ZERO", + "NO_ENGINE_SUBSTITUTION", + "NO_ZERO_DATE", + "NO_ZERO_IN_DATE", + "STRICT_ALL_TABLES" + ], + "mysql_require_primary_key": true, + "mysql_slow_query_log": false, + "cluster_time_zone": "America/New_York", + "read_replicas": [ + "..." + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-database", + "description": "Get information about a Managed Database.", + "security": [ + { + "API Key": [] + } + ] + }, + "put": { + "summary": "Update Managed Database", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"plan\" : \"vultr-dbaas-startup-cc-1-55-2\",\n \"label\" : \"Example Managed Database\"\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "database": { + "$ref": "#/components/schemas/database" + } + } + }, + "examples": { + "database": { + "value": { + "database": { + "id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5", + "date_created": "2022-05-09 10:13:31", + "plan": "vultr-dbaas-hobbyist-cc-1-25-1", + "plan_disk": 25, + "plan_ram": 1024, + "plan_vcpus": 1, + "plan_replicas": 0, + "region": "EWR", + "database_engine": "mysql", + "database_engine_version": 8, + "vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250", + "status": "Running", + "label": "some label", + "tag": "some tag", + "dbname": "defaultdb", + "host": "HOSTNAME_GOES_HERE", + "public_host": "PUBLIC_HOSTNAME_GOES_HERE", + "user": "vultradmin", + "password": "PASSWORD_GOES_HERE", + "port": 16751, + "maintenance_dow": "sunday", + "maintenance_time": "06:00:00", + "latest_backup": "2022-11-02 12:58:18\"", + "trusted_ips": [ + "..." + ], + "mysql_sql_modes": [ + "ANSI", + "ERROR_FOR_DIVISION_BY_ZERO", + "NO_ENGINE_SUBSTITUTION", + "NO_ZERO_DATE", + "NO_ZERO_IN_DATE", + "STRICT_ALL_TABLES" + ], + "mysql_require_primary_key": true, + "mysql_slow_query_log": false, + "cluster_time_zone": "America/New_York", + "read_replicas": [ + "..." + ] + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "update-database", + "description": "Update information for a Managed Database. All attributes are optional. If not set, the attributes will retain their original values.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the Managed Database is located." + }, + "plan": { + "type": "string", + "description": "The [Plan id](#operation/list-database-plans) for this Managed Database." + }, + "label": { + "type": "string", + "description": "A user-supplied label for this Managed Database." + }, + "tag": { + "type": "string", + "description": "The user-supplied tag for this Managed Database." + }, + "vpc_id": { + "type": "string", + "description": "The [VPC id](#operation/list-vpcs) for this Managed Database." + }, + "maintenance_dow": { + "type": "string", + "description": "The day of week for routine maintenance updates.\n* `monday`\n* `tuesday`\n* `wednesday`\n* `thursday`\n* `friday`\n* `saturday`\n* `sunday`" + }, + "maintenance_time": { + "type": "string", + "description": "The preferred time (UTC) for routine maintenance updates to occur in 24-hour HH:00 format (e.g. `01:00`, `13:00`, `23:00`, etc.)." + }, + "cluster_time_zone": { + "type": "string", + "description": "The configured time zone for the Managed Database in TZ database format (e.g. `UTC`, `America/New_York`, `Europe/London`, etc.)." + }, + "trusted_ips": { + "type": "array", + "description": "A list of IP addresses allowed to access the Managed Database in CIDR notation (defaults to /32 if excluded).", + "items": { + "type": "string" + } + }, + "mysql_sql_modes": { + "type": "array", + "description": "A list of SQL modes to enable on the Managed Database (MySQL engine type only).\n* `ALLOW_INVALID_DATES`\n* `ANSI` (Combination Mode)\n* `ANSI_QUOTES`\n* `ERROR_FOR_DIVISION_BY_ZERO`\n* `HIGH_NOT_PRECEDENCE`\n* `IGNORE_SPACE`\n* `NO_AUTO_VALUE_ON_ZERO`\n* `NO_DIR_IN_CREATE`\n* `NO_ENGINE_SUBSTITUTION`\n* `NO_UNSIGNED_SUBTRACTION`\n* `NO_ZERO_DATE`\n* `NO_ZERO_IN_DATE`\n* `ONLY_FULL_GROUP_BY`\n* `PIPES_AS_CONCAT`\n* `REAL_AS_FLOAT`\n* `STRICT_ALL_TABLES`\n* `STRICT_TRANS_TABLES`\n* `TIME_TRUNCATE_FRACTIONAL`\n* `TRADITIONAL` (Combination Mode)", + "items": { + "type": "string" + } + }, + "mysql_require_primary_key": { + "type": "boolean", + "description": "Require a primary key for all tables on the Managed Database (MySQL engine type only)." + }, + "mysql_slow_query_log": { + "type": "boolean", + "description": "Enable or disable slow query logging on the Managed Database (MySQL engine type only)." + }, + "mysql_long_query_time": { + "type": "integer", + "description": "The number of seconds to denote a slow query when logging is enabled (MySQL engine type only)." + }, + "redis_eviction_policy": { + "type": "string", + "description": "Set the data eviction policy for the Managed Database (Redis engine type only)" + } + } + }, + "examples": { + "request": { + "value": { + "plan": "vultr-dbaas-startup-cc-1-55-2", + "label": "Example Managed Database" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "delete": { + "summary": "Delete Managed Database", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-database", + "description": "Delete a Managed Database.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/databases/{database-id}/usage": { + "get": { + "summary": "Get Database Usage Information", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/usage\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "usage": { + "$ref": "#/components/schemas/database-usage" + } + } + }, + "examples": { + "usage": { + "value": { + "usage": { + "disk": { + "current_gb": 1.25, + "max_gb": 55, + "percentage": 2.27 + }, + "memory": { + "current_mb": 768, + "max_mb": 2048, + "percentage": 37.5 + }, + "cpu": { + "percentage": 4.65 + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-database-usage", + "description": "Get disk, memory, and vCPU usage information for a Managed Database.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/databases/{database-id}/users": { + "get": { + "summary": "List Database Users", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/users\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "$ref": "#/components/schemas/database-user" + } + }, + "meta": { + "$ref": "#/components/schemas/dbaas-meta" + } + } + }, + "examples": { + "users": { + "value": { + "users": [ + { + "username": "vultradmin", + "password": "PASSWORD_GOES_HERE", + "encryption": "Default (MySQL 8+)" + }, + { + "username": "ANOTHER_USER_HERE", + "password": "PASSWORD_GOES_HERE", + "encryption": "Legacy (MySQL 5.x)" + } + ], + "meta": { + "total": 2 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-database-users", + "description": "List all database users within the Managed Database.", + "security": [ + { + "API Key": [] + } + ] + }, + "post": { + "summary": "Create Database User", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/users\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"username\" : \"some_new_user\",\n \"password\" : \"some_secure_password\",\n \"encryption\" : \"ewrcaching_sha2_password\"\n }'" + } + ], + "responses": { + "202": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "user": { + "$ref": "#/components/schemas/database-user" + } + } + }, + "examples": { + "user": { + "value": { + "user": { + "username": "some_new_user", + "password": "some_secure_password", + "encryption": "Default (MySQL 8+)" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "create-database-user", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string", + "description": "The username of the database user." + }, + "password": { + "type": "string", + "description": "The password for the database user. This can be omitted to auto-generate a secure password." + }, + "encryption": { + "type": "string", + "description": "The password encryption type for the database user (MySQL engine type only).\n* `caching_sha2_password` (default if omitted)\n* `mysql_native_password`" + } + }, + "required": [ + "username" + ] + }, + "examples": { + "request": { + "value": { + "username": "some_new_user", + "password": "some_secure_password", + "encryption": "caching_sha2_password" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Create a new database user within the Managed Database. Supply optional attributes as desired." + } + }, + "/databases/{database-id}/users/{username}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "database-id", + "in": "path", + "required": true, + "description": "The [Managed Database ID](#operation/list-databases)." + }, + { + "schema": { + "type": "string" + }, + "name": "username", + "in": "path", + "required": true, + "description": "The [database user](#operation/list-database-users)." + } + ], + "get": { + "summary": "Get Database User", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/users/{username}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "user": { + "$ref": "#/components/schemas/database-user" + } + } + }, + "examples": { + "user": { + "value": { + "user": { + "username": "some_username", + "password": "some_secure_password", + "encryption": "Default (MySQL 8+)" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-database-user", + "description": "Get information about a Managed Database user.", + "security": [ + { + "API Key": [] + } + ] + }, + "put": { + "summary": "Update Database User", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/users/{username}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"password\" : \"some_new_password_here\"\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "user": { + "$ref": "#/components/schemas/database-user" + } + } + }, + "examples": { + "user": { + "value": { + "user": { + "username": "some_username", + "password": "some_secure_password", + "encryption": "Default (MySQL 8+)" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "update-database-user", + "description": "Update database user information within a Managed Database.", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "password": { + "type": "string", + "description": "The password for the database user. This can be empty to auto-generate a new secure password." + } + }, + "required": [ + "password" + ] + }, + "examples": { + "request": { + "value": { + "password": "some_new_password_here" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "delete": { + "summary": "Delete Database User", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/users/{username}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-database-user", + "description": "Delete a database user within a Managed Database.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/databases/{database-id}/users/{username}/access-control": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "database-id", + "in": "path", + "required": true, + "description": "The [Managed Database ID](#operation/list-databases)." + }, + { + "schema": { + "type": "string" + }, + "name": "username", + "in": "path", + "required": true, + "description": "The [database user](#operation/list-database-users)." + } + ], + "put": { + "summary": "Set Database User Access Control", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/users/{username}/access-control\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"redis_acl_categories\" : [\n \"+@all\"\n ],\n \"redis_acl_channels\" : [\n \"*\"\n ],\n \"redis_acl_commands\" : [],\n \"redis_acl_keys\" : [\n \"*\"\n ]\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "user": { + "$ref": "#/components/schemas/database-user" + } + } + }, + "examples": { + "user": { + "value": { + "user": { + "username": "some_username", + "password": "some_secure_password", + "access_control": { + "redis_acl_categories": [ + "+@all" + ], + "redis_acl_channels": [ + "*" + ], + "redis_acl_commands": [], + "redis_acl_keys": [ + "*" + ] + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "set-database-user-acl", + "description": "Configure access control settings for a Managed Database user (Redis engine type only).", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redis_acl_categories": { + "type": "array", + "description": "A list of rules for command categories.", + "items": { + "type": "string" + } + }, + "redis_acl_channels": { + "type": "array", + "description": "A list of publish/subscribe channel patterns.", + "items": { + "type": "string" + } + }, + "redis_acl_commands": { + "type": "array", + "description": "A list of rules for individual commands..", + "items": { + "type": "string" + } + }, + "redis_acl_keys": { + "type": "array", + "description": "A list of key access rules..", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "request": { + "value": { + "redis_acl_categories": [ + "+@all" + ], + "redis_acl_channels": [ + "*" + ], + "redis_acl_commands": [], + "redis_acl_keys": [ + "*" + ] + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + } + }, + "/databases/{database-id}/dbs": { + "get": { + "summary": "List Logical Databases", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/dbs\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "dbs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/database-db" + } + }, + "meta": { + "$ref": "#/components/schemas/dbaas-meta" + } + } + }, + "examples": { + "dbs": { + "value": { + "dbs": [ + { + "name": "defaultdb" + }, + { + "name": "another_db" + } + ], + "meta": { + "total": 2 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-database-dbs", + "description": "List all logical databases within the Managed Database (MySQL and PostgreSQL only).", + "security": [ + { + "API Key": [] + } + ] + }, + "post": { + "summary": "Create Logical Database", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/dbs\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"new_db_name\"\n }'" + } + ], + "responses": { + "202": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "db": { + "$ref": "#/components/schemas/database-db" + } + } + }, + "examples": { + "db": { + "value": { + "db": { + "name": "new_db_name" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "create-database-db", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the logical database." + } + }, + "required": [ + "name" + ] + }, + "examples": { + "request": { + "value": { + "name": "new_db_name" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Create a new logical database within the Managed Database (MySQL and PostgreSQL only)." + } + }, + "/databases/{database-id}/dbs/{db-name}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "database-id", + "in": "path", + "required": true, + "description": "The [Managed Database ID](#operation/list-databases)." + }, + { + "schema": { + "type": "string" + }, + "name": "db-name", + "in": "path", + "required": true, + "description": "The [logical database name](#operation/list-database-dbs)." + } + ], + "get": { + "summary": "Get Logical Database", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/dbs/{db-name}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "db": { + "$ref": "#/components/schemas/database-db" + } + } + }, + "examples": { + "db": { + "value": { + "db": { + "name": "some_db_name" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-database-db", + "description": "Get information about a logical database within a Managed Database (MySQL and PostgreSQL only).", + "security": [ + { + "API Key": [] + } + ] + }, + "delete": { + "summary": "Delete Logical Database", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/dbs/{db-name}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-database-db", + "description": "Delete a logical database within a Managed Database (MySQL and PostgreSQL only).", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/databases/{database-id}/maintenance": { + "get": { + "summary": "List Maintenance Updates", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/maintenance\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "available_updates": { + "type": "array", + "description": "A list of available maintenance updates for the Managed Database.", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "available_updates": { + "value": { + "available_updates": [ + "update_description_here", + "another_description_here" + ] + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-maintenance-updates", + "description": "List all available version upgrades within the Managed Database.", + "security": [ + { + "API Key": [] + } + ] + }, + "post": { + "summary": "Start Maintenance Updates", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/maintenance\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "A message indicating whether the maintenance updates were successfully initialized." + } + } + }, + "examples": { + "message": { + "value": { + "message": "Maintenance updates initialized. Please note the maintenance consists of switching to a new server that will host the service and all pending updates will be applied. This will cause a short service interruption." + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "start-maintenance-updates", + "security": [ + { + "API Key": [] + } + ], + "description": "Start maintenance updates for the Managed Database." + } + }, + "/databases/{database-id}/alerts": { + "post": { + "summary": "List Service Alerts", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/alerts \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"period\" : \"day\"\n }'" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "alerts": { + "$ref": "#/components/schemas/dbaas-alerts" + } + } + }, + "examples": { + "alerts": { + "value": { + "alerts": [ + { + "timestamp": "2023-02-10 12:40:19", + "message_type": "RESOURCE USAGE DISK", + "description": "Disk usage is critically high for a database service, service is not performing normally.", + "recommendation": "We recommend you review your application or upgrade to the next plan size.", + "resource_type": "disk" + }, + { + "timestamp": "2023-02-09 15:41:20", + "message_type": "MAINTENANCE SCHEDULED", + "description": "Mandatory maintenance has been scheduled for a database service.", + "maintenance_scheduled": "2023-02-12 01:00:00 (UTC)" + } + ] + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "list-service-alerts", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "period": { + "type": "string", + "description": "The time range to list Managed Database service alerts from." + } + }, + "required": [ + "period" + ] + }, + "examples": { + "request": { + "value": { + "period": "day" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "List service alert messages for the Managed Database." + } + }, + "/databases/{database-id}/migration": { + "get": { + "summary": "Get Migration Status", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/migration\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "migration": { + "$ref": "#/components/schemas/dbaas-migration" + } + } + }, + "examples": { + "migration": { + "value": { + "migration": { + "status": "complete", + "method": "replication", + "credentials": { + "host": "some_host", + "port": 3306, + "username": "some_username", + "password": "some_password", + "database": "some_database", + "ignored_databases": "", + "ssl": true + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "view-migration-status", + "description": "View the status of a migration attached to the Managed Database.", + "security": [ + { + "API Key": [] + } + ] + }, + "post": { + "summary": "Start Migration", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/migration\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"host\" : \"some_host\",\n \"port\" : 3306,\n \"username\" : \"some_username\",\n \"password\" : \"some_password\",\n \"database\" : \"some_database\",\n \"ssl\" : true\n }'" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "migration": { + "$ref": "#/components/schemas/dbaas-migration" + } + } + }, + "examples": { + "migration": { + "value": { + "migration": { + "status": "pending", + "credentials": { + "host": "some_host", + "port": 3306, + "username": "some_username", + "password": "some_password", + "database": "some_database", + "ignored_databases": "", + "ssl": true + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "database-start-migration", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "The host name of the source server." + }, + "port": { + "type": "int", + "description": "The connection port of the source server." + }, + "username": { + "type": "string", + "description": "The username of the source server. Uses `default` for Redis if left empty or unset." + }, + "password": { + "type": "string", + "description": "The password of the source server." + }, + "database": { + "type": "string", + "description": "The database of the source server. Required for MySQL/PostgreSQL engine types, but excluded for Redis." + }, + "ignored_databases": { + "type": "string", + "description": "Comma-separated list of ignored databases on the source server. Excluded for Redis engine types." + }, + "ssl": { + "type": "boolean", + "description": "The true/false value for whether SSL is needed to connect to the source server." + } + }, + "required": [ + "host", + "port", + "username", + "password", + "ssl" + ] + }, + "examples": { + "request": { + "value": { + "host": "some_host", + "port": 3306, + "username": "some_username", + "password": "some_password", + "database": "some_database", + "ignored_databases": "", + "ssl": true + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Start a migration to the Managed Database." + }, + "delete": { + "summary": "Detach Migration", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/migration\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "database-detach-migration", + "description": "Detach a migration from the Managed Database.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/databases/{database-id}/read-replica": { + "post": { + "summary": "Add Read-Only Replica", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/read-replica\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"label\" : \"new_read_replica_label\"\n }'" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "database": { + "$ref": "#/components/schemas/database" + } + } + }, + "examples": { + "database": { + "value": { + "database": { + "id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5", + "date_created": "2022-05-09 10:13:31", + "plan": "vultr-dbaas-hobbyist-cc-1-25-1", + "plan_disk": 25, + "plan_ram": 1024, + "plan_vcpus": 1, + "plan_replicas": 0, + "region": "EWR", + "database_engine": "mysql", + "database_engine_version": 8, + "vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250", + "status": "Running", + "label": "some label", + "tag": "some tag", + "dbname": "defaultdb", + "host": "HOSTNAME_GOES_HERE", + "public_host": "PUBLIC_HOSTNAME_GOES_HERE", + "user": "vultradmin", + "password": "PASSWORD_GOES_HERE", + "port": 16751, + "maintenance_dow": "sunday", + "maintenance_time": "06:00:00", + "latest_backup": "2022-11-02 12:58:18\"", + "trusted_ips": [ + "..." + ], + "mysql_sql_modes": [ + "ANSI", + "ERROR_FOR_DIVISION_BY_ZERO", + "NO_ENGINE_SUBSTITUTION", + "NO_ZERO_DATE", + "NO_ZERO_IN_DATE", + "STRICT_ALL_TABLES" + ], + "mysql_require_primary_key": true, + "mysql_slow_query_log": false, + "cluster_time_zone": "America/New_York" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "database-add-read-replica", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the Managed Database is located." + }, + "label": { + "type": "string", + "description": "A user-supplied label for this Managed Database." + } + }, + "required": [ + "region", + "label" + ] + }, + "examples": { + "request": { + "value": { + "region": "ewr", + "label": "new_read_replica_label" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Create a read-only replica node for the Managed Database." + } + }, + "/databases/{database-id}/promote-read-replica": { + "post": { + "summary": "Promote Read-Only Replica", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/promote-read-replica\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "database-promote-read-replica", + "security": [ + { + "API Key": [] + } + ], + "description": "Promote a read-only replica node to its own primary Managed Database." + } + }, + "/databases/{database-id}/backups": { + "get": { + "summary": "Get Backup Information", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/backups \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "latest_backup": { + "$ref": "#/components/schemas/database-latest-backup" + }, + "oldest_backup": { + "$ref": "#/components/schemas/database-oldest-backup" + } + } + }, + "examples": { + "backups": { + "value": { + "latest_backup": { + "date": "2023-02-07", + "time": "20:51:05" + }, + "oldest_backup": { + "date": "2023-02-05", + "time": "20:51:07" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-backup-information", + "description": "Get backup information for the Managed Database.", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/databases/{database-id}/restore": { + "post": { + "summary": "Restore from Backup", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/restore\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"new_restore_label\",\n \"type\" : \"pitr\",\n \"date\" : \"2023-02-06\",\n \"time\" : \"08:00:00\"\n }'" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "database": { + "$ref": "#/components/schemas/database" + } + } + }, + "examples": { + "database": { + "value": { + "database": { + "id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5", + "date_created": "2022-05-09 10:13:31", + "plan": "vultr-dbaas-hobbyist-cc-1-25-1", + "plan_disk": 25, + "plan_ram": 1024, + "plan_vcpus": 1, + "plan_replicas": 0, + "region": "EWR", + "database_engine": "mysql", + "database_engine_version": 8, + "vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250", + "status": "Running", + "label": "some label", + "tag": "some tag", + "dbname": "defaultdb", + "host": "HOSTNAME_GOES_HERE", + "public_host": "PUBLIC_HOSTNAME_GOES_HERE", + "user": "vultradmin", + "password": "PASSWORD_GOES_HERE", + "port": 16751, + "maintenance_dow": "sunday", + "maintenance_time": "06:00:00", + "latest_backup": "2022-11-02 12:58:18\"", + "trusted_ips": [ + "..." + ], + "mysql_sql_modes": [ + "ANSI", + "ERROR_FOR_DIVISION_BY_ZERO", + "NO_ENGINE_SUBSTITUTION", + "NO_ZERO_DATE", + "NO_ZERO_IN_DATE", + "STRICT_ALL_TABLES" + ], + "mysql_require_primary_key": true, + "mysql_slow_query_log": false, + "cluster_time_zone": "America/New_York" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "database-restore-from-backup", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "A user-supplied label for this Managed Database." + }, + "type": { + "type": "string", + "description": "The type of backup restoration to use for this Managed Database.\n* `pitr`: Point-in-time recovery\n* `basebackup`: Latest backup (default if omitted)" + }, + "date": { + "type": "string", + "description": "The [backup date](#operation/get-backup-information) to use when restoring the Managed Database in YYYY-MM-DD date format. Required for `pitr` type requests." + }, + "time": { + "type": "string", + "description": "The [backup time](#operation/get-backup-information) to use when restoring the Managed Database in HH-MM-SS time format (24-hour UTC). Required for `pitr` type requests." + } + }, + "required": [ + "label" + ] + }, + "examples": { + "request": { + "value": { + "label": "new_restore_label", + "type": "pitr", + "date": "2023-02-06", + "time": "08:00:00" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Create a new Managed Database from a backup." + } + }, + "/databases/{database-id}/fork": { + "post": { + "summary": "Fork Managed Database", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/fork\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"new_fork_label\",\n \"region\" : \"sea\",\n \"plan\" : \"vultr-dbaas-startup-cc-2-80-4\",\n \"type\" : \"pitr\",\n \"date\" : \"2023-02-06\",\n \"time\" : \"08:00:00\"\n }'" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "database": { + "$ref": "#/components/schemas/database" + } + } + }, + "examples": { + "database": { + "value": { + "database": { + "id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5", + "date_created": "2022-05-09 10:13:31", + "plan": "vultr-dbaas-startup-cc-2-80-4", + "plan_disk": 80, + "plan_ram": 4096, + "plan_vcpus": 2, + "plan_replicas": 0, + "region": "SEA", + "database_engine": "mysql", + "database_engine_version": 8, + "vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250", + "status": "Running", + "label": "new_fork_label", + "tag": "some tag", + "dbname": "defaultdb", + "host": "HOSTNAME_GOES_HERE", + "public_host": "PUBLIC_HOSTNAME_GOES_HERE", + "user": "vultradmin", + "password": "PASSWORD_GOES_HERE", + "port": 16751, + "maintenance_dow": "sunday", + "maintenance_time": "06:00:00", + "latest_backup": "2022-11-02 12:58:18\"", + "trusted_ips": [ + "..." + ], + "mysql_sql_modes": [ + "ANSI", + "ERROR_FOR_DIVISION_BY_ZERO", + "NO_ENGINE_SUBSTITUTION", + "NO_ZERO_DATE", + "NO_ZERO_IN_DATE", + "STRICT_ALL_TABLES" + ], + "mysql_require_primary_key": true, + "mysql_slow_query_log": false, + "cluster_time_zone": "America/New_York" + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "database-fork", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "A user-supplied label for this Managed Database." + }, + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the Managed Database is located." + }, + "plan": { + "type": "string", + "description": "The [Plan id](#operation/list-database-plans) to use when deploying this Managed Database." + }, + "vpc_id": { + "type": "string", + "description": "The [VPC id](#operation/list-vpcs) to use when deploying this Managed Database. It can also be set to `new` to configure a new VPC network with this deployment." + }, + "type": { + "type": "string", + "description": "The type of backup restoration to use for this Managed Database.\n* `pitr`: Point-in-time recovery\n* `basebackup`: Latest backup (default if omitted)" + }, + "date": { + "type": "string", + "description": "The [backup date](#operation/get-backup-information) to use when restoring the Managed Database in YYYY-MM-DD date format. Required for `pitr` type requests." + }, + "time": { + "type": "string", + "description": "The [backup time](#operation/get-backup-information) to use when restoring the Managed Database in HH-MM-SS time format (24-hour UTC). Required for `pitr` type requests." + } + }, + "required": [ + "label", + "region", + "plan" + ] + }, + "examples": { + "request": { + "value": { + "label": "new_fork_label", + "region": "sea", + "plan": "vultr-dbaas-startup-cc-2-80-4", + "type": "pitr", + "date": "2023-02-06", + "time": "08:00:00" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Fork a Managed Database to a new subscription from a backup." + } + }, + "/databases/{database-id}/connection-pools": { + "get": { + "summary": "List Connection Pools", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connection-pools\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "connections": { + "$ref": "#/components/schemas/database-connections" + }, + "connection_pools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/connection-pool" + } + }, + "meta": { + "$ref": "#/components/schemas/dbaas-meta" + } + } + }, + "examples": { + "connection_pools": { + "value": { + "connections": { + "used": 12, + "available": 10, + "max": 22 + }, + "connection_pools": [ + { + "name": "first_pool_name", + "database": "some_db_name", + "username": "some_username", + "mode": "transaction", + "size": 5 + }, + { + "name": "second_pool_name", + "database": "another_db_name", + "username": "another_username", + "mode": "session", + "size": 7 + } + ], + "meta": { + "total": 2 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-connection-pools", + "description": "List all connection pools within the Managed Database (PostgreSQL engine types only).", + "security": [ + { + "API Key": [] + } + ] + }, + "post": { + "summary": "Create Connection Pool", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connection-pools\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"new_connection_pool\",\n \"database\" : \"some_database\",\n \"username\" : \"some_user\",\n \"mode\" : \"transaction\",\n \"size\" : 5\n }'" + } + ], + "responses": { + "202": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "connection_pool": { + "$ref": "#/components/schemas/connection-pool" + } + } + }, + "examples": { + "connection_pool": { + "value": { + "connection_pool": { + "name": "new_connection_pool", + "database": "some_database", + "username": "some_user", + "mode": "transaction", + "size": 5 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "create-connection-pool", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the connection pool." + }, + "database": { + "type": "string", + "description": "The logical database associated with the connection pool." + }, + "username": { + "type": "string", + "description": "The database user associated with the connection pool." + }, + "mode": { + "type": "string", + "description": "The mode for the connection pool.\n* `session`\n* `transaction`\n* `statement`" + }, + "size": { + "type": "integer", + "description": "The size of the connection pool." + } + }, + "required": [ + "name", + "database", + "username", + "mode", + "size" + ] + }, + "examples": { + "request": { + "value": { + "name": "new_connection_pool", + "database": "some_database", + "username": "some_user", + "mode": "transaction", + "size": 5 + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Create a new connection pool within the Managed Database (PostgreSQL engine types only)." + } + }, + "/databases/{database-id}/connection-pools/{pool-name}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "database-id", + "in": "path", + "required": true, + "description": "The [Managed Database ID](#operation/list-databases)." + }, + { + "schema": { + "type": "string" + }, + "name": "pool-name", + "in": "path", + "required": true, + "description": "The [connection pool name](#operation/list-connection-pools)." + } + ], + "get": { + "summary": "Get Connection Pool", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connection-pools/{pool-name}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "connection_pool": { + "$ref": "#/components/schemas/connection-pool" + } + } + }, + "examples": { + "connection_pool": { + "value": { + "connection_pool": { + "name": "some_connection_pool", + "database": "some_database", + "username": "some_user", + "mode": "transaction", + "size": 5 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "get-connection-pool", + "description": "Get information about a Managed Database connection pool (PostgreSQL engine types only).", + "security": [ + { + "API Key": [] + } + ] + }, + "put": { + "summary": "Update Connection Pool", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connection-pools/{pool-name}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"mode\" : \"session\"\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "connection_pool": { + "$ref": "#/components/schemas/connection-pool" + } + } + }, + "examples": { + "connection_pool": { + "value": { + "connection_pool": { + "name": "some_connection_pool", + "database": "some_database", + "username": "some_user", + "mode": "transaction", + "size": 5 + } + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "update-connection-pool", + "description": "Update connection-pool information within a Managed Database (PostgreSQL engine types only).", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "database": { + "type": "string", + "description": "The logical database associated with the connection pool." + }, + "username": { + "type": "string", + "description": "The database user associated with the connection pool." + }, + "mode": { + "type": "string", + "description": "The mode for the connection pool.\n* `session`\n* `transaction`\n* `statement`" + }, + "size": { + "type": "integer", + "description": "The size of the connection pool." + } + } + }, + "examples": { + "request": { + "value": { + "mode": "session" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + } + }, + "delete": { + "summary": "Delete Connection Pool", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connection-pools/{pool-name}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "delete-connection-pool", + "description": "Delete a connection pool within a Managed Database (PostgreSQL engine types only).", + "security": [ + { + "API Key": [] + } + ] + } + }, + "/databases/{database-id}/advanced-options": { + "get": { + "summary": "List Advanced Options", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/advanced-options\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "configured_options": { + "type": "object" + }, + "available_options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/dbaas-available-options" + } + } + } + }, + "examples": { + "advanced_options": { + "value": { + "configured_options": { + "jit": false, + "temp_file_limit": 10000, + "track_io_timing": "off" + }, + "available_options": [ + { + "name": "autovacuum_analyze_scale_factor", + "type": "float", + "min_value": 0, + "max_value": 1 + }, + { + "name": "autovacuum_analyze_threshold", + "type": "int", + "min_value": 0, + "max_value": 2147483647 + }, + "..." + ] + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-advanced-options", + "description": "List all configured and available advanced options for the Managed Database (PostgreSQL engine types only).", + "security": [ + { + "API Key": [] + } + ] + }, + "put": { + "summary": "Update Advanced Options", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/advanced-options\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"jit\" : false,\n \"temp_file_limit\" : 10000,\n \"track_io_timing\" : \"off\"\n }'" + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "configured_options": { + "type": "object" + }, + "available_options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/dbaas-available-options" + } + } + } + }, + "examples": { + "advanced_options": { + "value": { + "configured_options": { + "jit": false, + "temp_file_limit": 10000, + "track_io_timing": "off" + }, + "available_options": [ + { + "name": "autovacuum_analyze_scale_factor", + "type": "float", + "min_value": 0, + "max_value": 1 + }, + { + "name": "autovacuum_analyze_threshold", + "type": "int", + "min_value": 0, + "max_value": 2147483647 + }, + "..." + ] + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "update-advanced-options", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "autovacuum_analyze_scale_factor": { + "type": "float", + "description": "Accepted values: 0 - 1" + }, + "autovacuum_analyze_threshold": { + "type": "int", + "description": "Accepted values: 0 - 2147483647" + }, + "autovacuum_freeze_max_age": { + "type": "int", + "description": "Accepted values: 200000000 - 1500000000" + }, + "autovacuum_max_workers": { + "type": "int", + "description": "Accepted values: 1 - 20" + }, + "autovacuum_naptime": { + "type": "int", + "description": "Accepted values: 1 - 86400" + }, + "autovacuum_vacuum_cost_delay": { + "type": "int", + "description": "Accepted values: -1 - 100" + }, + "autovacuum_vacuum_cost_limit": { + "type": "int", + "description": "Accepted values: -1 - 10000" + }, + "autovacuum_vacuum_scale_factor": { + "type": "float", + "description": "Accepted values: 0 - 1" + }, + "autovacuum_vacuum_threshold": { + "type": "int", + "description": "Accepted values: 0 - 2147483647" + }, + "bgwriter_delay": { + "type": "int", + "description": "Accepted values: 10 - 10000" + }, + "bgwriter_flush_after": { + "type": "int", + "description": "Accepted values: 0 - 2048" + }, + "bgwriter_lru_maxpages": { + "type": "int", + "description": "Accepted values: 0 - 1073741823" + }, + "bgwriter_lru_multiplier": { + "type": "float", + "description": "Accepted values: 0 - 10" + }, + "deadlock_timeout": { + "type": "int", + "description": "Accepted values: 500 - 1800000" + }, + "default_toast_compression": { + "type": "enum", + "description": "Accepted values:\n* `lz4`\n* `pglz`" + }, + "idle_in_transaction_session_timeout": { + "type": "int", + "description": "Accepted values: 0 - 604800000" + }, + "jit": { + "type": "boolean", + "description": "Accepted values:\n* `true`\n* `false`" + }, + "log_autovacuum_min_duration": { + "type": "int", + "description": "Accepted values: -1 - 2147483647" + }, + "log_error_verbosity": { + "type": "enum", + "description": "Accepted values:\n* `TERSE`\n* `DEFAULT`\n* `VERBOSE`" + }, + "log_line_prefix": { + "type": "enum", + "description": "Accepted values:\n* `'pid=%p,user=%u,db=%d,app=%a,client=%h '`\n* `'%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '`\n* `'%m [%p] %q[user=%u,db=%d,app=%a] '`" + }, + "log_min_duration_statement": { + "type": "int", + "description": "Accepted values: -1 - 86400000" + }, + "max_files_per_process": { + "type": "int", + "description": "Accepted values: 1000 - 4096" + }, + "max_locks_per_transaction": { + "type": "int", + "description": "Accepted values: 64 - 6400" + }, + "max_logical_replication_workers": { + "type": "int", + "description": "Accepted values: 4 - 64" + }, + "max_parallel_workers": { + "type": "int", + "description": "Accepted values: 0 - 96" + }, + "max_parallel_workers_per_gather": { + "type": "int", + "description": "Accepted values: 0 - 96" + }, + "max_pred_locks_per_transaction": { + "type": "int", + "description": "Accepted values: 64 - 5120" + }, + "max_prepared_transactions": { + "type": "int", + "description": "Accepted values: 0 - 10000" + }, + "max_replication_slots": { + "type": "int", + "description": "Accepted values: 8 - 64" + }, + "max_stack_depth": { + "type": "int", + "description": "Accepted values: 2097152 - 6291456" + }, + "max_standby_archive_delay": { + "type": "int", + "description": "Accepted values: 1 - 43200000" + }, + "max_standby_streaming_delay": { + "type": "int", + "description": "Accepted values: 1 - 43200000" + }, + "max_wal_senders": { + "type": "int", + "description": "Accepted values: 20 - 64" + }, + "max_worker_processes": { + "type": "int", + "description": "Accepted values: 8 - 96" + }, + "pg_partman_bgw.interval": { + "type": "int", + "description": "Accepted values: 3600 - 604800" + }, + "pg_partman_bgw.role": { + "type": "string", + "description": "Maximum length: 64 characters" + }, + "pg_stat_statements.track": { + "type": "enum", + "description": "Accepted values:\n* `all`\n* `top`\n* `none`" + }, + "temp_file_limit": { + "type": "int", + "description": "Accepted values: -1 - 2147483647" + }, + "track_activity_query_size": { + "type": "int", + "description": "Accepted values: 1024 - 10240" + }, + "track_commit_timestamp": { + "type": "enum", + "description": "Accepted values:\n* `off`\n* `on`" + }, + "track_functions": { + "type": "enum", + "description": "Accepted values:\n* `all`\n* `pl`\n* `none`" + }, + "track_io_timing": { + "type": "enum", + "description": "Accepted values:\n* `off`\n* `on`" + }, + "wal_sender_timeout": { + "type": "int", + "description": "Accepted values: 0, 5000 - 10800000" + }, + "wal_writer_delay": { + "type": "int", + "description": "Accepted values: 10 - 200" + } + } + }, + "examples": { + "request": { + "value": { + "jit": false, + "temp_file_limit": 10000, + "track_io_timing": "off" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Updates an advanced configuration option for the Managed Database (PostgreSQL engine types only)." + } + }, + "/databases/{database-id}/version-upgrade": { + "get": { + "summary": "List Available Versions", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/version-upgrade\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "available_versions": { + "type": "array", + "description": "A list of available versions greater than the current version of the Managed Database.", + "items": { + "type": "string" + } + } + } + }, + "examples": { + "available_versions": { + "value": { + "available_versions": [ + "12", + "13", + "14", + "15" + ] + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "list-available-versions", + "description": "List all available version upgrades within the Managed Database (PostgreSQL engine types only).", + "security": [ + { + "API Key": [] + } + ] + }, + "post": { + "summary": "Start Version Upgrade", + "tags": [ + "managed-databases" + ], + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/databases/{database-id}/version-upgrade\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"version\" : \"15\"\n }'" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "A message indicating whether the version upgrade was successfully initialized." + } + } + }, + "examples": { + "message": { + "value": { + "message": "Version upgrade successfully initialized." + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Validation Error" + } + }, + "operationId": "start-version-upgrade", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "version": { + "type": "string", + "description": "The version number to upgrade the Managed Database to." + } + }, + "required": [ + "version" + ] + }, + "examples": { + "request": { + "value": { + "version": "15" + } + } + } + } + }, + "description": "Include a JSON object in the request body with a content type of **application/json**." + }, + "description": "Start a version upgrade for the Managed Database (PostgreSQL engine types only)." + } + }, + "/registries": { + "get": { + "summary": "List Container Registries", + "tags": [ + "Container Registry" + ], + "description": "List All Container Registry Subscriptions for this account", + "operationId": "list-registries", + "security": [ + { + "API Key": [] + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "registries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/registry" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Bad Request" + } + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/registries\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + } + }, + "/registry": { + "post": { + "summary": "Create Container Registry", + "tags": [ + "Container Registry" + ], + "description": "Create a new Container Registry Subscription", + "operationId": "create-registry", + "security": [ + { + "API Key": [] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "$ref": "#/components/schemas/registry/properties/name" + }, + "public": { + "$ref": "#/components/schemas/registry/properties/public" + }, + "region": { + "type": "string", + "description": "The name of the region you'd like to deploy this Registry in. Can get list of regions from /registry/region/list endpoint i.e. sjc" + }, + "plan": { + "type": "string", + "description": "The key of the plan you'd like to select which dictates how much storage you're allocated and the monthly cost. Can get list of plans from /plan/list endpoint i.e. start_up" + } + }, + "required": [ + "name", + "public", + "region", + "plan" + ] + }, + "examples": { + "example": { + "value": { + "name": "charizard", + "public": false, + "region": "sjc", + "plan": "business" + } + } + } + } + } + }, + "responses": { + "201": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/registry" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "422": { + "description": "Bad Request" + } + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/registries\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"sjc\",\n \"name\" : \"charizard\",\n \"plan\" : \"business\",\n \"public\" : false\n }'" + } + ] + } + }, + "/registry/{registry-id}": { + "get": { + "summary": "Read Container Registry", + "tags": [ + "Container Registry" + ], + "description": "Get a single Container Registry Subscription", + "operationId": "read-registry", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/registry-id" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/registry" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Bad Request" + } + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/registry/{registry-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + }, + "put": { + "summary": "Update Container Registry", + "tags": [ + "Container Registry" + ], + "description": "Update a Container Registry Subscription", + "operationId": "update-registry", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/registry-id" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "public": { + "$ref": "#/components/schemas/registry/properties/public" + }, + "plan": { + "type": "string", + "description": "The key of the plan you'd like to upgrade to which dictates how much storage you're allocated and the monthly cost. Can get list of plans from /plan/list endpoint i.e. business" + } + } + }, + "examples": { + "example": { + "value": { + "public": true, + "plan": "business" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/registry" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Bad Request" + } + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/registry/{registry-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"sjc\",\n \"name\" : \"charizard\",\n \"plan\" : \"business\",\n \"public\" : false\n }'" + } + ] + }, + "delete": { + "summary": "Delete Container Registry", + "tags": [ + "Container Registry" + ], + "description": "Deletes a Container Registry Subscription", + "operationId": "delete-registry", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/registry-id" + } + ], + "responses": { + "204": { + "description": "No Content - Successfully Deleted" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Bad Request" + } + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/registry/{registry-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + } + }, + "/registry/{registry-id}/repositories": { + "get": { + "summary": "List Repositories", + "tags": [ + "Container Registry" + ], + "description": "List All Repositories in a Container Registry Subscription", + "operationId": "list-registry-repositories", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/registry-id" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "repositories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/registry-repository" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Bad Request" + } + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/repositories\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + } + }, + "/registry/{registry-id}/repository/{repository-image}": { + "get": { + "summary": "Read Repository", + "tags": [ + "Container Registry" + ], + "description": "Get a single Repository in a Container Registry Subscription", + "operationId": "read-registry-repository", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/registry-id" + }, + { + "$ref": "#/components/parameters/repository-image" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/registry-repository" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Bad Request" + } + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/repository/{repository-image}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + }, + "put": { + "summary": "Update Repository", + "tags": [ + "Container Registry" + ], + "description": "Update a Repository in a Container Registry Subscription", + "operationId": "update-repository", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/registry-id" + }, + { + "$ref": "#/components/parameters/repository-image" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "$ref": "#/components/schemas/registry-repository/properties/description" + } + } + }, + "examples": { + "example": { + "value": { + "description": "This is my super cool hello-world project" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/registry-repository" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Bad Request" + } + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/repository/{repository-image}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\" : \"his is my super cool hello-world project\"\n }'" + } + ] + }, + "delete": { + "summary": "Delete Repository", + "tags": [ + "Container Registry" + ], + "description": "Deletes a Repository from a Container Registry Subscription", + "operationId": "delete-repository", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/registry-id" + }, + { + "$ref": "#/components/parameters/repository-image" + } + ], + "responses": { + "204": { + "description": "No Content - Successfully Deleted" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Bad Request" + } + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/repository/{repository-image}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + } + }, + "/registry/{registry-id}/docker-credentials?expiry_seconds=0&read_write=false": { + "options": { + "summary": "Create Docker Credentials", + "tags": [ + "Container Registry" + ], + "description": "Create a fresh set of Docker Credentials for this Container Registry Subscription", + "operationId": "create-registry-docker-credentials", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/registry-id" + }, + { + "$ref": "#/components/parameters/docker-credentials-expiry-seconds" + }, + { + "$ref": "#/components/parameters/docker-credentials-read-write" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/registry-docker-credentials" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Bad Request" + } + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/docker-credentials\" \\\n -X OPTIONS \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + } + }, + "/registry/{registry-id}/docker-credentials/kubernetes?expiry_seconds=0&read_write=false&base64_encode=false": { + "options": { + "summary": "Create Docker Credentials for Kubernetes", + "tags": [ + "Container Registry" + ], + "description": "Create a fresh set of Docker Credentials for this Container Registry Subscription and return them in a Kubernetes friendly YAML format", + "operationId": "create-registry-kubernetes-docker-credentials", + "security": [ + { + "API Key": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/registry-id" + }, + { + "$ref": "#/components/parameters/docker-credentials-expiry-seconds" + }, + { + "$ref": "#/components/parameters/docker-credentials-read-write" + }, + { + "$ref": "#/components/parameters/kubernetes-docker-credentials-base64-encode" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/registry-kubernetes-docker-credentials" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Bad Request" + } + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/docker-credentials/kubernetes\" \\\n -X OPTIONS \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + } + }, + "/registry/region/list": { + "get": { + "summary": "List Registry Regions", + "tags": [ + "Container Registry" + ], + "description": "List All Regions where a Container Registry can be deployed", + "operationId": "list-registry-regions", + "security": [ + { + "API Key": [] + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "regions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/registry-region" + } + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "422": { + "description": "Bad Request" + } + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/registry/region/list\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + } + }, + "/registry/plan/list": { + "get": { + "summary": "List Registry Plans", + "tags": [ + "Container Registry" + ], + "description": "List All Plans to help choose which one is the best fit for your Container Registry", + "operationId": "list-registry-plans", + "security": [ + { + "API Key": [] + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "plans": { + "type": "object", + "properties": { + "start_up": { + "$ref": "#/components/schemas/registry-plan" + }, + "business": { + "$ref": "#/components/schemas/registry-plan" + }, + "premium": { + "$ref": "#/components/schemas/registry-plan" + }, + "enterprise": { + "$ref": "#/components/schemas/registry-plan" + } + } + } + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "422": { + "description": "Bad Request" + } + }, + "x-codeSamples": [ + { + "lang": "Curl", + "source": "curl \"https://api.vultr.com/v2/registry/plan/list\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"" + } + ] + } + } + }, + "components": { + "parameters": { + "registry-id": { + "name": "registry-id", + "in": "path", + "required": true, + "description": "The [Registry ID](#components/schemas/registry/properties/id). Which can be found by [List Registries](#operation/list-registries).", + "schema": { + "type": "string" + } + }, + "repository-image": { + "name": "repository-image", + "in": "path", + "required": true, + "description": "The [Repository Image](#components/schemas/registry-repository/properties/image). Which can be found by [List Repositories](#operation/list-registry-repositories).", + "schema": { + "type": "string" + } + }, + "docker-credentials-expiry-seconds": { + "name": "expiry_seconds", + "in": "query", + "description": "The seconds until these credentials expire. When set to 0, credentials do not expire. The default value is 0", + "default": 0, + "schema": { + "type": "integer" + } + }, + "docker-credentials-read-write": { + "name": "read_write", + "in": "query", + "description": "Whether these credentials will have only PULL access or PUSH access as well. If true these credentials can PUSH to repos in this registry. If false, these credentials can only PULL. Default is false.", + "default": false, + "schema": { + "type": "boolean" + } + }, + "kubernetes-docker-credentials-base64-encode": { + "name": "base64_encode", + "in": "query", + "description": "Whether this YAML will be returned in a base64 encoded string for ease of downloading. If true, the response will be a base64 encoded string. Default is false.", + "default": false, + "schema": { + "type": "boolean" + } + } + }, + "schemas": { + "billing": { + "description": "Invoice", + "type": "object", + "x-examples": { + "example": { + "id": 123456, + "date": "2020-10-10T01:56:20+00:00", + "type": "invoice", + "description": "Invoice #123456", + "amount": 100.25, + "balance": 100.25 + } + }, + "x-tags": [ + "billing" + ], + "properties": { + "id": { + "type": "number", + "description": "ID of the billing history item" + }, + "date": { + "type": "string", + "description": "Date billing history item was generated" + }, + "type": { + "type": "string", + "description": "Type of billing history item" + }, + "description": { + "type": "string", + "description": "Description of billing history item" + }, + "amount": { + "type": "number", + "description": "Amount for the billing history item in dollars" + }, + "balance": { + "type": "number", + "description": "The accounts balance in dollars" + } + }, + "title": "billing" + }, + "invoice": { + "title": "invoice", + "type": "object", + "x-examples": { + "example-1": { + "id": 123456, + "date": "2021-11-02T00:48:13+00:00", + "description": "Invoice #132456", + "amount": 0.25, + "balance": -197.88 + } + }, + "properties": { + "id": { + "type": "integer", + "description": "ID of the invoice" + }, + "date": { + "type": "string", + "description": "Date invoice was generated" + }, + "description": { + "type": "string", + "description": "description of item" + }, + "amount": { + "type": "number", + "description": "Amount due in dollars" + }, + "balance": { + "type": "number", + "description": "Account balance amount in dollars" + } + } + }, + "vke-cluster": { + "title": "vke-cluster", + "type": "object", + "x-examples": { + "example vke cluster": { + "id": "455dcd32-e621-48ee-a10e-0cb5f754e13e", + "firewall_group_id": "", + "label": "vke", + "date_created": "2021-07-07T22:57:01+00:00", + "cluster_subnet": "10.244.0.0/16", + "service_subnet": "10.96.0.0/12", + "ip": "0.0.0.0", + "endpoint": "455dcd32-e621-48ee-a10e-0cb5f754e13e.vultr-k8s.com", + "version": "v1.20.0+1", + "region": "lax", + "status": "pending", + "ha_controlplanes": false, + "node_pools": [ + { + "id": "11e4443a-f92a-46d6-94c8-61c1a1a7514e", + "date_created": "2021-07-07T22:57:01+00:00", + "label": "my-label", + "tag": "my-tag", + "plan": "vc2-1c-2gb", + "status": "pending", + "node_quantity": 2, + "nodes": [ + { + "id": "43eda5c8-67f7-4c63-88bc-2f568b48b2b0", + "label": "my-label-6ac60e6313dd1", + "date_created": "2021-07-07T22:57:01+00:00", + "status": "pending" + }, + { + "id": "15a7893d-d584-45d5-a74c-d9f46866aa3c", + "label": "my-label-6ac60e6313ddc", + "date_created": "2021-07-07T22:57:01+00:00", + "status": "pending" + } + ] + } + ] + } + }, + "x-tags": [ + "kubernetes" + ], + "description": "VKE Cluster", + "properties": { + "id": { + "type": "string", + "description": "ID for the VKE cluster" + }, + "firewall_group_id": { + "type": "string", + "description": "The [Firewall Group id](#operation/list-firewall-groups) linked to this cluster." + }, + "label": { + "type": "string", + "description": "Label for your cluster" + }, + "date_created": { + "type": "string", + "description": "Date of creation" + }, + "cluster_subnet": { + "type": "string", + "description": "IP range that your pods will run on in this cluster" + }, + "service_subnet": { + "type": "string", + "description": "IP range that services will run on this cluster" + }, + "ip": { + "type": "string", + "description": "IP for your Kubernetes Clusters Control Plane" + }, + "endpoint": { + "type": "string", + "description": "Domain for your Kubernetes Clusters Control Plane" + }, + "version": { + "type": "string", + "description": "Version of Kubernetes this cluster is running on" + }, + "region": { + "type": "string", + "description": "Region this Kubernetes Cluster is running in" + }, + "status": { + "type": "string", + "description": "Status for VKE cluster" + }, + "ha_controlplanes": { + "type": "boolean", + "description": "Whether a highly available control planes configuration has been deployed\n* true\n* false (default)" + }, + "node_pools": { + "type": "array", + "description": "NodePools in this cluster", + "items": { + "$ref": "#/components/schemas/nodepools" + } + } + } + }, + "nodepool-instances": { + "title": "nodepool-instances", + "type": "object", + "description": "Instance that belongs to a nodepool", + "x-examples": { + "example nodepool": { + "id": "43eda5c8-67f7-4c63-88bc-2f568b48b2b0", + "label": "my-label-48770259-6ac60e6313dd1", + "date_created": "2021-07-07T22:57:01+00:00", + "status": "pending" + } + }, + "properties": { + "id": { + "type": "string", + "description": "ID of the nodepool instance" + }, + "label": { + "type": "string", + "description": "Label of the nodepool instance" + }, + "date_created": { + "type": "string", + "description": "Date of creation" + } + } + }, + "nodepools": { + "title": "nodepools", + "type": "object", + "x-examples": { + "example nodepool": { + "id": "11e4443a-f92a-46d6-94c8-61c1a1a7514e", + "date_created": "2021-07-07T22:57:01+00:00", + "label": "my-label", + "tag": "my-tag", + "plan": "vc2-1c-2gb", + "status": "pending", + "node_quantity": 2, + "min_nodes": 2, + "max_nodes": 5, + "auto_scaler": true, + "nodes": [ + { + "id": "43eda5c8-67f7-4c63-88bc-2f568b48b2b0", + "label": "my-label-48770259-6ac60e6313dd1", + "date_created": "2021-07-07T22:57:01+00:00", + "status": "pending" + }, + { + "id": "15a7893d-d584-45d5-a74c-d9f46866aa3c", + "label": "my-label-48770259-6ac60e6313ddc", + "date_created": "2021-07-07T22:57:01+00:00", + "status": "pending" + } + ] + } + }, + "description": "NodePool", + "x-tags": [ + "kubernetes" + ], + "properties": { + "id": { + "type": "string", + "description": "The [NodePool ID](#operation/get-nodepools)." + }, + "date_created": { + "type": "string", + "description": "Date of creation" + }, + "label": { + "type": "string", + "description": "Label for nodepool" + }, + "tag": { + "type": "string", + "description": "Tag for node pool" + }, + "plan": { + "type": "string", + "description": "Plan used for nodepool" + }, + "status": { + "type": "string", + "description": "Status for nodepool" + }, + "node_quantity": { + "type": "integer", + "description": "Number of nodes in nodepool" + }, + "nodes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/nodepool-instances" + } + }, + "date_updated": { + "type": "string", + "description": "Date the nodepool was updated." + }, + "auto_scaler": { + "type": "boolean", + "description": "Displays if the auto scaler is enabled or disabled for your cluster." + }, + "min_nodes": { + "type": "integer", + "description": "Auto scaler field that displays the minimum nodes you want for your cluster." + }, + "max_nodes": { + "description": "Auto scaler field that displays the maximum nodes you want for your cluster.", + "type": "integer" + } + } + }, + "network": { + "title": "network", + "type": "object", + "x-examples": { + "example": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "region": "ewr", + "description": "Example Private Network", + "v4_subnet": "10.99.0.0", + "v4_subnet_mask": 24 + } + }, + "description": "Network information.", + "x-tags": [ + "Private Networks" + ], + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Private Network." + }, + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the network is located." + }, + "date_created": { + "type": "string", + "description": "Date the network was created." + }, + "description": { + "type": "string", + "description": "A description of the private network." + }, + "v4_subnet": { + "type": "string", + "description": "The IPv4 network address. For example: 10.99.0.0" + }, + "v4_subnet_mask": { + "type": "integer", + "description": "The number of bits for the netmask in CIDR notation. Example: 24" + } + }, + "required": [ + "id" + ], + "deprecated": true + }, + "vpc": { + "title": "vpc", + "type": "object", + "x-examples": { + "example": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "region": "ewr", + "description": "Example VPC", + "v4_subnet": "10.99.0.0", + "v4_subnet_mask": 24 + } + }, + "description": "VPC information.", + "x-tags": [ + "VPCs" + ], + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the VPC." + }, + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the VPC is located." + }, + "date_created": { + "type": "string", + "description": "Date the VPC was created." + }, + "description": { + "type": "string", + "description": "A description of the VPC." + }, + "v4_subnet": { + "type": "string", + "description": "The IPv4 VPC address. For example: 10.99.0.0" + }, + "v4_subnet_mask": { + "type": "integer", + "description": "The number of bits for the netmask in CIDR notation. Example: 24" + } + }, + "required": [ + "id" + ] + }, + "vpc2": { + "title": "vpc2", + "type": "object", + "x-examples": { + "example": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "region": "ewr", + "description": "Example VPC", + "ip_block": "10.99.0.0", + "prefix_length": 24 + } + }, + "description": "VPC 2.0 information.", + "x-tags": [ + "VPC" + ], + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the VPC." + }, + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the VPC is located." + }, + "date_created": { + "type": "string", + "description": "Date the VPC was created." + }, + "description": { + "type": "string", + "description": "A description of the VPC." + }, + "ip_block": { + "type": "string", + "description": "The VPC subnet IP address. For example: 10.99.0.0" + }, + "prefix_length": { + "type": "integer", + "description": "The number of bits for the netmask in CIDR notation. Example: 24" + } + }, + "required": [ + "id" + ] + }, + "instance-vpc2": { + "title": "instance-vpc2", + "type": "object", + "x-examples": { + "example": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "mac_address": "00:00:5e:00:53:5e", + "ip_block": "10.99.0.0" + } + }, + "description": "VPC 2.0 information.", + "x-tags": [ + "VPC" + ], + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the VPC." + }, + "mac_address": { + "type": "string", + "description": "The MAC address to use for this instance on the attached VPC 2.0 network." + }, + "ip_address": { + "type": "string", + "description": "The IP address to use for this instance on the attached VPC 2.0 network." + } + }, + "required": [ + "id" + ] + }, + "user": { + "title": "user", + "type": "object", + "x-tags": [ + "users" + ], + "description": "User information.", + "x-examples": { + "user": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "email": "user@example.com", + "api_enabled": true, + "acls": [ + "manage_users", + "subscriptions_view", + "subscriptions", + "provisioning", + "billing", + "support", + "abuse", + "dns", + "upgrade", + "objstore", + "loadbalancer" + ] + } + }, + "properties": { + "user": { + "type": "object", + "description": "An array of Users.", + "properties": { + "id": { + "type": "string", + "description": "The User's id." + }, + "name": { + "type": "string", + "description": "The User's name." + }, + "api_enabled": { + "type": "boolean", + "description": "Permit API access for this User.\n\n* true\n* false" + }, + "email": { + "type": "string", + "description": "The User's email address." + }, + "password": { + "type": "string", + "description": "The User's password." + }, + "acls": { + "type": "array", + "description": "An array of permission granted.\n\n* abuse\n* alerts\n* billing\n* dns\n* firewall\n* loadbalancer\n* manage\\_users\n* objstore\n* provisioning\n* subscriptions\n* subscriptions\\_view\n* support\n* upgrade", + "items": { + "type": "string" + } + } + } + } + } + }, + "startup": { + "title": "startup", + "type": "object", + "x-tags": [ + "startup" + ], + "description": "Startup Script information.", + "x-examples": { + "startup": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "date_modified": "2020-10-10T01:59:20+00:00", + "name": "Example Startup Script", + "type": "pxe", + "script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ==" + } + }, + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Startup Script." + }, + "date_created": { + "type": "string", + "description": "The date the Startup Script was created." + }, + "date_modified": { + "type": "string", + "description": "The date the Startup Script was last modified." + }, + "name": { + "type": "string", + "description": "The user-supplied name of the Startup Script." + }, + "script": { + "type": "string", + "description": "The base-64 encoded Startup Script." + }, + "type": { + "type": "string", + "description": "The Startup Script type.\n\n* boot\n* pxe" + } + } + }, + "ssh": { + "title": "ssh", + "type": "object", + "x-examples": { + "ssh-key": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "name": "Example SSH Key", + "ssh_key": "ssh-rsa AA... user@example.com" + } + }, + "description": "SSH Key information.", + "x-tags": [ + "ssh" + ], + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the SSH Key." + }, + "date_created": { + "type": "string", + "description": "The date this SSH Key was created." + }, + "name": { + "type": "string", + "description": "The user-supplied name for this SSH Key." + }, + "ssh_key": { + "type": "string", + "description": "The SSH Key." + } + } + }, + "snapshot": { + "title": "snapshot", + "type": "object", + "x-examples": { + "snapshot": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "description": "Example Snapshot", + "size": 42949672960, + "status": "complete", + "os_id": 215, + "app_id": 0 + } + }, + "description": "Snapshot information.", + "x-tags": [ + "snapshot" + ], + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Snapshot." + }, + "date_created": { + "type": "string", + "description": "The date this snapshot was created." + }, + "description": { + "type": "string", + "description": "The user-supplied description of the Snapshot." + }, + "size": { + "type": "integer", + "description": "The snapshot size in bytes." + }, + "status": { + "type": "string", + "description": "The Snapshot status.\n\n* pending\n* complete\n* deleted" + }, + "os_id": { + "type": "integer", + "description": "The [Operating System id](#operation/list-os) for this Snapshot." + }, + "app_id": { + "type": "integer", + "description": "The [Application id](#operation/list-applications) for this snapshot." + } + } + }, + "subaccount": { + "title": "subaccount", + "type": "object", + "x-examples": { + "subaccount": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "email": "subaccount@vultr.com", + "subaccount_name": "Acme Widgets LLC", + "subaccount_id": 472924, + "activated": false, + "balance": 0, + "pending_charges": 0 + } + }, + "description": "Sub-account information.", + "x-tags": [ + "subaccount" + ], + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the sub-account." + }, + "email": { + "type": "string", + "description": "The email address of this sub-account." + }, + "subaccount_name": { + "type": "string", + "description": "Your name for this sub-account." + }, + "subaccount_id": { + "type": "string", + "description": "Your ID for this sub-account." + }, + "activated": { + "type": "boolean", + "description": "Has this sub-account been activated or not." + }, + "balance": { + "type": "float", + "description": "The current balance of the sub-account." + }, + "pending_charges": { + "type": "float", + "description": "Charges due for this sub-account at the end of the billing period." + } + } + }, + "reserved-ip": { + "title": "reserved-ip", + "type": "object", + "x-examples": { + "reserved ip": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "region": "ewr", + "ip_type": "v6", + "subnet": "2001:db8:9999::", + "subnet_size": 64, + "label": "Example Reserved IPv6", + "instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60" + } + }, + "description": "Reserved IP information.", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Reserved IP." + }, + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the Reserved IP is located." + }, + "ip_type": { + "type": "string", + "description": "The type of IP address.\n\n* v4\n* v6" + }, + "subnet": { + "type": "string", + "description": "The IP subnet." + }, + "subnet_size": { + "type": "integer", + "description": "The IP network size in bits." + }, + "label": { + "type": "string", + "description": "The user-supplied label." + }, + "instance_id": { + "type": "string", + "description": "The [Instance id](#operation/list-instances) attached to this Reserved IP." + } + } + }, + "os": { + "title": "os", + "type": "object", + "x-tags": [ + "os" + ], + "x-examples": { + "os": { + "id": 127, + "name": "CentOS 6 x64", + "arch": "x64", + "family": "centos" + } + }, + "description": "Operating System information.", + "properties": { + "id": { + "type": "integer", + "description": "The Operating System id." + }, + "name": { + "type": "string", + "description": "The Operating System description." + }, + "arch": { + "type": "string", + "description": "The Operating System architecture." + }, + "family": { + "type": "string", + "description": "The Operating System family. " + } + } + }, + "application": { + "title": "application", + "type": "object", + "x-examples": { + "application": [ + { + "id": 1, + "name": "LEMP", + "short_name": "lemp", + "deploy_name": "LEMP on CentOS 6 x64", + "type": "one-click", + "vendor": "vultr", + "image_id": "" + }, + { + "id": 10008, + "name": "OpenLiteSpeed WordPress", + "short_name": "", + "deploy_name": "", + "type": "marketplace", + "vendor": "LiteSpeed_Technologies", + "image_id": "openlitespeed-wordpress" + } + ] + }, + "description": "Application information.", + "x-tags": [ + "application" + ], + "properties": { + "id": { + "type": "integer", + "description": "A unique ID for the application." + }, + "name": { + "type": "string", + "description": "The application name." + }, + "short_name": { + "type": "string", + "description": "The short application name." + }, + "deploy_name": { + "type": "string", + "description": "A long description of the application." + }, + "type": { + "type": "string", + "description": "The type of application.\n\n* one-click - use app_id to deploy one-click applications.\n* marketplace - use image_id to deploy marketplace applications." + }, + "vendor": { + "type": "string", + "description": "The application vendor name." + }, + "image_id": { + "type": "string", + "description": "A unique ID for marketplace applications." + } + } + }, + "account": { + "title": "account", + "type": "object", + "x-tags": [ + "account" + ], + "description": "Account information.", + "x-examples": { + "account": { + "account": { + "name": "Example User", + "email": "user@example.com", + "acls": [ + "manage_users", + "subscriptions_view", + "subscriptions", + "billing", + "support", + "provisioning", + "dns", + "abuse", + "upgrade", + "firewall", + "alerts", + "objstore", + "loadbalancer" + ], + "balance": -100.55, + "pending_charges": 60.25, + "last_payment_date": "2020-10-10T01:56:20+00:00", + "last_payment_amount": -1.25 + } + } + }, + "properties": { + "name": { + "type": "string", + "description": "Your user name." + }, + "email": { + "type": "string", + "description": "Your email address." + }, + "acls": { + "type": "array", + "description": "An array of permission granted.\n* manage\\_users\n* subscriptions_view\n* subscriptions\n* billing\n* support\n* provisioning\n* dns\n* abuse\n* upgrade\n* firewall\n* alerts\n* objstore\n* loadbalancer", + "items": { + "type": "string" + } + }, + "balance": { + "type": "number", + "description": "Your current account balance." + }, + "pending_charges": { + "type": "number", + "description": "Unbilled charges for this month." + }, + "last_payment_date": { + "description": "Date of your last payment.", + "type": "string" + }, + "last_payment_amount": { + "type": "number", + "description": "The amount of your last payment." + } + } + }, + "backup": { + "title": "backup", + "type": "object", + "x-examples": { + "backup": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "description": "Example Automatic Backup", + "size": 10000000, + "status": "complete" + } + }, + "description": "Backup information.", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the backup." + }, + "date_created": { + "type": "string", + "description": "The date the backup was created." + }, + "description": { + "type": "string", + "description": "The user-supplied description of this backup." + }, + "size": { + "type": "integer", + "description": "The size of the backup in Bytes." + }, + "status": { + "type": "string", + "description": "The Backup status.\n\n* complete\n* pending" + } + }, + "x-tags": [ + "backup" + ] + }, + "blockstorage": { + "title": "blockstorage", + "type": "object", + "x-tags": [ + "block" + ], + "description": "Block Storage information.", + "x-examples": { + "block structure": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "cost": 10, + "status": "active", + "size_gb": 100, + "region": "ewr", + "attached_to_instance": "b92f4771-d8cd-480a-b6e6-a14ca31ea2ca", + "date_created": "2020-10-10T01:56:20+00:00", + "label": "Example Block Storage" + } + }, + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Block Storage." + }, + "cost": { + "type": "integer", + "description": "The monthly cost of this Block Storage." + }, + "status": { + "type": "string", + "description": "The current status of this Block Storage.\n\n* active" + }, + "size_gb": { + "type": "integer", + "description": "Size of the Block Storage in GB." + }, + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the Block Storage is located." + }, + "attached_to_instance": { + "type": "string", + "description": "The [Instance id](#operation/list-instances) with this Block Storage attached." + }, + "date_created": { + "type": "string", + "description": "The date this Block Storage was created." + }, + "label": { + "type": "string", + "description": "The user-supplied label." + }, + "mount_id": { + "type": "string", + "description": "An ID associated with the instance, when mounted the ID can be found in /dev/disk/by-id prefixed with virtio." + } + } + }, + "firewall-group": { + "title": "firewall-group", + "type": "object", + "x-tags": [ + "firewall" + ], + "x-examples": { + "group": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "description": "Example Firewall Group", + "date_created": "2020-10-10T01:56:20+00:00", + "date_modified": "2020-10-10T01:59:20+00:00", + "instance_count": 2, + "rule_count": 2, + "max_rule_count": 50 + } + }, + "description": "Firewall Group information.", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Firewall Group." + }, + "description": { + "type": "string", + "description": "User-supplied description of this Firewall Group." + }, + "date_created": { + "type": "string", + "description": "Date the Firewall Group was originally created." + }, + "date_modified": { + "type": "string", + "description": "Date of the last modification to this Firewall Group." + }, + "instance_count": { + "type": "integer", + "description": "The number of instances linked to this Firewall Group." + }, + "rule_count": { + "type": "integer", + "description": "The number of rules in this Firewall Group." + }, + "max_rule_count": { + "type": "integer", + "description": "The maximum number of rules allowed for this Firewall Group." + } + } + }, + "firewall-rule": { + "title": "firewall-rule", + "type": "object", + "x-tags": [ + "firewall" + ], + "description": "Firewall rule information.", + "x-examples": { + "firewall rule": { + "id": 1, + "type": "v4", + "ip_type": "v4", + "action": "accept", + "protocol": "tcp", + "port": "80", + "subnet": "192.0.2.123", + "subnet_size": 24, + "source": "", + "notes": "Example Firewall Rule" + } + }, + "properties": { + "id": { + "type": "integer", + "description": "A unique ID for the Firewall Rule." + }, + "type": { + "type": "string", + "description": "This field is deprecated. Use `ip_type` instead.\n\nThe type of IP rule.\n\n* v4\n* v6", + "deprecated": true + }, + "ip_type": { + "type": "string", + "description": "The type of IP rule.\n\n* v4\n* v6" + }, + "action": { + "type": "string", + "description": "Action to take when this rule is met.\n\n* accept" + }, + "protocol": { + "type": "string", + "description": "The protocol for this rule.\n\n* ICMP\n* TCP\n* UDP\n* GRE\n" + }, + "port": { + "type": "string", + "description": "Port or port range for this rule." + }, + "subnet": { + "type": "string", + "description": "IP address representing a subnet. The IP address format must match with the \"ip_type\" parameter value." + }, + "subnet_size": { + "type": "integer", + "description": "The number of bits for the netmask in CIDR notation. Example: 24" + }, + "source": { + "type": "string", + "description": "If the source string is given a value of \"cloudflare\" subnet and subnet_size will both be ignored.\nPossible values:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | \"\" | Use the value from `subnet` and `subnet_size`. |\n| | cloudflare | Allow all of Cloudflare's IP space through the firewall |" + }, + "notes": { + "type": "string", + "description": "User-supplied notes for this rule." + } + } + }, + "iso": { + "title": "iso", + "type": "object", + "x-tags": [ + "iso" + ], + "description": "ISO information.", + "x-examples": { + "iso": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "filename": "my-iso.iso", + "size": 9342976, + "md5sum": "ec0669895a250f803e1709d0402fc411", + "sha512sum": "1741f890bce04613f60b4f2b16fb8070c31640c53d4dbb4271b22610150928743eda1207f031b0b5bdd240ef1a6ed21fd5e6a2d192b9c87eff60b6d9698b8260", + "status": "complete" + } + }, + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the ISO." + }, + "date_created": { + "type": "string", + "description": "Date the ISO was created." + }, + "filename": { + "type": "string", + "description": "The ISO filename." + }, + "size": { + "type": "integer", + "description": "The ISO size in KB." + }, + "md5sum": { + "type": "string", + "description": "The calculated md5sum of the ISO." + }, + "sha512sum": { + "type": "string", + "description": "The calculated sha512sum of the ISO." + }, + "status": { + "type": "string", + "description": "The current status of the ISO.\n\n* complete\n* pending" + } + } + }, + "iso-public": { + "title": "iso-public", + "type": "object", + "x-tags": [ + "iso" + ], + "description": "Public ISO information.", + "x-examples": { + "public iso": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b604", + "name": "CentOS 7", + "description": "7 x86_64 Minimal", + "md5sum": "7f4df50f42ee1b52b193e79855a3aa19" + } + }, + "properties": { + "id": { + "description": "A unique ID for the Vultr Public ISO.", + "type": "string" + }, + "name": { + "type": "string", + "description": "The short name of the Public ISO." + }, + "description": { + "type": "string", + "description": "The long description of the Public ISO." + }, + "md5sum": { + "type": "string" + } + } + }, + "object-storage": { + "title": "object-storage", + "type": "object", + "x-tags": [ + "s3" + ], + "x-examples": { + "object storage": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "cluster_id": 2, + "region": "ewr", + "label": "Example Object Storage", + "status": "active", + "s3_hostname": "ewr1.vultrobjects.com", + "s3_access_key": "00example11223344", + "s3_secret_key": "00example1122334455667788990011" + } + }, + "description": "Object Storage information.", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Object Storage." + }, + "date_created": { + "type": "string", + "description": "Date the Object Store was created." + }, + "cluster_id": { + "type": "integer", + "description": "The [Cluster id](#operation/list-object-storage-clusters)." + }, + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) for this Object Storage." + }, + "label": { + "type": "string", + "description": "The user-supplied label for this Object Storage." + }, + "status": { + "type": "string", + "description": "The status of this Object Storage.\n\n* active\n* pending" + }, + "s3_hostname": { + "type": "string", + "description": "The [Cluster hostname](#operation/list-object-storage-clusters) for this Object Storage." + }, + "s3_access_key": { + "type": "string", + "description": "The Object Storage access key." + }, + "s3_secret_key": { + "type": "string", + "description": "The Object Storage secret key." + } + } + }, + "clusters": { + "title": "clusters", + "type": "object", + "x-tags": [ + "s3" + ], + "description": "Object Storage Cluster information.", + "x-examples": { + "object storage cluster": { + "id": 1, + "region": "ewr", + "hostname": "ewr1.vultrobjects.com", + "deploy": "yes" + } + }, + "properties": { + "id": { + "type": "integer", + "description": "A unique ID for the Object Storage cluster." + }, + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the cluster is located." + }, + "hostname": { + "type": "string", + "description": "The cluster host name." + }, + "deploy": { + "type": "string", + "description": "The Cluster is eligible for Object Storage deployment.\n\n* yes\n* no" + } + } + }, + "domain": { + "title": "domain", + "type": "object", + "description": "DNS Domain information.", + "x-tags": [ + "dns" + ], + "x-examples": { + "list of domains": { + "domain": "example.com", + "date_created": "2020-10-10T01:56:20+00:00" + } + }, + "properties": { + "domain": { + "type": "string", + "description": "Your registered domain name." + }, + "date_created": { + "type": "string", + "description": "Date the DNS Domain was created." + }, + "dns_sec": { + "type": "string", + "description": "The domain's DNSSEC status\n\n* enabled\n* disabled" + } + } + }, + "dns-soa": { + "title": "dns-soa", + "type": "object", + "x-tags": [ + "dns" + ], + "description": "SOA Record information.", + "x-examples": { + "dns_soa": { + "dns_soa": { + "nsprimary": "ns1.vultr.com", + "email": "admin@example.com" + } + } + }, + "properties": { + "nsprimary": { + "type": "string", + "description": "Primary nameserver for this domain." + }, + "email": { + "type": "string", + "description": "Domain contact email address." + } + } + }, + "dns-record": { + "title": "dns-record", + "type": "object", + "x-tags": [ + "dns" + ], + "description": "DNS Record information.", + "x-examples": { + "dns-record": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "type": "A", + "name": "foo.example.com", + "data": "192.0.2.123", + "priority": 0, + "ttl": 300 + } + }, + "properties": { + "id": { + "description": "A unique ID for the DNS Record.", + "type": "string" + }, + "type": { + "type": "string", + "description": "The DNS record type.\n\n* A\n* AAAA\n* CNAME\n* NS\n* MX\n* SRV\n* TXT\n* CAA\n* SSHFP" + }, + "name": { + "type": "string", + "description": "The hostname for this DNS record." + }, + "data": { + "type": "string", + "description": "The DNS data for this record type." + }, + "priority": { + "type": "integer", + "description": "DNS priority. Does not apply to all record types." + }, + "ttl": { + "type": "integer", + "description": "Time to Live in seconds." + } + } + }, + "loadbalancer": { + "title": "loadbalancer", + "type": "object", + "x-tags": [ + "load-balancer" + ], + "description": "Load Balancer information.", + "x-examples": { + "load balancer": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "date_created": "2020-10-10T01:56:20+00:00", + "region": "ewr", + "label": "Example Load Balancer", + "status": "active", + "ipv4": "192.0.2.123", + "ipv6": "2001:0db8:6374:dc29:ffff:ffff:ffff:ffff", + "generic_info": { + "balancing_algorithm": "roundrobin", + "ssl_redirect": true, + "sticky_sessions": { + "cookie_name": "example-cookie" + }, + "proxy_protocol": false, + "private_network": "9fed374c-0afc-42bf-926c-abcf840b5406", + "vpc": "9fed374c-0afc-42bf-926c-abcf840b5406" + }, + "health_check": { + "protocol": "http", + "port": 80, + "path": "/health", + "check_interval": 10, + "response_timeout": 5, + "unhealthy_threshold": 3, + "healthy_threshold": 3 + }, + "has_ssl": true, + "nodes": 1, + "forward_rules": [ + { + "id": "73d85156c2c3129d", + "frontend_protocol": "http", + "frontend_port": 80, + "backend_portocol": "http", + "backend_port": 80 + } + ], + "firewall_rules": [ + { + "id": "abcd123b93016eafb", + "port": 80, + "source": "198.51.100.0/24", + "ip_type": "v4" + } + ], + "instances": [ + "d277caaa-0fab-48cc-9c35-eab056b9b141" + ] + } + }, + "properties": { + "id": { + "description": "A unique ID for the Load Balancer.", + "type": "string" + }, + "date_created": { + "type": "string", + "description": "Date this Load Balancer was created." + }, + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the Load Balancer is located." + }, + "label": { + "type": "string", + "description": "The user-supplied label for this load-balancer." + }, + "status": { + "type": "string", + "description": "The current status.\n\n* active" + }, + "ipv4": { + "type": "string", + "description": "The IPv4 address of this Load Balancer." + }, + "ipv6": { + "type": "string", + "description": "The IPv6 address of this Load Balancer." + }, + "generic_info": { + "type": "object", + "description": "An object containing additional options.", + "properties": { + "balancing_algorithm": { + "type": "string", + "description": "The balancing algorithm.\n\n* roundrobin (default)\n* leastconn" + }, + "ssl_redirect": { + "type": "boolean", + "description": "If `true`, this will redirect all HTTP traffic to HTTPS. You must have an HTTPS rule and SSL certificate installed on the load balancer to enable this option.\n\n* true\n* false" + }, + "sticky_sessions": { + "type": "object", + "description": "Array of sticky session cookies.", + "properties": { + "cookie_name": { + "type": "string", + "description": "The cookie name to make sticky. See [Load Balancer documentation](https://www.vultr.com/docs/vultr-load-balancers/#Load_Balancer_Configuration)." + } + } + }, + "proxy_protocol": { + "type": "boolean", + "description": "\"If `true`, you must configure backend nodes to accept Proxy protocol. \\n\\n* true\\n* false (Default)\"" + }, + "private_network": { + "type": "string", + "description": "Use `vpc` instead. ID of the private network you wish to use. If private_network is omitted it will default to the public network.", + "deprecated": true + }, + "vpc": { + "type": "string", + "description": "ID of the VPC you wish to use. If a VPC ID is omitted it will default to the public network." + } + } + }, + "health_check": { + "type": "object", + "description": "The health check object configuration. See [Load Balancer documentation](https://www.vultr.com/docs/vultr-load-balancers/#Load_Balancer_Configuration).", + "properties": { + "protocol": { + "type": "string", + "description": "The protocol to use for health checks.\n\n* HTTPS\n* HTTP\n* TCP" + }, + "port": { + "type": "integer", + "description": "The port to use for health checks." + }, + "path": { + "type": "string", + "description": "HTTP Path to check. Only applies if Protocol is HTTP or HTTPS." + }, + "check_interval": { + "type": "integer", + "description": "Interval between health checks." + }, + "response_timeout": { + "type": "integer", + "description": "Timeout before health check fails." + }, + "unhealthy_threshold": { + "type": "integer", + "description": "Number times a check must fail before becoming unhealthy." + }, + "healthy_threshold": { + "type": "integer", + "description": "Number of times a check must succeed before returning to healthy status." + } + } + }, + "has_ssl": { + "type": "boolean", + "description": "Indicates if this Load Balancer has an SSL certificate installed." + }, + "http2": { + "type": "boolean", + "description": "Indicates if this Load Balancer has HTTP2 enabled." + }, + "nodes": { + "type": "integer", + "description": "The number of nodes to add to the load balancer (1-99), must be an odd number. This defaults to 1." + }, + "forward_rules": { + "type": "array", + "description": "An array of forwarding rule objects.", + "items": { + "type": "object", + "description": "A forwarding rule object.", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the forwarding rule." + }, + "frontend_protocol": { + "type": "string", + "description": "The protocol on the Load Balancer to forward to the backend.\n\n* HTTP\n* HTTPS\n* TCP" + }, + "frontend_port": { + "type": "integer", + "description": "The port number on the Load Balancer to forward to the backend." + }, + "backend_portocol": { + "type": "string", + "description": "The protocol destination on the backend server.\n\n* HTTP\n* HTTPS\n* TCP" + }, + "backend_port": { + "type": "integer", + "description": "The port number destination on the backend server. " + } + } + } + }, + "instances": { + "type": "array", + "description": "Array of [Instance ids](#operation/list-instances) attached to this Load Balancer.", + "items": { + "type": "string" + } + }, + "firewall_rules": { + "type": "array", + "description": "An array of firewall rule objects.", + "items": { + "type": "object", + "description": "", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the firewall rule." + }, + "port": { + "type": "integer", + "description": "Port for this rule." + }, + "source": { + "type": "string", + "description": "If the source string is given a value of \"cloudflare\" then cloudflare IPs will be supplied. Otherwise enter a IP address with subnet size that you wish to permit through the firewall.\n\n Possible values:\n\n | | Value | Description |\n | - | ------ | ------------- |\n | | \"192.168.1.1/16\" | Ip address with a subnet size. |\n | | cloudflare | Allow all of Cloudflare's IP space through the firewall |" + }, + "ip_type": { + "type": "string", + "description": "The type of IP rule.\n\n* v4\n* v6\n" + } + } + } + } + } + }, + "region": { + "title": "region", + "type": "object", + "x-tags": [ + "region" + ], + "description": "Region information.", + "x-examples": { + "example": { + "id": "ewr", + "city": "New Jersey", + "country": "US", + "continent": "North America", + "options": [ + "ddos_protection", + "load_balancers", + "object_storage", + "kubernetes", + "block_storage" + ] + } + }, + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Region." + }, + "country": { + "type": "string", + "description": "The [two-letter country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) for this Region." + }, + "options": { + "type": "array", + "description": "An array of product features available in this Region.", + "items": { + "type": "string" + } + }, + "continent": { + "type": "string", + "description": "The name of the continent for this Region." + }, + "city": { + "type": "string", + "description": "The name of the city for this Region." + } + } + }, + "plans": { + "title": "plans", + "type": "object", + "x-tags": [ + "plans" + ], + "description": "Plans for VPS instances.", + "x-examples": { + "plans": { + "id": "vhf-8c-32gb", + "vcpu_count": 8, + "ram": 32768, + "disk": 512, + "disk_count": 1, + "bandwidth": 6144, + "monthly_cost": 192, + "type": "vhf", + "locations": [ + "sea" + ] + } + }, + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Plan." + }, + "name": { + "type": "string", + "description": "The Plan name." + }, + "vcpu_count": { + "type": "integer", + "description": "The number of vCPUs in this Plan." + }, + "ram": { + "type": "integer", + "description": "The amount of RAM in MB." + }, + "disk": { + "type": "integer", + "description": "The disk size in GB." + }, + "bandwidth": { + "type": "integer", + "description": "The monthly bandwidth quota in GB." + }, + "monthly_cost": { + "type": "integer", + "description": "The monthly cost in US Dollars." + }, + "type": { + "type": "string", + "description": "The plan type.\n\n| | Type | Description |\n| - | ------ | ------------- |\n| | vc2 | Cloud Compute |\n| | vhf | High Frequency Compute |\n| | vdc | Dedicated Cloud |" + }, + "locations": { + "type": "array", + "description": "An array of Regions where this plan is valid for use.", + "items": { + "type": "string" + } + }, + "disk_count": { + "type": "integer", + "description": "The number of disks that this plan offers." + } + } + }, + "plans-metal": { + "title": "plans-metal", + "type": "object", + "x-tags": [ + "plans" + ], + "description": "Plans for Bare Metal instances.", + "x-examples": { + "baremetal": { + "id": "vbm-4c-32gb", + "cpu_count": 4, + "cpu_threads": 8, + "cpu_model": "E3-1270v6", + "ram": 32768, + "disk": 240, + "disk_count": 2, + "bandwidth": 5120, + "monthly_cost": 300, + "type": "SSD", + "locations": [ + "ewr" + ] + } + }, + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Bare Metal Plan." + }, + "cpu_count": { + "type": "integer", + "description": "The number of CPUs in this Plan." + }, + "cpu_model": { + "type": "string", + "description": "The CPU model type for this instance." + }, + "cpu_threads": { + "type": "integer", + "description": "The numner of supported threads for this instance." + }, + "ram": { + "type": "integer", + "description": "The amount of RAM in MB." + }, + "disk": { + "type": "string", + "description": "The disk size in GB." + }, + "bandwidth": { + "type": "integer", + "description": "The monthly bandwidth quota in GB." + }, + "locations": { + "type": "array", + "description": "An array of Regions where this plan is valid for use.", + "items": { + "type": "string" + } + }, + "type": { + "type": "string", + "description": "The plan type.\n\n* SSD" + }, + "monthly_cost": { + "type": "integer", + "description": "The monthly cost in US Dollars." + }, + "disk_count": { + "type": "integer", + "description": "The number of disks that this plan offers." + } + } + }, + "baremetal": { + "title": "baremetal", + "type": "object", + "x-tags": [ + "baremetal" + ], + "description": "Bare Metal information.", + "x-examples": { + "bare metal": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "os": "CentOS 8 x64", + "ram": "32768 MB", + "disk": "2x 240GB SSD", + "main_ip": "192.0.2.123", + "cpu_count": 4, + "region": "ewr", + "default_password": "example-password", + "date_created": "2020-10-10T01:56:20+00:00", + "status": "active", + "netmask_v4": "255.255.254.0", + "gateway_v4": "192.0.2.123", + "plan": "vbm-4c-32gb", + "v6_network": "2001:0db8:1000::", + "v6_main_ip": "2001:0db8:1000::100", + "v6_network_size": 64, + "label": "Example Bare Metal", + "mac_address": 2199756823533, + "os_id": 215, + "app_id": 0, + "image_id": "", + "tags": [ + "a tag", + "another" + ] + } + }, + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Bare Metal instance." + }, + "os": { + "type": "string", + "description": "The [Operating System name](#operation/list-os)." + }, + "ram": { + "type": "string", + "description": "Text description of the instances' RAM." + }, + "disk": { + "type": "string", + "description": "Text description of the instances' disk configuration." + }, + "main_ip": { + "type": "string", + "description": "The main IPv4 address." + }, + "cpu_count": { + "type": "integer", + "description": "Number of CPUs." + }, + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the instance is located." + }, + "default_password": { + "type": "string", + "description": "The default password assigned at deployment. Only available for ten minutes after deployment." + }, + "date_created": { + "type": "string", + "description": "The date this instance was created." + }, + "status": { + "type": "string", + "description": "The current status.\n\n* active\n* pending\n* suspended" + }, + "netmask_v4": { + "type": "string", + "description": "The IPv4 netmask in dot-decimal notation." + }, + "gateway_v4": { + "type": "string", + "description": "The IPv4 gateway address." + }, + "plan": { + "type": "string", + "description": "The [Bare Metal Plan id](#operation/list-metal-plans) used by this instance." + }, + "label": { + "type": "string", + "description": "The user-supplied label for this instance." + }, + "tag": { + "type": "string", + "description": "Use `tags` instead. The user-supplied tag for this instance.", + "deprecated": true + }, + "os_id": { + "type": "integer", + "description": "The [Operating System id](#operation/list-os)." + }, + "app_id": { + "type": "integer", + "description": "The [Application id](#operation/list-applications)." + }, + "image_id": { + "type": "string", + "description": "The [Application image_id](#operation/list-applications)." + }, + "v6_network": { + "type": "string", + "description": "The IPv6 network size in bits." + }, + "v6_main_ip": { + "type": "string", + "description": "The main IPv6 network address." + }, + "v6_network_size": { + "type": "integer", + "description": "The IPv6 subnet." + }, + "mac_address": { + "type": "integer", + "description": "The MAC address for a Bare Metal server." + }, + "tags": { + "type": "array", + "description": "Tags to apply to the instance.", + "items": { + "type": "string" + } + }, + "user_scheme": { + "type": "string", + "description": "The user scheme.\n\n* root\n* limited" + } + } + }, + "baremetal-ipv4": { + "title": "baremetal-ipv4", + "type": "object", + "x-tags": [ + "baremetal" + ], + "description": "Bare Metal IPv4 information.", + "x-examples": { + "ipv4 example": { + "ip": "192.0.2.123", + "netmask": "255.255.254.0", + "gateway": "192.0.2.123", + "type": "main_ip", + "reverse": "192.0.2.123.vultr.com", + "mac_address": "00:00:5e:00:53:5e" + } + }, + "properties": { + "ip": { + "type": "string", + "description": "The IPv4 address." + }, + "netmask": { + "type": "string", + "description": "The IPv4 netmask in dot-decimal notation." + }, + "gateway": { + "type": "string", + "description": "The gateway IP address." + }, + "type": { + "type": "string", + "description": "The type of IP address.\n\n* main_ip" + }, + "reverse": { + "type": "string", + "description": "The reverse DNS information for this IP address." + }, + "mac_address": { + "type": "string", + "description": "The MAC address associated with this IP address." + } + } + }, + "baremetal-ipv6": { + "title": "baremetal-ipv6", + "type": "object", + "x-tags": [ + "baremetal" + ], + "description": "Bare Metal IPv6 information.", + "properties": { + "ip": { + "type": "string", + "description": "A unique ID for the IPv6 address." + }, + "network": { + "type": "string", + "description": "The IPv6 subnet." + }, + "network_size": { + "type": "integer", + "description": "The IPv6 network size in bits." + }, + "type": { + "type": "string", + "description": "The type of IP address.\n\n* main_ip" + } + } + }, + "bandwidth": { + "title": "bandwidth", + "type": "object", + "description": "Bandwidth information.", + "x-examples": {}, + "x-tags": [ + "bandwidth" + ], + "properties": { + "incoming_bytes": { + "type": "integer", + "description": "Total bytes received by this instance on the date (UTC) denoted by the object key." + }, + "outgoing_bytes": { + "description": "Total bytes sent by this instance on the date (UTC) denoted by the object key.", + "type": "integer" + } + } + }, + "instance": { + "title": "instance", + "type": "object", + "x-tags": [ + "instances" + ], + "description": "Instance information.", + "x-examples": {}, + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the VPS Instance." + }, + "os": { + "type": "string", + "description": "The [Operating System name](#operation/list-os)." + }, + "ram": { + "type": "integer", + "description": "The amount of RAM in MB." + }, + "disk": { + "type": "integer", + "description": "The size of the disk in GB." + }, + "main_ip": { + "type": "string", + "description": "The main IPv4 address." + }, + "vcpu_count": { + "type": "integer", + "description": "Number of vCPUs." + }, + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the Instance is located." + }, + "default_password": { + "type": "string", + "description": "The default password assigned at deployment. Only available for ten minutes after deployment." + }, + "date_created": { + "type": "string", + "description": "The date this instance was created." + }, + "status": { + "type": "string", + "description": "The current status.\n\n* active\n* pending\n* suspended\n* resizing" + }, + "power_status": { + "type": "string", + "description": "The power-on status.\n\n* running\n* stopped" + }, + "server_status": { + "type": "string", + "description": "The server health status.\n\n* none\n* locked\n* installingbooting\n* ok" + }, + "allowed_bandwidth": { + "type": "integer", + "description": "Monthly bandwidth quota in GB." + }, + "netmask_v4": { + "type": "string", + "description": "The IPv4 netmask in dot-decimal notation." + }, + "gateway_v4": { + "type": "string", + "description": "The gateway IP address." + }, + "v6_networks": { + "type": "array", + "description": "An array of IPv6 objects.", + "items": { + "type": "object", + "description": "An IPv6 object.", + "properties": { + "network": { + "type": "string", + "description": "The IPv6 subnet." + }, + "main_ip": { + "type": "string", + "description": "The main IPv6 network address." + }, + "network_size": { + "description": "The IPv6 network size in bits.", + "type": "integer" + } + } + } + }, + "hostname": { + "type": "string", + "description": "The hostname for this instance." + }, + "label": { + "type": "string", + "description": "The user-supplied label for this instance." + }, + "tag": { + "type": "string", + "description": "Use `tags` instead. The user-supplied tag for this instance.", + "deprecated": true + }, + "internal_ip": { + "type": "string", + "description": "The internal IP used by this instance, if set. Only relevant when a VPC is attached." + }, + "kvm": { + "type": "string", + "description": "HTTPS link to the Vultr noVNC Web Console." + }, + "os_id": { + "type": "integer", + "description": "The [Operating System id](#operation/list-os) used by this instance." + }, + "app_id": { + "type": "integer", + "description": "The [Application id](#operation/list-applications) used by this instance." + }, + "image_id": { + "type": "string", + "description": "The [Application image_id](#operation/list-applications) used by this instance." + }, + "firewall_group_id": { + "type": "string", + "description": "The [Firewall Group id](#operation/list-firewall-groups) linked to this Instance." + }, + "features": { + "type": "array", + "description": "\"auto_backups\", \"ipv6\", \"ddos_protection\"", + "items": { + "type": "string" + } + }, + "plan": { + "type": "string", + "description": "A unique ID for the Plan." + }, + "tags": { + "type": "array", + "description": "Tags to apply to the instance.", + "items": { + "type": "string" + } + }, + "user_scheme": { + "type": "string", + "description": "The user scheme.\n\n* root\n* limited" + } + } + }, + "dbaas-meta": { + "title": "meta", + "type": "object", + "x-examples": { + "meta response": { + "meta": { + "total": 31 + } + } + }, + "description": "The meta information object.", + "properties": { + "total": { + "type": "integer", + "description": "Total objects available in the list." + } + } + }, + "database": { + "title": "database", + "type": "object", + "x-tags": [ + "databases" + ], + "description": "Managed Database information.", + "x-examples": {}, + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Managed Database." + }, + "date_created": { + "type": "string", + "description": "The date this database was created." + }, + "plan": { + "type": "string", + "description": "The name of the Managed Database plan." + }, + "plan_disk": { + "type": "integer", + "description": "The size of the disk in GB (excluded for Redis engine types)." + }, + "plan_ram": { + "type": "integer", + "description": "The amount of RAM in MB." + }, + "plan_vcpus": { + "type": "integer", + "description": "Number of vCPUs." + }, + "plan_replicas": { + "type": "integer", + "description": "Number of replica nodes." + }, + "region": { + "type": "string", + "description": "The [Region id](#operation/list-regions) where the Managed Database is located." + }, + "database_engine": { + "type": "string", + "description": "The database engine type (MySQL, PostgreSQL, FerretDB + PostgreSQL, Redis)." + }, + "database_engine_version": { + "type": "string", + "description": "The version number of the database engine in use." + }, + "vpc_id": { + "type": "string", + "description": "The ID of the [VPC Network](#operation/get-vpc) attached to the Managed Database." + }, + "status": { + "type": "string", + "description": "The current status.\n\n* Rebuilding\n* Rebalancing\n* Running" + }, + "label": { + "type": "string", + "description": "The user-supplied label for this managed database." + }, + "tag": { + "type": "string", + "description": "The user-supplied tag for this managed database." + }, + "dbname": { + "type": "string", + "description": "The default database name." + }, + "ferretdb_credentials": { + "type": "object", + "description": "Associated list of FerretDB connection credentials (FerretDB + PostgreSQL engine type only).", + "properties": { + "host": { + "type": "string", + "description": "The public hostname for FerretDB database connections." + }, + "port": { + "type": "int", + "description": "The assigned port for connecting to the FerretDB instance." + }, + "username": { + "type": "string", + "description": "The username for connecting to the FerretDB instance." + }, + "password": { + "type": "string", + "description": "The password for connecting to the FerretDB instance." + }, + "public_ip": { + "type": "string", + "description": "The public IP address of the FerretDB instance." + }, + "private_ip": { + "type": "string", + "description": "The private IP address of the FerretDB instance when attached to a VPC network." + } + } + }, + "host": { + "type": "string", + "description": "The public hostname for database connections, or private hostname if this managed database is attached to a VPC network." + }, + "public_host": { + "type": "string", + "description": "The public hostname for database connections. Only visible when the managed database is attached to a VPC network." + }, + "user": { + "type": "string", + "description": "The default user configured on creation." + }, + "password": { + "type": "string", + "description": "The default user's secure password generated on creation." + }, + "port": { + "type": "string", + "description": "The assigned port for connecting to the Managed Database." + }, + "maintenance_dow": { + "type": "string", + "description": "The chosen date of week for routine maintenance updates." + }, + "maintenance_time": { + "type": "string", + "description": "The chosen hour for routine maintenance updates." + }, + "latest_backup": { + "type": "string", + "description": "The date for the latest backup stored on the Managed Database." + }, + "trusted_ips": { + "type": "array", + "description": "A list of trusted IP addresses for connecting to this Managed Database (in CIDR notation).", + "items": { + "type": "string" + } + }, + "mysql_sql_modes": { + "type": "array", + "description": "A list names of enabled SQL Modes for MySQL engine types only.", + "items": { + "type": "string" + } + }, + "mysql_require_primary_key": { + "type": "boolean", + "description": "Configuration value for requiring table primary keys for MySQL engine types only." + }, + "mysql_slow_query_log": { + "type": "boolean", + "description": "Configuration value for slow query logging on the Managed Database for MySQL engine types only." + }, + "mysql_long_query_time": { + "type": "integer", + "description": "The number of seconds to denote a slow query when logging is enabled for MySQL engine types only." + }, + "pg_available_extensions": { + "type": "array", + "description": "A list of objects containing names and versions (when applicable) of available extensions for PostgreSQL engine types only.", + "items": { + "type": "object" + } + }, + "redis_eviction_policy": { + "type": "string", + "description": "The current configured data eviction policy for Redis engine types only." + }, + "cluster_time_zone": { + "type": "string", + "description": "The configured time zone of the Managed Database in TZ database format." + }, + "read_replicas": { + "type": "array", + "description": "A list of database objects containing details for all attached read-only replica nodes.", + "items": { + "type": "object" + } + } + } + }, + "dbaas-plan": { + "title": "plan", + "type": "object", + "x-tags": [ + "database-plans" + ], + "description": "Managed Database plan information.", + "x-examples": {}, + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the plan." + }, + "number_of_nodes": { + "type": "integer", + "description": "The total number of nodes for this plan." + }, + "type": { + "type": "string", + "description": "The type of plan this is." + }, + "vcpu_count": { + "type": "integer", + "description": "Number of vCPUs." + }, + "ram": { + "type": "integer", + "description": "The amount of RAM in MB." + }, + "disk": { + "type": "integer", + "description": "The size of the disk in GB (excluded for Redis engine types)." + }, + "monthly_cost": { + "type": "integer", + "description": "The monthly cost of this Managed Database plan." + }, + "supported_engines": { + "type": "object", + "description": "A list of key/value pairs with database engine types and boolean values." + }, + "max_connections": { + "type": "object", + "description": "A list of key/value pairs with database engine types (excluding Redis) and integers of max connection values." + }, + "locations": { + "type": "array", + "description": "A list of available regions in which this plan is currently available.", + "items": { + "type": "string" + } + } + } + }, + "database-usage": { + "title": "usage", + "type": "object", + "x-tags": [ + "database-usage" + ], + "description": "Managed Database usage information.", + "x-examples": {}, + "properties": { + "disk": { + "type": "object", + "description": "Metrics for the disk storage of the Managed Database.", + "properties": { + "current_gb": { + "type": "string", + "description": "The current amount of space used on the Managed Database (in GB)." + }, + "max_gb": { + "type": "string", + "description": "The maximum available space on the Managed Database (in GB)." + }, + "percentage": { + "type": "string", + "description": "The percentage of space used on the Managed Database relative to its capacity." + } + } + }, + "memory": { + "type": "object", + "description": "Metrics for the memory of the Managed Database.", + "properties": { + "current_mb": { + "type": "string", + "description": "The current amount of memory used on the Managed Database (in MB)." + }, + "max_mb": { + "type": "string", + "description": "The maximum available memory on the Managed Database (in MB)." + }, + "percentage": { + "type": "string", + "description": "The average percent of memory utilization for the Managed Database over the last hour." + } + } + }, + "cpu": { + "type": "object", + "description": "Metrics for the vCPU(s) of the Managed Database.", + "properties": { + "percentage": { + "type": "string", + "description": "The average percent of vCPU utilization for the Managed Database over the last hour." + } + } + } + } + }, + "database-user": { + "title": "user", + "type": "object", + "x-tags": [ + "database-users" + ], + "description": "Managed Database user information.", + "x-examples": {}, + "properties": { + "username": { + "type": "string", + "description": "The username for the database user." + }, + "password": { + "type": "string", + "description": "The password for the database user." + }, + "encryption": { + "type": "string", + "description": "The password encryption for the database user (MySQL engine type only).\n* `Default (MySQL 8+)`\n* `Legacy (MySQL 5.x)`" + }, + "access_control": { + "type": "object", + "description": "Access control settings for the database user (Redis engine type only).", + "properties": { + "redis_acl_categories": { + "type": "array", + "description": "List of configured rules for command categories.", + "items": { + "type": "string" + } + }, + "redis_acl_channels": { + "type": "array", + "description": "List of configured publish/subscribe channel patterns.", + "items": { + "type": "string" + } + }, + "redis_acl_commands": { + "type": "array", + "description": "List of configured rules for individual commands.", + "items": { + "type": "string" + } + }, + "redis_acl_keys": { + "type": "array", + "description": "List of configured key access rules.", + "items": { + "type": "string" + } + } + } + } + } + }, + "dbaas-alerts": { + "title": "alert", + "type": "object", + "x-tags": [ + "database-alerts" + ], + "description": "Managed Database alerts information.", + "x-examples": {}, + "properties": { + "timestamp": { + "type": "string", + "description": "The date and time in which the alert was sent." + }, + "message_type": { + "type": "string", + "description": "The category of alert that was sent.\n* `DB MASTER PROMOTION`\n* `MAINTENANCE SCHEDULED`\n* `MISSING MYSQL PRIMARY KEYS`\n* `RESOURCE USAGE DISK`\n* `RESOURCE USAGE OOM KILLED`\n* `RESOURCE USAGE PG REPLICATION SLOTS`" + }, + "description": { + "type": "string", + "description": "A verbose description of the associated alert category." + }, + "recommendation": { + "type": "string", + "description": "A description of the recommended action the customer should take. Only included for certain alert types." + }, + "maintenance_scheduled": { + "type": "string", + "description": "The time in which mandatory maintenance has been scheduled with the associated alert. Only included for certain alert types." + }, + "resource_type": { + "type": "string", + "description": "The affected resource related to the associated alert. Only included for certain alert types." + }, + "table_count": { + "type": "integer", + "description": "The number of affected tables related to the associated alert. Only included for certain alert types." + } + } + }, + "dbaas-migration": { + "title": "migration", + "type": "object", + "x-tags": [ + "database-migration" + ], + "description": "Managed Database migration information.", + "x-examples": {}, + "properties": { + "status": { + "type": "string", + "description": "The current status of the attached migration.\n* `complete`\n* `error`\n* `pending`\n* `running`" + }, + "method": { + "type": "string", + "description": "The type of migration performed (dump or replication). Only shows if status is `complete`." + }, + "error": { + "type": "string", + "description": "The verbose error message output for migrations with an `error` status." + }, + "credentials": { + "type": "object", + "description": "Associated list of connection details for the source database server.", + "properties": { + "host": { + "type": "string", + "description": "The host name of the source server." + }, + "port": { + "type": "int", + "description": "The connection port of the source server." + }, + "username": { + "type": "string", + "description": "The username of the source server." + }, + "password": { + "type": "string", + "description": "The password of the source server." + }, + "database": { + "type": "string", + "description": "The database of the source server. Excluded for Redis engine types." + }, + "ignored_databases": { + "type": "string", + "description": "Comma-separated list of ignored databases on the source server. Excluded for Redis engine types." + }, + "ssl": { + "type": "boolean", + "description": "The true/false value for whether SSL is needed to connect to the source server." + } + } + } + } + }, + "database-latest-backup": { + "title": "backup", + "type": "object", + "x-tags": [ + "database-latest-backup" + ], + "description": "Managed Database latest backup information.", + "x-examples": {}, + "properties": { + "date": { + "type": "string", + "description": "The date of the most recently available backup." + }, + "time": { + "type": "string", + "description": "The time of the most recently available backup." + } + } + }, + "database-oldest-backup": { + "title": "backup", + "type": "object", + "x-tags": [ + "database-oldest-backup" + ], + "description": "Managed Database oldest backup information.", + "x-examples": {}, + "properties": { + "date": { + "type": "string", + "description": "The date of the oldest available backup." + }, + "time": { + "type": "string", + "description": "The time of the oldest available backup." + } + } + }, + "database-connections": { + "title": "connection", + "type": "object", + "x-tags": [ + "database-connections" + ], + "description": "Managed Database connection information.", + "x-examples": {}, + "properties": { + "used": { + "type": "integer", + "description": "The number of used database connections." + }, + "available": { + "type": "integer", + "description": "The number of available database connections." + }, + "max": { + "type": "integer", + "description": "The maximum number of database connections." + } + } + }, + "connection-pool": { + "title": "connection_pool", + "type": "object", + "x-tags": [ + "database-connection-pool" + ], + "description": "Managed Database connection pool information.", + "x-examples": {}, + "properties": { + "name": { + "type": "string", + "description": "The name of the connection pool." + }, + "database": { + "type": "string", + "description": "The logical database associated with the connection pool." + }, + "username": { + "type": "string", + "description": "The database user associated with the connection pool." + }, + "mode": { + "type": "string", + "description": "The mode for the connection pool.\n* `session`\n* `transaction`\n* `statement`" + }, + "size": { + "type": "integer", + "description": "The size of the connection pool." + } + } + }, + "dbaas-available-options": { + "title": "available_option", + "type": "object", + "x-tags": [ + "database-available-options" + ], + "description": "Managed Database PostgreSQL advanced configuration options.", + "x-examples": {}, + "properties": { + "name": { + "type": "string", + "description": "The name of the configuration option." + }, + "type": { + "type": "string", + "description": "The type of the configuration option.\n* `int`\n* `float`\n* `bool`\n* `enum`" + }, + "enumerals": { + "type": "array", + "description": "Valid enumerals for `enum` type configuration options only.", + "items": { + "type": "string" + } + }, + "min_value": { + "type": "mixed", + "description": "The smallest value accepted for the configuration option." + }, + "max_value": { + "type": "mixed", + "description": "The largest value accepted for the configuration option." + }, + "alt_values": { + "type": "array", + "description": "Any alternate value accepted for the configuration option.", + "items": { + "type": "mixed" + } + }, + "units": { + "type": "string", + "description": "The units associated with the configuration option." + } + } + }, + "database-db": { + "title": "db", + "type": "object", + "x-tags": [ + "database-dbs" + ], + "description": "Managed Database logical database information.", + "x-examples": {}, + "properties": { + "name": { + "type": "string", + "description": "The name of the logical database." + } + } + }, + "private-networks": { + "title": "private-networks", + "type": "object", + "x-tags": [ + "private-networks" + ], + "description": "Private Network information.", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Private Network." + }, + "mac_address": { + "type": "string", + "description": "The assigned MAC address." + }, + "ip_address": { + "type": "string", + "description": "The assigned IP address." + } + }, + "x-examples": { + "example-1": {} + }, + "deprecated": true + }, + "backup-schedule": { + "title": "backup-schedule", + "type": "object", + "x-tags": [ + "backup-schedule" + ], + "description": "Backup schedule information.", + "properties": { + "enabled": { + "type": "boolean", + "description": "Indicates if backup is enabled:\n\n* true\n* false" + }, + "type": { + "type": "string", + "description": "Type of backup schedule:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | daily | Back up once per day at `hour`. |\n| | weekly | Back up once per week on `dow` at `hour`. |\n| | monthly | Back up each month at `dom` at `hour`. |\n| | daily\\_alt\\_even | Back up on even dates at `hour`. |\n| | daily\\_alt\\_odd | Back up on odd dates at `hour`. |" + }, + "next_scheduled_time_utc": { + "type": "string", + "description": "Time of next backup run in UTC." + }, + "hour": { + "type": "integer", + "description": "Scheduled hour of day in UTC." + }, + "dow": { + "description": "Day of week to run.\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | 1 | Sunday |\n| | 2 | Monday |\n| | 3 | Tuesday |\n| | 4 | Wednesday |\n| | 5 | Thursday |\n| | 6 | Friday |\n| | 7 | Saturday |", + "type": "integer" + }, + "dom": { + "description": "Day of month to run. Use values between 1 and 28.", + "type": "integer" + } + } + }, + "forwarding-rule": { + "title": "forwarding-rule", + "type": "object", + "x-tags": [ + "load-balancer" + ], + "description": "Forwarding Rule information.", + "x-examples": { + "forwarding rules": { + "id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60", + "frontend_protocol": "http", + "frontend_port": 80, + "backend_protocol": "http", + "backend_port": 80 + } + }, + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the Forwarding Rule." + }, + "frontend_protocol": { + "type": "string", + "description": "The protocol on the Load Balancer to forward to the backend.\n\n* HTTP\n* HTTPS\n* TCP" + }, + "frontend_port": { + "type": "integer", + "description": "The port number on the Load Balancer to forward to the backend." + }, + "backend_protocol": { + "type": "string", + "description": "The protocol destination on the backend server.\n\n* HTTP\n* HTTPS\n* TCP" + }, + "backend_port": { + "type": "integer", + "description": "The port number destination on the backend server." + } + } + }, + "meta": { + "title": "meta", + "type": "object", + "x-examples": { + "meta response": { + "meta": { + "total": 31, + "links": { + "next": "WxYzExampleNext", + "prev": "" + } + } + } + }, + "description": "The meta information object. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination) for more information.", + "properties": { + "total": { + "type": "integer", + "description": "Total objects available in the list. This value may be greater than the number of objects returned if `per_page` is set." + }, + "links": { + "type": "object", + "description": "Cursor values for pagination.", + "properties": { + "next": { + "type": "string", + "description": "Cursor value for the next page." + }, + "prev": { + "type": "string", + "description": "Cursor value for the previous page." + } + } + } + } + }, + "loadbalancer-firewall-rule": { + "description": "Load Balancer firewall rule information.", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1, + "description": "The unique ID for the firewall rule" + }, + "port": { + "type": "integer", + "description": "Port for this rule.\n" + }, + "source": { + "type": "string", + "minLength": 1, + "description": "If the source string is given a value of \"cloudflare\" then cloudflare IPs will be supplied. Otherwise enter a IP address with subnet size that you wish to permit through the firewall.\n\nPossible values:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | \"192.168.1.1/16\" | Ip address with a subnet size. |\n| | cloudflare | Allow all of Cloudflare's IP space through the firewall |" + }, + "ip_type": { + "type": "string", + "minLength": 1, + "description": "The type of IP rule.\n\n* v4\n* v6\n" + } + }, + "x-examples": { + "Example": { + "id": "9fea55b93016eafb", + "port": 80, + "source": "192.168.1.1/16", + "ip_type": "v4" + } + } + }, + "registry": { + "title": "registry", + "type": "object", + "x-tags": [ + "registry", + "registries" + ], + "description": "Container Registry Entity", + "x-examples": {}, + "properties": { + "id": { + "type": "string", + "description": "The UUID to reference this registry" + }, + "name": { + "type": "string", + "description": "The globally unique name to reference this registry" + }, + "urn": { + "type": "string", + "description": "The base URN (the URL without the scheme [i.e. http:// or https://]) of this registry" + }, + "storage": { + "type": "object", + "description": "The allowed and used storage for this registry subscription.", + "properties": { + "used": { + "$ref": "#/components/schemas/registry-storage" + }, + "allowed": { + "$ref": "#/components/schemas/registry-storage" + } + } + }, + "date_created": { + "type": "string", + "description": "The date this Registry Subscription was created" + }, + "public": { + "type": "boolean", + "description": "If true, this is a publically accessible registry allowing anyone to pull from it. If false, this registry is completely private" + }, + "root_user": { + "$ref": "#/components/schemas/registry-user" + }, + "metadata": { + "type": "object", + "description": "The metadata containing subscription information such as the region where this registry lives and monthly price and pending charges", + "properties": { + "region": { + "$ref": "#/components/schemas/registry-region" + }, + "subscription": { + "type": "object", + "description": "Subscription information", + "properties": { + "billing": { + "type": "object", + "description": "Billing information", + "properties": { + "monthly_price": { + "type": "float", + "description": "Monthly Price" + }, + "pending_charges": { + "type": "float", + "description": "The current charges for this subscription" + } + } + } + } + } + } + } + } + }, + "registry-storage": { + "title": "registry-storage", + "type": "object", + "x-tags": [ + "registry-storage", + "registries-storage" + ], + "description": "Container Registry Storage Information", + "x-examples": {}, + "properties": { + "bytes": { + "type": "float", + "description": "Storage in Bytes" + }, + "mb": { + "type": "float", + "description": "Storage in Megabytes" + }, + "gb": { + "type": "float", + "description": "Storage in Gigabytes" + }, + "tb": { + "type": "float", + "description": "Storage in Terabytes" + }, + "updated_at": { + "type": "string", + "description": "The date at which the storage information was last updated" + } + } + }, + "registry-repository": { + "title": "registry-repository", + "type": "object", + "x-tags": [ + "registry-repository", + "registry-repositories" + ], + "description": "Container Registry Repository Entity", + "x-examples": {}, + "properties": { + "name": { + "type": "string", + "description": "The name of this repository (the name of the container image prepended with the registry name)" + }, + "image": { + "type": "string", + "description": "The name of the conatiner image" + }, + "description": { + "type": "string", + "description": "User defined description of this repository" + }, + "added_at": { + "type": "string", + "description": "The date this Repo was added" + }, + "updated_at": { + "type": "string", + "description": "The date this Repo was last updated" + }, + "pull_count": { + "type": "integer", + "description": "The amount of pulls for this Repo" + }, + "artifact_count": { + "type": "integer", + "description": "The amount of artifacts of this Repo" + } + } + }, + "registry-user": { + "title": "registry-user", + "type": "object", + "x-tags": [ + "registry-user" + ], + "description": "Container Registry User Entity", + "x-examples": {}, + "properties": { + "id": { + "type": "integer", + "description": "The Numeric ID of this user." + }, + "username": { + "type": "string", + "description": "The globally unique name of this user." + }, + "password": { + "type": "string", + "description": "The password this user will use to authenticate." + }, + "root": { + "type": "boolean", + "description": "If true, this is a root user/registry owner meaning it cannot be deleted or renamed. If false, this is an additional user added to this registry that can be modified" + }, + "added_at": { + "type": "string", + "description": "The date this User was added" + }, + "updated_at": { + "type": "string", + "description": "The date this User was last updated" + } + } + }, + "registry-region": { + "title": "registry-region", + "type": "object", + "x-tags": [ + "registry-region" + ], + "description": "Container Registry Region Entity", + "x-examples": {}, + "properties": { + "id": { + "type": "integer", + "description": "The Numeric ID of this region." + }, + "name": { + "type": "string", + "description": "The unique name of this region, this is what you will use to specify a region when creating your subscription" + }, + "urn": { + "type": "string", + "description": "The base URN (the URL without the scheme [i.e. http:// or https://]) of this region" + }, + "base_url": { + "type": "string", + "description": "The base URL of this region" + }, + "public": { + "type": "boolean", + "description": "If true, this is a publically accessible region allowing any customer to create new subscriptions on this region. If false, this region is not generally available yet" + }, + "added_at": { + "type": "string", + "description": "The date this Region was added" + }, + "updated_at": { + "type": "string", + "description": "The date this Region was last updated" + }, + "data_center": { + "type": "object", + "description": "Information on the datacenter this region resides in" + } + } + }, + "registry-plan": { + "title": "registry-plan", + "type": "object", + "x-tags": [ + "registry-plan" + ], + "description": "Container Registry Plan Entity. The KEY of this entity is the Plan ID you will use to create/upgrade your Container Registry", + "x-examples": {}, + "properties": { + "vanity_name": { + "type": "string", + "description": "The Nice Name of the plan" + }, + "max_storage_mb": { + "type": "integer", + "description": "The total allocated storage this plan allows" + }, + "monthly_price": { + "type": "integer", + "description": "The monthly price for this plan" + } + } + }, + "registry-docker-credentials": { + "title": "registry-docker-credentials", + "type": "object", + "x-tags": [ + "registry-docker-credentials" + ], + "description": "Container Registry Docker Credentials Entity", + "x-examples": {}, + "properties": { + "auths": { + "type": "object", + "description": "Contains a single object with the key being the URN of the region", + "properties": { + "{registry-region-name}.vultrcr.com": { + "type": "object", + "description": "This object represents the auth for this region", + "properties": { + "auth": { + "type": "string", + "description": "The base64 encoded credentials of the Robot Account {registry-user-username}:{registry-user-password}" + } + } + } + } + } + } + }, + "registry-kubernetes-docker-credentials": { + "title": "registry-kubernetes-docker-credentials", + "type": "object", + "x-tags": [ + "registry-kubernetes-docker-credentials" + ], + "description": "Container Registry Kubernetes Docker Credentials Entity", + "x-examples": {}, + "properties": { + "apiVersion": { + "type": "string", + "description": "Specifies that this is api v1" + }, + "kind": { + "type": "string", + "description": "Specifies that this is a Kubernetes Secret" + }, + "metadata": { + "type": "object", + "description": "", + "properties": { + "name": { + "type": "string", + "description": "Specifies that these are Vultr Container Registry Credentials" + } + } + }, + "data": { + "type": "object", + "description": "", + "properties": { + ".dockerconfigjson": { + "type": "string", + "description": "Contains the base64 encoded Docker Credentials Config JSON" + } + } + }, + "type": { + "type": "string", + "description": "Specifies that this type is a kubernetes.io/dockerconfigjson" + } + } + } + }, + "securitySchemes": { + "API Key": { + "type": "http", + "scheme": "bearer", + "in": "header", + "description": "The Vultr API v2 uses API keys for authentication. You can manage your API keys in the Vultr customer portal. Please do not share API keys publicly, or embed them in client-side code. It is a good security practice to restrict their use by IP address in the [customer portal](https://my.vultr.com/settings/#settingsapi).\n\nTo authenticate a request, send your API Key as a bearer token in the request header.\n\n### Authentication Example\n\n curl \"https://api.vultr.com/v2/account\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n\nUnauthenticated API requests will fail. All requests must use HTTPS encryption for security, and calls made with HTTP will fail." + } + } + }, + "tags": [ + { + "name": "account", + "x-displayName": "Account", + "description": "Read-only information about your [user account](https://my.vultr.com/settings/#settingsprofile) and [billing](https://my.vultr.com/billing/#billinghistory) information.\n" + }, + { + "name": "application", + "x-displayName": "Applications", + "description": "[One-Click](https://www.vultr.com/features/one-click-apps/) and [Marketplace](https://www.vultr.com/marketplace/) Applications are ready-to-run with minimal configuration. We have an extensive [documentation library](https://www.vultr.com/docs/category/apps/) for our Applications.\n

There are two types of Applications: `marketplace` and `one-click`. This is denoted by the `type` field in the Application object. Applications with `type` of `marketplace` can be deployed by using the `image_id` while Applications with `type` of `one-click` should use the `id`.\n" + }, + { + "name": "backup", + "x-displayName": "Backups", + "description": "A backup is a scheduled, automatic, point-in-time image of an instance. We do not stop the instance when taking a backup. Booting from a backup is similar to rebooting after a non-graceful restart. [Snapshots](#tag/snapshot) are physically the same as backups, but snapshots are manual while backups run automatically on a schedule. Backups can be converted into snapshots. See our [Automatic Backup FAQ](https://www.vultr.com/docs/vps-automatic-backups/) for more information.\n" + }, + { + "name": "baremetal", + "x-displayName": "Bare Metal", + "description": "[Bare Metal](https://www.vultr.com/products/bare-metal/) servers give you access to the underlying physical hardware in a single-tenant environment without a virtualization layer.\n" + }, + { + "name": "billing", + "x-displayName": "Billing", + "description": "Read-only [billing](https://my.vultr.com/billing/#billinghistory) information for your [user account](https://my.vultr.com/settings/#settingsprofile)." + }, + { + "name": "block", + "x-displayName": "Block Storage", + "description": "[Block Storage](https://www.vultr.com/products/block-storage/) volumes are highly-available, redundant, SSD backed, and expandable from 10 GB to 40,000 GB depending on the type. Block storage volumes can be formatted with your choice of filesystems and moved between server instances as needed. [See our FAQ](https://www.vultr.com/docs/block-storage/) for details.\n" + }, + { + "name": "Container Registry", + "x-displayName": "Container Registry", + "description": "Store and manage public and private container images for rapid deployment to Vultr Managed Kubernetes.\n" + }, + { + "name": "dns", + "x-displayName": "DNS", + "description": "Vultr offers [free DNS hosting](https://www.vultr.com/docs/introduction-to-vultr-dns/) for customers' domains. The nameservers are on an AnyCAST network and ensure fast DNS resolution. When you manage your DNS through the API, you can view the results [in your customer portal](https://my.vultr.com/dns/).\n" + }, + { + "name": "firewall", + "x-displayName": "Firewall", + "description": "Vultr offers a [web-based firewall](https://www.vultr.com/docs/vultr-firewall/) solution to protect one or more compute instances. [Firewall groups](https://my.vultr.com/firewall/) can manage multiple servers with a standard ruleset. You can control multiple groups with the API.\n" + }, + { + "name": "instances", + "x-displayName": "Instances", + "description": "Vultr [Cloud instances](https://www.vultr.com/products/cloud-compute/) can be [deployed](https://my.vultr.com/) with your preferred operating system or pre-installed application in seconds. [High Frequency Compute](https://www.vultr.com/products/high-frequency-compute/) instances are powered by high clock speed CPU's and NVMe local storage to power your most demanding applications. [Dedicated Cloud](https://www.vultr.com/products/dedicated-cloud/) instances have dedicated CPU, SSD drives, and RAM.\n
\n
\nNote: Do not use this endpoint to manage [Kubernetes](https://www.vultr.com/kubernetes/) cluster nodes as it may result in unintended issues and charges. Use the kubernetes [endpoint](https://www.vultr.com/api/#tag/kubernetes) instead.\n" + }, + { + "name": "iso", + "x-displayName": "ISO", + "description": "[Upload](https://www.vultr.com/features/upload-iso/) and boot instances from your ISO, or choose one from our [public ISO library](https://my.vultr.com/iso/public/). See our [ISO documentation](https://www.vultr.com/docs/requirements-for-uploading-an-os-iso-to-vultr/).\n" + }, + { + "name": "kubernetes", + "x-displayName": "Kubernetes", + "description": "Vultr Kubernetes Engine is a managed Kubernetes offering." + }, + { + "name": "load-balancer", + "x-displayName": "Load Balancers", + "description": "[Load Balancers](https://www.vultr.com/docs/vultr-load-balancers/) sit in front of your application and distribute incoming traffic across multiple Instances. When you control the load balancer via the API, you can inspect the results in the [customer portal](https://my.vultr.com/loadbalancers/).\n" + }, + { + "name": "managed-databases", + "x-displayName": "Managed Databases", + "description": "[Vultr Managed Databases](https://www.vultr.com/docs/vultr-managed-databases/) is a managed database offering supporting MySQL, PostgreSQL, FerretDB + PostgreSQL, and Redis.\n" + }, + { + "name": "s3", + "x-displayName": "Object Storage", + "description": "[Object Storage](https://www.vultr.com/docs/vultr-object-storage/) is S3 API compatible. Objects uploaded to object storage can be accessed privately or publicly on the web. Object storage supports a virtually unlimited number of objects. Control your Object Storage via the API or browse in the [Customer Portal](https://my.vultr.com/objectstorage/).\n" + }, + { + "name": "os", + "x-displayName": "Operating Systems", + "description": "We have a wide range of [operating systems](https://www.vultr.com/features/operating-systems/) available to deploy server instances. You can also [upload an ISO](#tag/iso) or choose from our public ISO library.\n" + }, + { + "name": "plans", + "x-displayName": "Plans", + "description": "A Plan is a particular configuration of vCPU, RAM, SSD, and bandwidth to deploy an [Instance](#tag/instances). Not all Plans are available in all [Regions](#tag/region). You can browse plans in the [Customer Portal](https://my.vultr.com/deploy/) or get a list of Plans from the API.\n" + }, + { + "name": "private Networks", + "x-displayName": "Private Networks", + "description": "**Deprecated**: use [VPCs](#tag/VPCs) instead.

[Private Networks](https://www.vultr.com/docs/configuring-private-network/) are fully isolated networks accessible only by instances on your account. Each private network is only available in one Region and cannot span across regions. An [instance](#tag/instances) can connect to [multiple private networks](https://www.vultr.com/docs/multiple-private-networks/) and you may have up to 5 private networks per [region](#tag/region).\n" + }, + { + "name": "VPCs", + "x-displayName": "VPCs", + "description": "[VPCs](https://www.vultr.com/docs/how-to-create-a-vultr-virtual-private-cloud-vpc/) are fully isolated networks accessible only by instances on your account. Each VPC is only available in one region and cannot span across regions. An [instance](#tag/instances) can connect to multiple VPCs and you may have up to 5 VPCs per [region](#tag/region).\n" + }, + { + "name": "VPC2", + "x-displayName": "VPC 2.0", + "description": "[VPCs](https://www.vultr.com/docs/how-to-create-a-vultr-virtual-private-cloud-vpc/) are fully isolated networks accessible only by instances on your account. Each VPC is only available in one region and cannot span across regions. An [instance](#tag/instances) can connect to multiple VPCs and you may have up to 5 VPCs per [region](#tag/region).\n" + }, + { + "name": "reserved-ip", + "x-displayName": "Reserved IPs", + "description": "IP addresses can be [reserved](https://my.vultr.com/network/) and moved between [instances](#tag/instances). Reserved IPs can also be used as [floating addresses](https://www.vultr.com/docs/high-availability-on-vultr-with-floating-ip-and-bgp/) for high-availability.\n" + }, + { + "name": "region", + "x-displayName": "Regions", + "description": "Instances can be deployed in many [Regions](https://www.vultr.com/features/datacenter-locations/) on multiple continents. Choose any of our worldwide locations to deploy servers near your office or customers for low-latency." + }, + { + "name": "snapshot", + "x-displayName": "Snapshots", + "description": "A snapshot is a point-in-time image of an instance. We do not stop the instance when taking a snapshot. Booting from a snapshot is similar to rebooting after a non-graceful restart. Snapshots are physically the same as [backups](#tag/backup), but snapshots are manual while backups run automatically on a schedule. See our [Snapshot Quickstart Guide](https://www.vultr.com/docs/vultr-vps-snapshots/) for more information.\n" + }, + { + "name": "subaccount", + "x-displayName": "Sub-Accounts", + "description": "Sub-accounts are separate Vultr accounts that are directly linked to your account. These accounts function similarly to normal Vultr accounts with some additional billing and administrative features available to your account.\n" + }, + { + "name": "ssh", + "x-displayName": "SSH Keys", + "description": "You can add [SSH keys](https://www.vultr.com/docs/how-do-i-generate-ssh-keys/) to your [account](https://my.vultr.com/settings/#settingssshkeys/), which can be copied to new instances when first deployed. Updating a key does not update any running instances. If you [reinstall](#operation/reinstall-instance) an instance (erasing all its data), it will inherit the updated key." + }, + { + "name": "startup", + "x-displayName": "Startup Scripts", + "description": "Vultr allows you to assign [two types of scripts to a server](https://www.vultr.com/docs/vultr-startup-scripts-quickstart-guide/). Boot scripts configure new deployments, and PXE scripts automatically install operating systems. Assign startup scripts to your servers through the API or on your [Startup Scripts page](https://my.vultr.com/startup/) in the customer portal.\n
\n
\n**Note**: There is a size limit of 64KB on the startup script.\n" + }, + { + "name": "users", + "x-displayName": "Users", + "description": "Vultr supports [multiple users](https://my.vultr.com/settings/#settingsusers) in each account, and each user has [individual access permissions](https://my.vultr.com/users/manage/?USERID=new). Users have unique API keys, which respect the permission for that user." + } + ], + "security": [ + { + "API Key": [] + } + ] +} \ No newline at end of file