Introduction
Welcome to the Tavu.io API reference! You can use our API endpoints to access and manage your instances and other resources.
On the right hand side you can see examples on how to use our API in Shell code.
All API requests should be directed to https://api.tavu.io/vps/{service}/{version}/{resource_type}
.
service
e.g. computeversion
e.g. v1resource_type
e.g. instances
All API requests and responses should be provided in JSON format.
Authentication
API keys are used to allow access to the API. You can register an API key at our Tavu.io dashboard.
All API requests are expected to have your API key included in a header that looks like the following:
Authorization: your-api-key
Additionally, if you want to authenticate with a team that you own or are a member of, you need to include a X-Team-Id
header with the request.
If no team ID is passed, all calls are made for your account, even if you have converted your account to a team account.
X-Team-Id: your-team-id
Compute
Instances
List all instances
Returns a list of all your instances.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances" \
-H 'Authorization: my-api-key'
Example response
[
{
"created_at": "2017-10-27T09:08:33.000+03:00",
"id": "1c06dd09-966b-4ea7-abf1-243b2a447c60",
"ssh_keys": [],
"availability_zone": {
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
},
"status": "active",
"name": "API-instance-001",
"security_groups": [
{
"id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"name": "default",
"description": "Default security group"
},
{
"id": "935bad7c-1b2a-46d3-ab5f-a03530e12d3c",
"name": "API-security-group-001",
"description": "This is an example security group."
}
],
"volumes": [
{
"created_at": "2017-10-27T12:44:04.000+03:00",
"id": "1b16e59d-f30d-4e8f-96ea-600530c8e1df",
"detach_time": null,
"size": 1,
"status": "in-use",
"snapshot_id": null,
"description": "This is an example volume.",
"name": "API-volume-001",
"attachment": {
"mounted_at": "/dev/vdb",
"instance_id": "1c06dd09-966b-4ea7-abf1-243b2a447c60",
"attach_time": "2017-10-30T09:38:24.000+02:00",
"status": "attached"
}
}
],
"configuration": {
"id": "9c345ee8-9f33-49e0-80d6-73a1f766a268",
"cpu": 1,
"disk_type": "hdd",
"disk": 50,
"ram": 512,
"bandwidth": "500.0",
"availability_zones": [
{
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
}
]
},
"image": {
"id": "00ed37ab-7a47-45b3-9419-543a40b3c3f2",
"name": "Ubuntu",
"version": "14.04"
},
"ports": [
{
"id": "ae09a104-3893-4762-91f7-ab46ece51b72",
"description": "",
"name": "",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317",
"mac_address": "fa:16:3e:71:01:cb",
"admin_state_up": true,
"status": "ACTIVE",
"device_id": "1c06dd09-966b-4ea7-abf1-243b2a447c60",
"device_owner": "compute:None",
"ip_allocations": [
{
"ip_address": "192.168.1.13",
"subnet_id": "cfff8364-bad7-4844-a2f0-1154600463d8",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317"
}
]
},
{
"id": "df329d74-bf12-463a-abae-3c052aa5e834",
"description": "",
"name": "",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317",
"mac_address": "fa:16:3e:e8:69:04",
"admin_state_up": true,
"status": "ACTIVE",
"device_id": "1c06dd09-966b-4ea7-abf1-243b2a447c60",
"device_owner": "compute:None",
"ip_allocations": [
{
"ip_address": "192.168.1.5",
"subnet_id": "cfff8364-bad7-4844-a2f0-1154600463d8",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317"
}
]
}
]
},
{
"created_at": "2017-11-03T09:21:41.000+02:00",
"id": "6ca83822-e89b-4607-b362-6580577005ab",
"ssh_keys": [
"API-ssh-key-001"
],
"availability_zone": {
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
},
"status": "active",
"name": "API-instance-002",
"security_groups": [
{
"id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"name": "default",
"description": "Default security group"
}
],
"volumes": [],
"configuration": {
"id": "9c345ee8-9f33-49e0-80d6-73a1f766a268",
"cpu": 1,
"disk_type": "hdd",
"disk": 50,
"ram": 512,
"bandwidth": "500.0",
"availability_zones": [
{
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
}
]
},
"image": {
"id": "00ed37ab-7a47-45b3-9419-543a40b3c3f2",
"name": "Ubuntu",
"version": "14.04"
},
"ports": [
{
"id": "244eac20-d496-460c-a255-af8f3a107ce3",
"description": "",
"name": "",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317",
"mac_address": "fa:16:3e:f0:09:a7",
"admin_state_up": true,
"status": "ACTIVE",
"device_id": "6ca83822-e89b-4607-b362-6580577005ab",
"device_owner": "compute:None",
"ip_allocations": [
{
"ip_address": "192.168.1.12",
"subnet_id": "cfff8364-bad7-4844-a2f0-1154600463d8",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317"
}
]
}
]
}
]
Request
GET/vps/compute/v1/instances
Show instance details
Returns a detailed description of the instance.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/1c06dd09-966b-4ea7-abf1-243b2a447c60" \
-H 'Authorization: my-api-key'
Example response
{
"created_at": "2017-10-27T09:08:33.000+03:00",
"id": "1c06dd09-966b-4ea7-abf1-243b2a447c60",
"ssh_keys": [],
"availability_zone": {
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
},
"status": "active",
"name": "API-instance-001",
"security_groups": [
{
"id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"name": "default",
"description": "Default security group"
},
{
"id": "935bad7c-1b2a-46d3-ab5f-a03530e12d3c",
"name": "API-security-group-001",
"description": "This is an example security group."
}
],
"volumes": [
{
"created_at": "2017-10-27T12:44:04.000+03:00",
"id": "1b16e59d-f30d-4e8f-96ea-600530c8e1df",
"detach_time": null,
"size": 1,
"status": "in-use",
"snapshot_id": null,
"description": "This is an example volume.",
"name": "API-volume-001",
"attachment": {
"mounted_at": "/dev/vdb",
"instance_id": "1c06dd09-966b-4ea7-abf1-243b2a447c60",
"attach_time": "2017-10-30T09:38:24.000+02:00",
"status": "attached"
}
}
],
"configuration": {
"id": "9c345ee8-9f33-49e0-80d6-73a1f766a268",
"cpu": 1,
"disk_type": "hdd",
"disk": 50,
"ram": 512,
"bandwidth": "500.0",
"availability_zones": [
{
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
}
]
},
"image": {
"id": "00ed37ab-7a47-45b3-9419-543a40b3c3f2",
"name": "Ubuntu",
"version": "14.04"
},
"ports": [
{
"id": "ae09a104-3893-4762-91f7-ab46ece51b72",
"description": "",
"name": "",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317",
"mac_address": "fa:16:3e:71:01:cb",
"admin_state_up": true,
"status": "ACTIVE",
"device_id": "1c06dd09-966b-4ea7-abf1-243b2a447c60",
"device_owner": "compute:None",
"ip_allocations": [
{
"ip_address": "192.168.1.13",
"subnet_id": "cfff8364-bad7-4844-a2f0-1154600463d8",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317"
}
]
},
{
"id": "df329d74-bf12-463a-abae-3c052aa5e834",
"description": "",
"name": "",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317",
"mac_address": "fa:16:3e:e8:69:04",
"admin_state_up": true,
"status": "ACTIVE",
"device_id": "1c06dd09-966b-4ea7-abf1-243b2a447c60",
"device_owner": "compute:None",
"ip_allocations": [
{
"ip_address": "192.168.1.5",
"subnet_id": "cfff8364-bad7-4844-a2f0-1154600463d8",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317"
}
]
}
]
}
Request
GET/vps/compute/v1/instances/{instance_id}
Create instance
Creates an instance.
You can control your instance's credentials with the following parameters. The parameters are also evaluated in the order that they appear in in the list, meaning the earlier parameter takes precedence over the ones that come after it.
- With the
instance_script
parameter- Overrides
instance_script_id, instance_user_ids, ssh_keys, disable_password
- Overrides
- With the
instance_script_id
parameter- Overrides
instance_user_ids, ssh_keys, disable_password
- Overrides
- With the
instance_user_ids
parameter- Overrides
ssh_keys, disable_password
- Overrides
If you don't supply any of the above parameters, we will automatically generate credentials
for you. You can still control the generated credentials with the ssh_keys
and
disable_password
parameters. When possible, we will try and provide you with
any usernames
and password
that we detected during the instance creation,
these are returned once in the instance create response.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"instance": {
"name": "API-instance-001",
"image_id": "00ed37ab-7a47-45b3-9419-543a40b3c3f2",
"configuration_id": "6cb38035-1c37-453d-ab44-ce3ac54f6ce5",
"ssh_keys": [
"API-ssh-key-001"
],
"disable_password": false,
"networks": [
"165d4a26-2114-4a14-9e75-b865b48e2ce0",
"public"
],
"availability_zone_id": "b7061120-6fd4-409a-ab38-a8c669b69c99"
}
}'
Request
POST/vps/compute/v1/instances
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
instance | true | object | An instance object. |
name | true | string | The name you want for the instance. |
image_id | true | string | The image you want the instance to boot from. This can be an operating system or instance snapshot. |
configuration_id | true | string | The configuration you want the instance to boot with. |
networks | false | array | An array of network IDs you want to attach the instance to. For public network add the word 'public' in the array. If no networks are given, instance will automatically be attached to a public network. |
ssh_keys | false | string | An array of SSH key names you want to associate with the instance. |
disable_password | false | boolean | Set to true if you wish to disable password authentication completely and only use SSH keys for authentication. Cannot be set to true if no SSH keys are set. |
instance_user_ids | false | array | An array of Instance user IDs. These Instance user s will be associated with your new instance. Overrides ssh_keys, disable_password |
instance_script_id | false | integer | ID of the Instance script you want to run on this instance. This will overwrite any Instance user s you give. Overrides instance_user_ids, ssh_keys, disable_password |
instance_script | false | string | A Base64 strict encoded string that contains your script. You can use this field to pass user data to your instance without saving it as an Instance script object. Overrides instance_script_id, instance_user_ids, ssh_keys, disable_password |
upgrade_on_first_boot | false | boolean | When set to true, upgrades and installs packages on your instance on first boot. |
reboot_after_cloud_init | false | boolean | When set to true, reboots your instance after running cloud-init. This option is strongly recommended when upgrade_on_first_boot is set to true. |
generate_credentials | false | boolean | When building an instance from a snapshot and set to true allows generating credentials or adding Instance user s to this instance. Note that any credentials the snapshot has will take precedence over the generated ones. |
availability_zone_id | false | string | ID of the Availability zone you want this instance to be in. If not given an availability zone will be set automatically. Note that not all configurations are available in all availability zones. |
Example response
{
"created_at": "2017-12-04T13:56:05.000+00:00",
"id": "482e25a1-d3c3-4184-b027-e0de11d6ee57",
"ssh_keys": [
"API-ssh-key-001"
],
"availability_zone": {
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
},
"status": "building",
"name": "API-instance-001",
"security_groups": [],
"volumes": [],
"configuration": {
"id": "6cb38035-1c37-453d-ab44-ce3ac54f6ce5",
"cpu": 2,
"disk_type": "ssd",
"disk": 50,
"ram": 1024,
"bandwidth": "1000.0",
"availability_zones": [
{
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
}
]
},
"image": {
"id": "00ed37ab-7a47-45b3-9419-543a40b3c3f2",
"name": "Ubuntu",
"version": "14.04"
},
"ports": [],
"usernames": "ubuntu",
"password": "ycpzdhf5"
}
Response
Parameters
Parameter | Type | Description |
---|---|---|
name | string | The name of the instance. |
status | string | The status of the instance. |
id | string | The UUID of the Instance. |
availability_zone | object | An Availability zone object. |
ssh_keys | array | An array of SSH key objects. |
configuration | object | A Configuration object. |
created_at | string | An ISO8601 formatted UTC timestamp. |
image | object | An Image object. |
ports | array | An array of Port objects. |
security_groups | array | An array of Security group objects. |
snapshots | array | An array of Snapshot objects. |
volumes | array | An array of Volume objects. |
usernames | string | A comma separated list of usernames. Can be null if no usernames were be found. |
password | string | Login password. Can be null if no password was generated. |
Update instance
Updates an existing instance and returns the updated instance.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/21af330a-3f01-4afc-8359-62661666a2e0" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"instance": {
"name": "Instance-001"
}
}'
Request
PATCH/vps/compute/v1/instances/{instance_id}
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
instance | true | object | An instance object. |
name | false | string | The new name for the instance. |
Example response
{
"name": "Instance-001",
"ssh_keys": [
"API-ssh-key-001"
],
"availability_zone": {
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
},
"image": {
"id": "00ed37ab-7a47-45b3-9419-543a40b3c3f2",
"name": "Ubuntu",
"version": "14.04"
},
"created_at": "2017-12-01T13:20:50.000+00:00",
"id": "21af330a-3f01-4afc-8359-62661666a2e0",
"status": "active",
"security_groups": [],
"volumes": [],
"configuration": {
"id": "9c345ee8-9f33-49e0-80d6-73a1f766a268",
"cpu": 1,
"disk_type": "hdd",
"disk": 50,
"ram": 512,
"bandwidth": "500.0",
"availability_zones": [
{
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
}
]
},
"ports": []
}
Response
Parameters
Same as instance create.
Delete instance
Deletes the instance and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/9ad22189-fb8d-499b-b012-c32baca2bec2" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/compute/v1/instances/{instance_id}
Instance actions
Start instance
Starts an instance. Returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/3dcc547c-457b-42fb-855d-a90b5334c41c/action" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"start": null
}'
Request
POST/vps/compute/v1/instances/{instance_id}/action
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
start | true | none | A null value. Only the key is important. |
Stop instance
Stops an instance. Returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/3dcc547c-457b-42fb-855d-a90b5334c41c/action" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"stop": null
}'
Request
POST/vps/compute/v1/instances/{instance_id}/action
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
stop | true | none | A null value. Only the key is important. |
Reboot instance
Reboots an instance. Returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/3dcc547c-457b-42fb-855d-a90b5334c41c/action" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"reboot": null
}'
Request
POST/vps/compute/v1/instances/{instance_id}/action
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
reboot | true | none | A null value. Only the key is important. |
Force reboot instance
Force reboots an instance. Returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/3dcc547c-457b-42fb-855d-a90b5334c41c/action" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"force_reboot": null
}'
Request
POST/vps/compute/v1/instances/{instance_id}/action
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
force_reboot | true | none | A null value. Only the key is important. |
Resize instance
Resizes an instance. Returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/3dcc547c-457b-42fb-855d-a90b5334c41c/action" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"resize": {
"configuration_id": "0df068bc-21fb-4b77-8efb-9f39ede79d63"
}
}'
Request
POST/vps/compute/v1/instances/{instance_id}/action
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
resize | true | object | A resize object. |
configuration_id | true | string | An ID of the configuration you want to resize to. |
Confirm resize of instance
Confirm resize of an instance. Returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/3dcc547c-457b-42fb-855d-a90b5334c41c/action" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"confirm_resize": null
}'
Request
POST/vps/compute/v1/instances/{instance_id}/action
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
confirm_resize | true | none | A null value. Only the key is important. |
Revert resize of instance
Revert resize of an instance. Returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/3dcc547c-457b-42fb-855d-a90b5334c41c/action" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"revert_resize": null
}'
Request
POST/vps/compute/v1/instances/{instance_id}/action
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
revert_resize | true | none | A null value. Only the key is important. |
Rebuild instance
Rebuilds an instance. Returns the instance.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/3dcc547c-457b-42fb-855d-a90b5334c41c/action" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"rebuild": {
"image_id": "00ed37ab-7a47-45b3-9419-543a40b3c3f2",
"name": "Instance-1"
}
}'
Example response
{
"created_at": "2017-12-12T08:31:00.000+00:00",
"id": "3dcc547c-457b-42fb-855d-a90b5334c41c",
"ssh_key": null,
"availability_zone": {
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
},
"status": "active",
"name": "Instance-1",
"security_groups": [
{
"id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"name": "default",
"description": "Default security group",
"rules": [
{
"id": "185c069b-6214-45de-a8e4-531ba3b5ac71",
"security_group_id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"remote_group_id": null,
"direction": "egress",
"ethertype": "IPv6",
"protocol": null,
"port_range_min": null,
"port_range_max": null,
"remote_ip_prefix": null
},
{
"id": "28cb1966-dca9-4421-b4e8-9b32484a028f",
"security_group_id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"remote_group_id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"direction": "ingress",
"ethertype": "IPv6",
"protocol": null,
"port_range_min": null,
"port_range_max": null,
"remote_ip_prefix": null
},
{
"id": "7d9eacd5-26db-44be-87c0-a7004ad08163",
"security_group_id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"remote_group_id": null,
"direction": "ingress",
"ethertype": "IPv4",
"protocol": null,
"port_range_min": null,
"port_range_max": null,
"remote_ip_prefix": "0.0.0.0/0"
},
{
"id": "9e989924-77f5-47fb-a012-80c8b630b888",
"security_group_id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"remote_group_id": null,
"direction": "egress",
"ethertype": "IPv4",
"protocol": null,
"port_range_min": null,
"port_range_max": null,
"remote_ip_prefix": null
},
{
"id": "f670f40b-3f89-426c-9c01-b8b16be4d5d0",
"security_group_id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"remote_group_id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"direction": "ingress",
"ethertype": "IPv4",
"protocol": null,
"port_range_min": null,
"port_range_max": null,
"remote_ip_prefix": null
}
]
}
],
"volumes": [],
"configuration": {
"id": "0df068bc-21fb-4b77-8efb-9f39ede79d63",
"cpu": 1,
"disk_type": "ssd",
"disk": 50,
"ram": 512,
"bandwidth": "750.0",
"availability_zones": [
{
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
}
]
},
"image": {
"id": "00ed37ab-7a47-45b3-9419-543a40b3c3f2",
"name": "Ubuntu",
"version": "14.04"
},
"ports": [
{
"id": "b986b9ca-933c-4a11-9ab5-d952378a2e0c",
"description": "",
"name": "",
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"mac_address": "fa:16:3e:82:72:e6",
"admin_state_up": true,
"status": "ACTIVE",
"device_id": "3dcc547c-457b-42fb-855d-a90b5334c41c",
"device_owner": "compute:None",
"ip_allocations": [
{
"ip_address": "192.168.2.5",
"subnet_id": "9874325d-754c-4e66-989e-e5d83e5d8248"
},
{
"ip_address": "abc0::5",
"subnet_id": "339c4393-3d74-4e7c-b10d-e23c58d0b1fb"
}
]
}
],
"password": "VkFBtuK6",
"username": "ubuntu"
}
Request
POST/vps/compute/v1/instances/{instance_id}/action
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
rebuild | true | object | A rebuild object. |
image_id | true | string | An ID of the image you want to rebuild from. |
name | false | string | A new name for the instance. |
Attach security group
Attaches a security group to an instance. Returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/3dcc547c-457b-42fb-855d-a90b5334c41c/action" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"attach_security_group": {
"security_group_id": "00ed37ab-7a47-45b3-9419-543a40b3c3f2",
}
}'
Request
POST/vps/compute/v1/instances/{instance_id}/action
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
attach_security_group | true | object | An attach_security_group object. |
security_group_id | true | string | The ID of the security group you wish to attach. |
Detach security group
Detaches a security group from an instance. Returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/3dcc547c-457b-42fb-855d-a90b5334c41c/action" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"detach_security_group": {
"security_group_id": "00ed37ab-7a47-45b3-9419-543a40b3c3f2",
}
}'
Request
POST/vps/compute/v1/instances/{instance_id}/action
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
detach_security_group | true | object | A detach_security_group object. |
security_group_id | true | string | The ID of the security group you wish to detach. |
Instance port interfaces
List all interfaces of an instance
Returns a list of all the port interfaces of the instance.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/cb9a2e15-2d5a-446e-ab1e-ec071ae126d1/interfaces" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "9fb57a9b-1b0e-45de-863e-73373ebff4d4",
"description": "",
"name": "",
"network_id": "bdcffe24-89a2-4c72-80df-2709997192a7",
"mac_address": "fa:16:3e:cf:e0:b8",
"admin_state_up": true,
"status": "ACTIVE",
"device_id": "19b1fa7a-7f5e-4806-8b6a-04472e46c3ba",
"device_owner": "compute:None",
"ip_allocations": [
{
"ip_address": "192.168.255.44",
"subnet_id": "efa9c254-48bd-4d96-925f-a44a21828513"
}
]
}
]
Request
GET/vps/compute/v1/instances/{instance_id}/interfaces
Show instance interface details
Returns a detailed description of the instance port interface.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/19b1fa7a-7f5e-4806-8b6a-04472e46c3ba/interfaces/9fb57a9b-1b0e-45de-863e-73373ebff4d4" \
-H 'Authorization: my-api-key'
Example response
{
"id": "9fb57a9b-1b0e-45de-863e-73373ebff4d4",
"description": "",
"name": "",
"network_id": "bdcffe24-89a2-4c72-80df-2709997192a7",
"mac_address": "fa:16:3e:cf:e0:b8",
"admin_state_up": true,
"status": "ACTIVE",
"device_id": "19b1fa7a-7f5e-4806-8b6a-04472e46c3ba",
"device_owner": "compute:None",
"ip_allocations": [
{
"ip_address": "192.168.255.44",
"subnet_id": "efa9c254-48bd-4d96-925f-a44a21828513"
}
]
}
Request
GET/vps/compute/v1/instances/{instance_id}/interfaces/{interface_id}
Create instance interface
Creates a port interface for the instance in a network. Returns the newly created port object.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/19b1fa7a-7f5e-4806-8b6a-04472e46c3ba/interfaces" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0"
}'
Example response
{
"id": "6421a7c1-156f-4e03-94c8-c844cc22eeef",
"description": "",
"name": "",
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"mac_address": "fa:16:3e:82:3a:05",
"admin_state_up": true,
"status": "DOWN",
"device_id": "19b1fa7a-7f5e-4806-8b6a-04472e46c3ba",
"device_owner": "compute:None",
"ip_allocations": [
{
"ip_address": "192.168.2.7",
"subnet_id": "9874325d-754c-4e66-989e-e5d83e5d8248"
},
{
"ip_address": "abc0::7",
"subnet_id": "339c4393-3d74-4e7c-b10d-e23c58d0b1fb"
}
]
}
Request
POST/vps/compute/v1/instances/{instance_id}/interfaces
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
network_id | true | string | ID of the network you wish to attach the instance to, or 'public' if you want to attach the instance to a public network. |
Delete instance interface
Deletes a port interface from the instance.
Example request
curl "https://api.tavu.io/vps/compute/v1/instances/19b1fa7a-7f5e-4806-8b6a-04472e46c3ba/interfaces/6421a7c1-156f-4e03-94c8-c844cc22eeef" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/compute/v1/instances/{instance_id}/interfaces/{interface_id}
Instance users
List all instance users
Returns a list of all your instance users.
Example request
curl "https://api.tavu.io/vps/compute/v1/instance-users" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": 15,
"username": "my-instance-user-1",
"ssh_keys": [
{
"name": "my-ssh-key-1",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEUVNcJAFp1Q1jTa6fr/Jxv2J2jq3BSdYFL6TsVSfXX2m/v6bT9LrGxF2hbjHei9dsMxSW7Ksc6MgSomCmPfJwHJDX5SBQfZc8OmV861XDjOqT2aSxZ+oKXx78esGa+9SK2epYcX5lwShUQiu4ET+oXt8kUHQa1vRTYKTQjt311ztgR0x2T+wsEoC1XU+sxZKKess7CefLK6TnmBXPdwVrF0KVzY+Bk8H23wQjX9iA3gHriY1bP4k5V4lKFf4bVqugrlFUM/6hZy3rtrBfiGe+6ifJUx8EUh5W1F/xQ/xvFJvHxsAu/Bcz/nxuK40mUetyR4VVwXhfy0wUt/CH48MV Generated-by-Nova",
"created_at": "2018-05-07T07:42:09.000+00:00",
"fingerprint": "d8:38:c5:cb:fb:c4:10:c1:c5:cb:c8:24:b6:51:d5:09"
},
{
"name": "my-ssh-key-2",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7200jxzHXwhByvZcGKX5SwoojvoJJABjA/cYTr/lQJ4X7ulejGqBflTO05xB0v2uNeB4N462oAdU8guhJv7xYZgNRCG8ibOUcQArMxEuIVbBKjnpi6+HsitSY5xAkNaKVTRlaIm2vxgaLTBIQhu4IsrH1QiINHREGdduKN89M1T7HkAbPV0aLPZG/EwjJEWfQQs9XYwZ0kXJB3uGt7NQecQg9/UVzFaz1imA6IC2O9Sh+GVyo04x4KCvKDbHek1XRGUt3LaN4aNLZ9ZRmTmyvaq267RQRcMPVNKsPBxR9NfY5nCz9XT4U/Ra4+Guw4DrVE+OCYKcDel8xzjTN8wJZ Generated-by-Nova",
"created_at": "2018-05-07T07:42:12.000+00:00",
"fingerprint": "dc:d4:b6:59:ba:15:14:f2:cb:4b:ab:32:ef:a4:3d:55"
}
],
"disable_password": false,
"created_at": "2018-04-25T09:42:26.410Z"
},
{
"id": 16,
"username": "my-instance-user-2",
"ssh_keys": [
{
"name": "my-ssh-key-1",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEUVNcJAFp1Q1jTa6fr/Jxv2J2jq3BSdYFL6TsVSfXX2m/v6bT9LrGxF2hbjHei9dsMxSW7Ksc6MgSomCmPfJwHJDX5SBQfZc8OmV861XDjOqT2aSxZ+oKXx78esGa+9SK2epYcX5lwShUQiu4ET+oXt8kUHQa1vRTYKTQjt311ztgR0x2T+wsEoC1XU+sxZKKess7CefLK6TnmBXPdwVrF0KVzY+Bk8H23wQjX9iA3gHriY1bP4k5V4lKFf4bVqugrlFUM/6hZy3rtrBfiGe+6ifJUx8EUh5W1F/xQ/xvFJvHxsAu/Bcz/nxuK40mUetyR4VVwXhfy0wUt/CH48MV Generated-by-Nova",
"created_at": "2018-05-07T07:42:09.000+00:00",
"fingerprint": "d8:38:c5:cb:fb:c4:10:c1:c5:cb:c8:24:b6:51:d5:09"
}
],
"disable_password": false,
"created_at": "2018-04-25T09:42:45.894Z"
}
]
Request
GET/vps/compute/v1/instance-users
Show instance user details
Returns a detailed description of the instance user.
Example request
curl "https://api.tavu.io/vps/compute/v1/instance-users/15" \
-H 'Authorization: my-api-key'
Example response
{
"id": 15,
"username": "my-instance-user-1",
"ssh_keys": [
{
"name": "my-ssh-key-1",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEUVNcJAFp1Q1jTa6fr/Jxv2J2jq3BSdYFL6TsVSfXX2m/v6bT9LrGxF2hbjHei9dsMxSW7Ksc6MgSomCmPfJwHJDX5SBQfZc8OmV861XDjOqT2aSxZ+oKXx78esGa+9SK2epYcX5lwShUQiu4ET+oXt8kUHQa1vRTYKTQjt311ztgR0x2T+wsEoC1XU+sxZKKess7CefLK6TnmBXPdwVrF0KVzY+Bk8H23wQjX9iA3gHriY1bP4k5V4lKFf4bVqugrlFUM/6hZy3rtrBfiGe+6ifJUx8EUh5W1F/xQ/xvFJvHxsAu/Bcz/nxuK40mUetyR4VVwXhfy0wUt/CH48MV Generated-by-Nova",
"created_at": "2018-05-07T07:42:09.000+00:00",
"fingerprint": "d8:38:c5:cb:fb:c4:10:c1:c5:cb:c8:24:b6:51:d5:09"
},
{
"name": "my-ssh-key-2",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7200jxzHXwhByvZcGKX5SwoojvoJJABjA/cYTr/lQJ4X7ulejGqBflTO05xB0v2uNeB4N462oAdU8guhJv7xYZgNRCG8ibOUcQArMxEuIVbBKjnpi6+HsitSY5xAkNaKVTRlaIm2vxgaLTBIQhu4IsrH1QiINHREGdduKN89M1T7HkAbPV0aLPZG/EwjJEWfQQs9XYwZ0kXJB3uGt7NQecQg9/UVzFaz1imA6IC2O9Sh+GVyo04x4KCvKDbHek1XRGUt3LaN4aNLZ9ZRmTmyvaq267RQRcMPVNKsPBxR9NfY5nCz9XT4U/Ra4+Guw4DrVE+OCYKcDel8xzjTN8wJZ Generated-by-Nova",
"created_at": "2018-05-07T07:42:12.000+00:00",
"fingerprint": "dc:d4:b6:59:ba:15:14:f2:cb:4b:ab:32:ef:a4:3d:55"
}
],
"disable_password": false,
"created_at": "2018-04-25T09:42:26.410Z"
}
Request
GET/vps/compute/v1/instance-users/{instance_user_id}
Create instance user
Creates an instance user.
Example request
curl "https://api.tavu.io/vps/compute/v1/instance-users" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"instance_user": {
"username": "my-instance-user-1",
"disable_password": false,
"password": "my-password",
"password_confirmation": "my-password",
"ssh_keys": [
"my-ssh-key-1", "my-ssh-key-2"
]
}
}'
Example response
{
"id": 15,
"username": "my-instance-user-1",
"ssh_keys": [
{
"name": "my-ssh-key-1",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEUVNcJAFp1Q1jTa6fr/Jxv2J2jq3BSdYFL6TsVSfXX2m/v6bT9LrGxF2hbjHei9dsMxSW7Ksc6MgSomCmPfJwHJDX5SBQfZc8OmV861XDjOqT2aSxZ+oKXx78esGa+9SK2epYcX5lwShUQiu4ET+oXt8kUHQa1vRTYKTQjt311ztgR0x2T+wsEoC1XU+sxZKKess7CefLK6TnmBXPdwVrF0KVzY+Bk8H23wQjX9iA3gHriY1bP4k5V4lKFf4bVqugrlFUM/6hZy3rtrBfiGe+6ifJUx8EUh5W1F/xQ/xvFJvHxsAu/Bcz/nxuK40mUetyR4VVwXhfy0wUt/CH48MV Generated-by-Nova",
"created_at": "2018-05-07T07:42:09.000+00:00",
"fingerprint": "d8:38:c5:cb:fb:c4:10:c1:c5:cb:c8:24:b6:51:d5:09"
},
{
"name": "my-ssh-key-2",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7200jxzHXwhByvZcGKX5SwoojvoJJABjA/cYTr/lQJ4X7ulejGqBflTO05xB0v2uNeB4N462oAdU8guhJv7xYZgNRCG8ibOUcQArMxEuIVbBKjnpi6+HsitSY5xAkNaKVTRlaIm2vxgaLTBIQhu4IsrH1QiINHREGdduKN89M1T7HkAbPV0aLPZG/EwjJEWfQQs9XYwZ0kXJB3uGt7NQecQg9/UVzFaz1imA6IC2O9Sh+GVyo04x4KCvKDbHek1XRGUt3LaN4aNLZ9ZRmTmyvaq267RQRcMPVNKsPBxR9NfY5nCz9XT4U/Ra4+Guw4DrVE+OCYKcDel8xzjTN8wJZ Generated-by-Nova",
"created_at": "2018-05-07T07:42:12.000+00:00",
"fingerprint": "dc:d4:b6:59:ba:15:14:f2:cb:4b:ab:32:ef:a4:3d:55"
}
],
"disable_password": false,
"created_at": "2018-04-25T09:42:26.410Z"
}
Request
POST/vps/compute/v1/instance-users
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
instance_user | true | object | An instance_user object. |
username | true | string | The username you want for the instance user. |
password | false | string | The password you want for this instance user. Required if disable_password is set to false. |
password_confirmation | false | string | Has to match the password . Required if password is given. |
ssh_keys | false | array | An array of SSH key names you want to associate with the instance user. SSH keys are required if disable_password is set to true. |
disable_password | false | boolean | Defaults to true. Set to false if you wish to enable password authentication. |
Update instance user
Updates an existing instance user and returns the updated instance user.
Example request
curl "https://api.tavu.io/vps/compute/v1/instance-users/15" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"instance_user": {
"username": "new-username"
}
}'
Example response
{
"id": 15,
"username": "new-username",
"ssh_keys": [
{
"name": "my-ssh-key-1",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEUVNcJAFp1Q1jTa6fr/Jxv2J2jq3BSdYFL6TsVSfXX2m/v6bT9LrGxF2hbjHei9dsMxSW7Ksc6MgSomCmPfJwHJDX5SBQfZc8OmV861XDjOqT2aSxZ+oKXx78esGa+9SK2epYcX5lwShUQiu4ET+oXt8kUHQa1vRTYKTQjt311ztgR0x2T+wsEoC1XU+sxZKKess7CefLK6TnmBXPdwVrF0KVzY+Bk8H23wQjX9iA3gHriY1bP4k5V4lKFf4bVqugrlFUM/6hZy3rtrBfiGe+6ifJUx8EUh5W1F/xQ/xvFJvHxsAu/Bcz/nxuK40mUetyR4VVwXhfy0wUt/CH48MV Generated-by-Nova",
"created_at": "2018-05-07T07:42:09.000+00:00",
"fingerprint": "d8:38:c5:cb:fb:c4:10:c1:c5:cb:c8:24:b6:51:d5:09"
},
{
"name": "my-ssh-key-2",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7200jxzHXwhByvZcGKX5SwoojvoJJABjA/cYTr/lQJ4X7ulejGqBflTO05xB0v2uNeB4N462oAdU8guhJv7xYZgNRCG8ibOUcQArMxEuIVbBKjnpi6+HsitSY5xAkNaKVTRlaIm2vxgaLTBIQhu4IsrH1QiINHREGdduKN89M1T7HkAbPV0aLPZG/EwjJEWfQQs9XYwZ0kXJB3uGt7NQecQg9/UVzFaz1imA6IC2O9Sh+GVyo04x4KCvKDbHek1XRGUt3LaN4aNLZ9ZRmTmyvaq267RQRcMPVNKsPBxR9NfY5nCz9XT4U/Ra4+Guw4DrVE+OCYKcDel8xzjTN8wJZ Generated-by-Nova",
"created_at": "2018-05-07T07:42:12.000+00:00",
"fingerprint": "dc:d4:b6:59:ba:15:14:f2:cb:4b:ab:32:ef:a4:3d:55"
}
],
"disable_password": false,
"created_at": "2018-04-25T09:42:26.410Z"
}
Request
PATCH/vps/compute/v1/instance-users/{instance_user_id}
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
instance_user | true | object | An instance_user object. |
username | true | string | The new username you want for the instance user. |
password | false | string | The new password you want for this instance user. Required if disable_password is set to false and no password exists for the instance user currently. |
password_confirmation | false | string | Has to match the password . Required if password is given. |
ssh_keys | false | array | An array of SSH key names you want to associate with the instance user. This will completely overwrite the old SSH keys. SSH keys are required if disable_password is set to true. |
disable_password | false | boolean | Defaults to true. Set to false if you wish to enable password authentication. |
Delete instance user
Deletes the instance user and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/compute/v1/instance-users/15" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/compute/v1/instance-users/{instance_user_id}
Instance scripts
List all instance scripts
Returns a list of all your instance scripts.
Example request
curl "https://api.tavu.io/vps/compute/v1/instance-scripts" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": 76,
"name": "my-instance-script-1",
"description": "A script that sets up my user how I want it.",
"script": "I2Nsb3VkLWNvbmZpZw0KLS0tDQp1c2VyczoNCi0gbmFtZTogbXl1c2VyMg0KICBzdWRvOiBBTEw9KEFMTCkgTk9QQVNTV0Q6QUxMDQogIHNoZWxsOiAiL2Jpbi9iYXNoIg0KICBzc2gtYXV0aG9yaXplZC1rZXlzOg0KICAtIHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQzZudTBVUmtoK0xKdTNGQ3RjakNRSDVEL29ibHIreGUzL1BVWUVKZXdvWWs4V08vc2xBVFN1Q3JJMHZGT2VGakd6NitLcDFkRVdYM0pudWkrKzNHNXdkeXA5VHlYeUNlMmF5dTErcUpOVWxJeUhMUXpyK0hJNjhza0l4Y1hLeVZ4UGZ6YlBiWXJ0d0VxazJiN2JlQ3NPRWUzNlNFUGhMNHVhaUh5eFRnWnBaTEI5TDdsaUxhZVBBNVZ5SFAxdW9Mbkx5R0JxZEFZZXBIaEZqOXNCQ0FWVmY0N1hSYVF3dXZzYjRYVHdZNDdLRTVwUktYck5DdGNobGtMUVo1cS8zOTFCQ1VpWW1qV0FkNUwveW00NnhlL3hwZUh5N2x1WDFMUCthTDlRd1Z6M0VYYTMzQlRlUk1CaERpV2RMdExvM3NJbVBsZVg5ZktZWk1CS1o4dlVJTTBEDQogICAgR2VuZXJhdGVkLWJ5LU5vdmENCg==",
"created_at": "2018-05-04T12:54:45.846Z"
}
]
Request
GET/vps/compute/v1/instance-scripts
Show instance script details
Returns a detailed description of the instance script.
Example request
curl "https://api.tavu.io/vps/compute/v1/instance-scripts/15" \
-H 'Authorization: my-api-key'
Example response
{
"id": 76,
"name": "my-instance-script-1",
"description": "A script that sets up my user how I want it.",
"script": "I2Nsb3VkLWNvbmZpZw0KLS0tDQp1c2VyczoNCi0gbmFtZTogbXl1c2VyMg0KICBzdWRvOiBBTEw9KEFMTCkgTk9QQVNTV0Q6QUxMDQogIHNoZWxsOiAiL2Jpbi9iYXNoIg0KICBzc2gtYXV0aG9yaXplZC1rZXlzOg0KICAtIHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQzZudTBVUmtoK0xKdTNGQ3RjakNRSDVEL29ibHIreGUzL1BVWUVKZXdvWWs4V08vc2xBVFN1Q3JJMHZGT2VGakd6NitLcDFkRVdYM0pudWkrKzNHNXdkeXA5VHlYeUNlMmF5dTErcUpOVWxJeUhMUXpyK0hJNjhza0l4Y1hLeVZ4UGZ6YlBiWXJ0d0VxazJiN2JlQ3NPRWUzNlNFUGhMNHVhaUh5eFRnWnBaTEI5TDdsaUxhZVBBNVZ5SFAxdW9Mbkx5R0JxZEFZZXBIaEZqOXNCQ0FWVmY0N1hSYVF3dXZzYjRYVHdZNDdLRTVwUktYck5DdGNobGtMUVo1cS8zOTFCQ1VpWW1qV0FkNUwveW00NnhlL3hwZUh5N2x1WDFMUCthTDlRd1Z6M0VYYTMzQlRlUk1CaERpV2RMdExvM3NJbVBsZVg5ZktZWk1CS1o4dlVJTTBEDQogICAgR2VuZXJhdGVkLWJ5LU5vdmENCg==",
"created_at": "2018-05-04T12:54:45.846Z"
}
Request
GET/vps/compute/v1/instance-scripts/{instance_id}
Create instance script
Creates an instance script.
Example request
curl "https://api.tavu.io/vps/compute/v1/instance-scripts" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"instance_script": {
"name": "my-instance-script-1",
"description": "A script that sets up my user how I want it.",
"script": "I2Nsb3VkLWNvbmZpZw0KLS0tDQp1c2VyczoNCi0gbmFtZTogbXl1c2VyMg0KICBzdWRvOiBBTEw9KEFMTCkgTk9QQVNTV0Q6QUxMDQogIHNoZWxsOiAiL2Jpbi9iYXNoIg0KICBzc2gtYXV0aG9yaXplZC1rZXlzOg0KICAtIHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQzZudTBVUmtoK0xKdTNGQ3RjakNRSDVEL29ibHIreGUzL1BVWUVKZXdvWWs4V08vc2xBVFN1Q3JJMHZGT2VGakd6NitLcDFkRVdYM0pudWkrKzNHNXdkeXA5VHlYeUNlMmF5dTErcUpOVWxJeUhMUXpyK0hJNjhza0l4Y1hLeVZ4UGZ6YlBiWXJ0d0VxazJiN2JlQ3NPRWUzNlNFUGhMNHVhaUh5eFRnWnBaTEI5TDdsaUxhZVBBNVZ5SFAxdW9Mbkx5R0JxZEFZZXBIaEZqOXNCQ0FWVmY0N1hSYVF3dXZzYjRYVHdZNDdLRTVwUktYck5DdGNobGtMUVo1cS8zOTFCQ1VpWW1qV0FkNUwveW00NnhlL3hwZUh5N2x1WDFMUCthTDlRd1Z6M0VYYTMzQlRlUk1CaERpV2RMdExvM3NJbVBsZVg5ZktZWk1CS1o4dlVJTTBEDQogICAgR2VuZXJhdGVkLWJ5LU5vdmENCg==",
}
}'
Example response
{
"id": 76,
"name": "my-instance-script-1",
"description": "A script that sets up my user how I want it.",
"script": "I2Nsb3VkLWNvbmZpZw0KLS0tDQp1c2VyczoNCi0gbmFtZTogbXl1c2VyMg0KICBzdWRvOiBBTEw9KEFMTCkgTk9QQVNTV0Q6QUxMDQogIHNoZWxsOiAiL2Jpbi9iYXNoIg0KICBzc2gtYXV0aG9yaXplZC1rZXlzOg0KICAtIHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQzZudTBVUmtoK0xKdTNGQ3RjakNRSDVEL29ibHIreGUzL1BVWUVKZXdvWWs4V08vc2xBVFN1Q3JJMHZGT2VGakd6NitLcDFkRVdYM0pudWkrKzNHNXdkeXA5VHlYeUNlMmF5dTErcUpOVWxJeUhMUXpyK0hJNjhza0l4Y1hLeVZ4UGZ6YlBiWXJ0d0VxazJiN2JlQ3NPRWUzNlNFUGhMNHVhaUh5eFRnWnBaTEI5TDdsaUxhZVBBNVZ5SFAxdW9Mbkx5R0JxZEFZZXBIaEZqOXNCQ0FWVmY0N1hSYVF3dXZzYjRYVHdZNDdLRTVwUktYck5DdGNobGtMUVo1cS8zOTFCQ1VpWW1qV0FkNUwveW00NnhlL3hwZUh5N2x1WDFMUCthTDlRd1Z6M0VYYTMzQlRlUk1CaERpV2RMdExvM3NJbVBsZVg5ZktZWk1CS1o4dlVJTTBEDQogICAgR2VuZXJhdGVkLWJ5LU5vdmENCg==",
"created_at": "2018-05-04T12:54:45.846Z"
}
Request
POST/vps/compute/v1/instance-scripts
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
instance_script | true | object | An instance_script object. |
name | true | string | The name you want for the instance script. |
description | false | string | A description for the instance script. |
script | true | string | The script you want to run on first boot. The script must be given as a strict Base64 encoded string. Meaning linebreak characters (\n) are not allowed. |
Update instance script
Updates an existing instance script and returns the updated instance script.
Example request
curl "https://api.tavu.io/vps/compute/v1/instance-users/76" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"instance_script": {
"name": "new-script-name"
}
}'
Example response
{
"id": 76,
"name": "new-script-name",
"description": "A script that sets up my user how I want it.",
"script": "I2Nsb3VkLWNvbmZpZw0KLS0tDQp1c2VyczoNCi0gbmFtZTogbXl1c2VyMg0KICBzdWRvOiBBTEw9KEFMTCkgTk9QQVNTV0Q6QUxMDQogIHNoZWxsOiAiL2Jpbi9iYXNoIg0KICBzc2gtYXV0aG9yaXplZC1rZXlzOg0KICAtIHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQzZudTBVUmtoK0xKdTNGQ3RjakNRSDVEL29ibHIreGUzL1BVWUVKZXdvWWs4V08vc2xBVFN1Q3JJMHZGT2VGakd6NitLcDFkRVdYM0pudWkrKzNHNXdkeXA5VHlYeUNlMmF5dTErcUpOVWxJeUhMUXpyK0hJNjhza0l4Y1hLeVZ4UGZ6YlBiWXJ0d0VxazJiN2JlQ3NPRWUzNlNFUGhMNHVhaUh5eFRnWnBaTEI5TDdsaUxhZVBBNVZ5SFAxdW9Mbkx5R0JxZEFZZXBIaEZqOXNCQ0FWVmY0N1hSYVF3dXZzYjRYVHdZNDdLRTVwUktYck5DdGNobGtMUVo1cS8zOTFCQ1VpWW1qV0FkNUwveW00NnhlL3hwZUh5N2x1WDFMUCthTDlRd1Z6M0VYYTMzQlRlUk1CaERpV2RMdExvM3NJbVBsZVg5ZktZWk1CS1o4dlVJTTBEDQogICAgR2VuZXJhdGVkLWJ5LU5vdmENCg==",
"created_at": "2018-05-04T12:54:45.846Z"
}
Request
PATCH/vps/compute/v1/instance-scripts/{instance_script_id}
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
instance_script | true | object | An instance_script object. |
name | true | string | The name you want for the instance script. |
description | false | string | A description for the instance script. |
script | true | string | The script you want to run on first boot. The script must be given as a strict Base64 encoded string. Meaning linebreak characters (\n) are not allowed. |
Delete instance script
Deletes the instance script and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/compute/v1/instance-users/15" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/compute/v1/instance-users/{instance_user_id}
Configurations
List all configurations
Returns a list of all available configurations for instances.
Example request
curl "https://api.tavu.io/vps/compute/v1/configurations" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "6cb38035-1c37-453d-ab44-ce3ac54f6ce5",
"cpu": 2,
"disk_type": "ssd",
"disk": 50,
"ram": 1024,
"bandwidth": "1000.0",
"availability_zones": [
{
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
}
]
},
{
"id": "9c345ee8-9f33-49e0-80d6-73a1f766a268",
"cpu": 1,
"disk_type": "hdd",
"disk": 50,
"ram": 512,
"bandwidth": "500.0",
"availability_zones": [
{
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
}
]
},
{
"id": "0df068bc-21fb-4b77-8efb-9f39ede79d63",
"cpu": 1,
"disk_type": "ssd",
"disk": 50,
"ram": 512,
"bandwidth": "750.0",
"availability_zones": [
{
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
}
]
},
{
"id": "6938285d-e79e-45fd-af04-1fdcae5e2090",
"cpu": 1,
"disk_type": "hdd",
"disk": 50,
"ram": 2048,
"bandwidth": "4000.0",
"availability_zones": [
{
"id": "b7061120-6fd4-409a-ab38-a8c669b69c99",
"region": "Ulvila",
"number": 2
}
]
},
{
"id": "9859841d-772c-4305-9e1e-940f13b4c014",
"cpu": 1,
"ram": 512,
"disk_type": "nvme",
"disk": 5,
"bandwidth": "10000.0",
"availability_zones": [
{
"id": "702b4979-5a1b-47c8-b539-d10ec9825cfd",
"region": "Ulvila",
"number": 1
}
]
},
]
Request
GET/vps/compute/v1/configurations
SSH keys
List all SSH keys
Returns a list of all your SSH keys.
Example request
curl "https://api.tavu.io/vps/compute/v1/ssh-keys" \
-H 'Authorization: my-api-key'
Example response
[
{
"created_at": "2017-11-16T13:24:14.000+00:00",
"name": "API-ssh-key-001",
"fingerprint": "c0:d3:ac:f8:86:b6:7a:73:18:19:de:0e:8c:c4:dc:d9",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5Pa2HJiIbo231473EW7BUy71gCCQGt45SU42mC0AQH7JQUG7vSvLGGAE6GHPlDszTxKfRohmXx0IGiwPp785A7Doone7TuUpablqC9rvwRY0PL70/cauKez9sYtylBszVLXCmaTAqI2QnuO3nJYcP7HjbJLiwb5oSjz67+5IBsU2e6uY+lktJA+05XgFAXPxoc1bfiIr2t+k+Ob33PMwVJAetbPhR6qIQqCD6O3ByS79SfECPWsa/mtMbbmTAf6lfrGg/vy8a8dEjz2qi+D/n/TzTqoNtLS8HG3Ip3e9+1aoVHOu3XBWOByw3CoRQwRwrPAE78myB8Oj/ocGBxhkt Generated-by-Nova"
},
{
"created_at": "2017-11-16T14:34:30.000+00:00",
"name": "API-ssh-key-002",
"fingerprint": "b8:8d:df:a1:79:7f:c1:f9:d7:08:99:4e:2b:cd:96:84",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDbz2wQehcjKE8OEdLWnQBtsjAxn8VS2OGFhjPstCLRWCjhpHDttXIzhEQrmVRbcAZ++R+Pko3jIApGvAZJxPdWbQJlAGOr2FU1zmBPJW6y0thDpzRK8R6r0mmDPeSqFZi6pDnqoP8mKgQKlQW6f4uBv3qRCjKLNl9EGKtgnVbTl8hcWK21+Tg2QvqRDzQzQ61ALWoT9OVz9mtkHLfZ2m5qxGqL8UePX+AyD2Sx8DlUbCrbk+7/tU07wIYv5ATqZLRdDnVd6Y/JvJRCULns9p9++8o5gsIg/+rtaxPTx3YbfphJNeYKr2HzXPhRxHw3MafIvqhSPTsz332q3QOTfy0n Generated-by-Nova"
}
]
Request
GET/vps/compute/v1/ssh-keys
Show SSH key details
Returns a detailed description of the SSH key.
Example request
curl "https://api.tavu.io/vps/compute/v1/ssh-keys/API-ssh-key-001" \
-H 'Authorization: my-api-key'
Example response
{
"created_at": "2017-11-16T13:24:14.000+00:00",
"name": "API-ssh-key-001",
"fingerprint": "c0:d3:ac:f8:86:b6:7a:73:18:19:de:0e:8c:c4:dc:d9",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5Pa2HJiIbo231473EW7BUy71gCCQGt45SU42mC0AQH7JQUG7vSvLGGAE6GHPlDszTxKfRohmXx0IGiwPp785A7Doone7TuUpablqC9rvwRY0PL70/cauKez9sYtylBszVLXCmaTAqI2QnuO3nJYcP7HjbJLiwb5oSjz67+5IBsU2e6uY+lktJA+05XgFAXPxoc1bfiIr2t+k+Ob33PMwVJAetbPhR6qIQqCD6O3ByS79SfECPWsa/mtMbbmTAf6lfrGg/vy8a8dEjz2qi+D/n/TzTqoNtLS8HG3Ip3e9+1aoVHOu3XBWOByw3CoRQwRwrPAE78myB8Oj/ocGBxhkt Generated-by-Nova"
}
Request
GET/vps/compute/v1/ssh-keys/{ssh_key_name}
Create SSH key
Creates a SSH key.
Example request
curl "https://api.tavu.io/vps/compute/v1/ssh-keys" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"ssh_key": {
"name": "API-ssh-key-003",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD1rrUa4dv6R8MUsD7jGTYYMrRrmGrjCI2+qE6Hp63Wgz4wjJ1RErE8Ja2BhtAPnS5ITjPdezYMGp8jzSC6MBJWzbSimktIcWARAV5OrarEp/XW9NzCDgpl60t8/S4snZ+Si4te42t0maS000kyJaCIpTLJpfftpu8DwuljotaLIT00G9S3uabuj2jQY8ymf9HjL8SysLOg+6qdeahx5RlxT4+A5mENljxFC1+QXAGoqNB8G91LEVd/JVD0lt0g53epUb2uzvtQ6q6lGyY7wmgSHQHiBXO2o+03FOojeaKLD3o2vNMdgwVUamW8gLnoreaZMS+AG+r/d/w9555oxPdb Generated-by-Nova"
}
}'
Example response
{
"name": "API-ssh-key-003",
"fingerprint": "52:8e:92:82:d2:81:88:20:b4:f8:63:56:47:ae:20:35",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD1rrUa4dv6R8MUsD7jGTYYMrRrmGrjCI2+qE6Hp63Wgz4wjJ1RErE8Ja2BhtAPnS5ITjPdezYMGp8jzSC6MBJWzbSimktIcWARAV5OrarEp/XW9NzCDgpl60t8/S4snZ+Si4te42t0maS000kyJaCIpTLJpfftpu8DwuljotaLIT00G9S3uabuj2jQY8ymf9HjL8SysLOg+6qdeahx5RlxT4+A5mENljxFC1+QXAGoqNB8G91LEVd/JVD0lt0g53epUb2uzvtQ6q6lGyY7wmgSHQHiBXO2o+03FOojeaKLD3o2vNMdgwVUamW8gLnoreaZMS+AG+r/d/w9555oxPdb Generated-by-Nova"
}
Request
POST/vps/compute/v1/ssh-keys
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
ssh_key | true | object | A ssh_key object. |
name | true | string | The name you want for the SSH key. This must be unique, as the name is used as an ID also. |
public_key | false | string | The public key to import. If not given, a keypair will be generated, and private key will be returned within the response. |
Delete SSH key
Deletes the SSH key and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/compute/v1/ssh-keys/API-ssh-key-001" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/compute/v1/ssh-keys/{ssh_key_name}
Image
Operating systems
List all operating systems
Returns a list of all available operating systems for instances.
Example request
curl "https://api.tavu.io/vps/image/v1/operating-systems" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "00ed37ab-7a47-45b3-9419-543a40b3c3f2",
"name": "Ubuntu",
"version": "14.04"
},
{
"id": "00ed37ab-7a47-45b3-9419-543a40b3c3f2",
"name": "Ubuntu",
"version": "12.04"
},
{
"id": "7d5c5b7d-414c-4e0a-ad41-67e75476a670",
"name": "centos",
"version": "7"
}
]
Request
GET/vps/image/v1/operating-systems
Instance snapshots
List all instance snapshots
Returns a list of all your instance snapshots.
Example request
curl "https://api.tavu.io/vps/image/v1/instance-snapshots" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "62f39f1e-0ac0-4df3-9397-fb419560fbdb",
"name": "API-instance-snapshot-001",
"size": 936,
"status": "active",
"created_at": "2017-11-10T14:19:06.000+00:00",
"instance_id": "1c06dd09-966b-4ea7-abf1-243b2a447c60"
},
{
"id": "ae603e51-0366-44a0-b27a-cb3b06a4d092",
"name": "API-instance-snapshot-002",
"size": null,
"status": "queued",
"created_at": "2017-11-13T13:30:30.000+00:00",
"instance_id": "1c06dd09-966b-4ea7-abf1-243b2a447c60"
}
]
Request
GET/vps/image/v1/instance-snapshots
Show instance snapshot details
Returns a detailed description of the instance snapshot.
Example request
curl "https://api.tavu.io/vps/image/v1/instance-snapshots/62f39f1e-0ac0-4df3-9397-fb419560fbdb" \
-H 'Authorization: my-api-key'
Example response
{
"id": "62f39f1e-0ac0-4df3-9397-fb419560fbdb",
"name": "API-instance-snapshot-001",
"size": 936,
"status": "active",
"created_at": "2017-11-10T14:19:06.000+00:00",
"instance_id": "1c06dd09-966b-4ea7-abf1-243b2a447c60"
}
Request
GET/vps/image/v1/instance-snapshots/{instance_snapshot_id}
Create instance snapshot
Creates an instance snapshot.
Example request
curl "https://api.tavu.io/vps/image/v1/instance-snapshots" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"snapshot": {
"name": "API-instance-snapshot-001",
"instance_id": "1c06dd09-966b-4ea7-abf1-243b2a447c60"
}
}'
Example response
{
"id": "f21cffd5-dc63-4e14-a325-9656c43ac4a0",
"name": "API-instance-snapshot-001",
"size": null,
"status": "queued",
"created_at": "2017-11-13T12:34:31.000+00:00",
"instance_id": "1c06dd09-966b-4ea7-abf1-243b2a447c60"
}
Request
POST/vps/image/v1/instance-snapshots
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
snapshot | true | object | A snapshot object. |
instance_id | true | string | The ID of the instance you want to take a snapshot of. |
name | true | string | The name you want for the instance snapshot. |
Delete instance snapshot
Deletes the instance snapshot and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/image/v1/instance-snapshots/07ffe712-eaf4-46e4-bbe4-3c5b340c66a8" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/image/v1/instance-snapshots/{instance_snapshot_id}
Storage
Volumes
List all volumes
Returns a list of all your volumes.
Example request
curl "https://api.tavu.io/vps/storage/v1/volumes" \
-H 'Authorization: my-api-key'
Example response
[
{
"created_at": "2017-10-27T12:44:04.000+03:00",
"id": "1b16e59d-f30d-4e8f-96ea-600530c8e1df",
"size": 1,
"status": "in-use",
"snapshot_id": null,
"description": "This is an example volume.",
"name": "API-volume-001",
"snapshots": [
{
"created_at": "2017-10-30T11:30:38.000+02:00",
"id": "fde6609f-4669-4b22-ab40-48836eed5b3f",
"volume_id": "1b16e59d-f30d-4e8f-96ea-600530c8e1df",
"volume_size": 1,
"description": null,
"name": "API-volume-snapshot-002"
}
],
"attachment": {
"mounted_at": "/dev/vdb",
"instance_id": "1c06dd09-966b-4ea7-abf1-243b2a447c60",
"attach_time": "2017-10-30T09:38:24.000+02:00",
"status": "attached"
}
},
{
"created_at": "2017-10-30T11:32:07.000+02:00",
"id": "f5c32033-6f56-47a1-a1c0-94b44ab9ca29",
"size": 1,
"status": "available",
"snapshot_id": "fde6609f-4669-4b22-ab40-48836eed5b3f",
"description": "A brand new description.",
"name": "Volume-001",
"snapshots": [
{
"created_at": "2017-11-07T11:33:37.000+02:00",
"id": "c674750f-6be4-44de-8c07-719987b8ee0c",
"volume_id": "f5c32033-6f56-47a1-a1c0-94b44ab9ca29",
"volume_size": 1,
"description": null,
"name": "API-volume-snapshot-001"
}
]
}
]
Request
GET/vps/storage/v1/volumes
Show volume details
Returns a detailed description of the volume.
Example request
curl "https://api.tavu.io/vps/storage/v1/volumes/1b16e59d-f30d-4e8f-96ea-600530c8e1df" \
-H 'Authorization: my-api-key'
Example response
{
"created_at": "2017-10-27T12:44:04.000+03:00",
"id": "1b16e59d-f30d-4e8f-96ea-600530c8e1df",
"size": 1,
"status": "in-use",
"snapshot_id": null,
"description": "This is an example volume.",
"name": "API-volume-001",
"snapshots": [
{
"created_at": "2017-10-30T11:30:38.000+02:00",
"id": "fde6609f-4669-4b22-ab40-48836eed5b3f",
"volume_id": "1b16e59d-f30d-4e8f-96ea-600530c8e1df",
"volume_size": 1,
"description": null,
"name": "API-volume-snapshot-002"
}
],
"attachment": {
"mounted_at": "/dev/vdb",
"instance_id": "1c06dd09-966b-4ea7-abf1-243b2a447c60",
"attach_time": "2017-10-30T09:38:24.000+02:00",
"status": "attached"
}
}
Request
GET/vps/storage/v1/volumes/{volume_id}
Update volume
Updates an existing volume and returns the updated volume.
Example request
curl "https://api.tavu.io/vps/storage/v1/volumes/f5c32033-6f56-47a1-a1c0-94b44ab9ca29" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"volume": {
"name": "Volume-001",
"description": "A brand new description."
}
}'
Example response
{
"created_at": "2017-10-30T11:32:07.000000",
"id": "f5c32033-6f56-47a1-a1c0-94b44ab9ca29",
"size": 1,
"status": "available",
"snapshot_id": "fde6609f-4669-4b22-ab40-48836eed5b3f",
"name": "Volume-001",
"description": "A brand new description."
}
Request
PATCH/vps/storage/v1/volumes/{volume_id}
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
volume | true | object | A volume object. |
name | false | string | The new name for the volume. |
description | false | string | The new description for the volume. |
Delete volume
Deletes the volume and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/storage/v1/volumes/1b16e59d-f30d-4e8f-96ea-600530c8e1df" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/storage/v1/volumes/{volume_id}
Attach volume to instance
Attaches the volume to an instance. Returns the IDs of the volume and the instance, as well as the mount point of the volume on the instance.
Example request
curl "https://api.tavu.io/vps/storage/v1/volumes/f5c32033-6f56-47a1-a1c0-94b44ab9ca29/attach" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"instance_id": "19b1fa7a-7f5e-4806-8b6a-04472e46c3ba"
}'
Example response
{
"volume_id": "f5c32033-6f56-47a1-a1c0-94b44ab9ca29",
"instance_id": "19b1fa7a-7f5e-4806-8b6a-04472e46c3ba",
"mount_point": "/dev/vdb"
}
Request
PATCH/vps/storage/v1/volumes/{volume_id}/attach
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
instance_id | true | string | The ID of the instance you want to attach the volume to. |
Detach volume from instance
Detaches the volume from an instance. Returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/storage/v1/volumes/f5c32033-6f56-47a1-a1c0-94b44ab9ca29/detach" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"instance_id": "19b1fa7a-7f5e-4806-8b6a-04472e46c3ba"
}'
Request
PATCH/vps/storage/v1/volumes/{volume_id}/detach
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
instance_id | true | string | The ID of the instance you want to detach the volume from. |
Volume snapshots
List all volume snapshots
Returns a list of all your volume snapshots.
Example request
curl "https://api.tavu.io/vps/storage/v1/volume-snapshots" \
-H 'Authorization: my-api-key'
Example response
[
{
"created_at": "2017-11-07T11:33:37.000+02:00",
"id": "c674750f-6be4-44de-8c07-719987b8ee0c",
"volume_id": "f5c32033-6f56-47a1-a1c0-94b44ab9ca29",
"volume_size": 1,
"description": null,
"name": "API-volume-snapshot-001"
},
{
"created_at": "2017-10-30T11:30:38.000+02:00",
"id": "fde6609f-4669-4b22-ab40-48836eed5b3f",
"volume_id": "1b16e59d-f30d-4e8f-96ea-600530c8e1df",
"volume_size": 1,
"description": null,
"name": "API-volume-snapshot-002"
}
]
Request
GET/vps/storage/v1/volume-snapshots
Show volume snapshot details
Returns a detailed description of the volume snapshot.
Example request
curl "https://api.tavu.io/vps/storage/v1/volume-snapshots/c674750f-6be4-44de-8c07-719987b8ee0c" \
-H 'Authorization: my-api-key'
Example response
{
"created_at": "2017-11-07T11:33:37.000+02:00",
"id": "c674750f-6be4-44de-8c07-719987b8ee0c",
"volume_id": "f5c32033-6f56-47a1-a1c0-94b44ab9ca29",
"volume_size": 1,
"description": null,
"name": "API-volume-snapshot-001"
}
Request
GET/vps/storage/v1/volume-snapshots/{volume_snapshot_id}
Update volume snapshot
Updates an existing volume snapshot and returns the updated volume snapshot.
Example request
curl "https://api.tavu.io/vps/storage/v1/volume-snapshots/c1607b27-2f5c-43c6-b035-09d910967201" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"snapshot": {
"name": "API-snapshot-002",
"description": "A brand new description."
}
}'
Example response
{
"name": "API-snapshot-002",
"description": "A brand new description.",
"volume_id": "f5c32033-6f56-47a1-a1c0-94b44ab9ca29",
"created_at": "2017-11-10T09:56:44.000000",
"id": "c1607b27-2f5c-43c6-b035-09d910967201",
"volume_size": 1
}
Request
PATCH/vps/storage/v1/volume-snapshots/{volume_snapshot_id}
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
snapshot | true | object | A snapshot object. |
name | false | string | The new name for the volume snapshot. |
description | false | string | The new description for the volume snapshot. |
Delete volume snapshot
Deletes the volume snapshot and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/storage/v1/volume-snapshots/8c9397a3-9f4f-41f2-a0e7-fadfb6c1b106" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/storage/v1/volume-snapshots/{volume_snapshot_id}
Networking
Ports
List all ports
Returns a list of all your ports.
Example request
curl "https://api.tavu.io/vps/networking/v1/ports" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "0ae04bdd-e282-4601-b290-f0c29f293bf5",
"description": "",
"name": "",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317",
"mac_address": "fa:16:3e:47:64:bd",
"admin_state_up": 1,
"status": "ACTIVE",
"device_id": "dhcp4be0643f-1d98-573b-97cd-ca98a65347dd-9ff312e4-3afb-45c3-ae32-18f96f15b317",
"device_owner": "network:dhcp",
"ip_allocations": [
{
"ip_address": "192.168.1.2",
"subnet_id": "cfff8364-bad7-4844-a2f0-1154600463d8",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317"
}
]
},
{
"id": "244eac20-d496-460c-a255-af8f3a107ce3",
"description": "",
"name": "",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317",
"mac_address": "fa:16:3e:f0:09:a7",
"admin_state_up": 1,
"status": "ACTIVE",
"device_id": "6ca83822-e89b-4607-b362-6580577005ab",
"device_owner": "compute:None",
"ip_allocations": [
{
"ip_address": "192.168.1.12",
"subnet_id": "cfff8364-bad7-4844-a2f0-1154600463d8",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317"
}
]
}
]
Request
GET/vps/networking/v1/ports
Show port details
Returns a detailed description of the port.
Example request
curl "https://api.tavu.io/vps/networking/v1/ports/0ae04bdd-e282-4601-b290-f0c29f293bf5" \
-H 'Authorization: my-api-key'
Example response
{
"id": "0ae04bdd-e282-4601-b290-f0c29f293bf5",
"description": "",
"name": "",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317",
"mac_address": "fa:16:3e:47:64:bd",
"admin_state_up": 1,
"status": "ACTIVE",
"device_id": "dhcp4be0643f-1d98-573b-97cd-ca98a65347dd-9ff312e4-3afb-45c3-ae32-18f96f15b317",
"device_owner": "network:dhcp",
"ip_allocations": [
{
"ip_address": "192.168.1.2",
"subnet_id": "cfff8364-bad7-4844-a2f0-1154600463d8",
"network_id": "9ff312e4-3afb-45c3-ae32-18f96f15b317"
}
]
}
Request
GET/vps/networking/v1/ports/{port_id}
Update port
Updates an existing port and returns the updated port.
Example request
curl "https://api.tavu.io/vps/networking/v1/ports/022eb2ac-4dd8-4074-be76-227ab2c205ec" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"port": {
"name": "API-port-001",
"description": "This is an example port.",
"admin_state_up": true
}
}'
Example response
{
"id": "022eb2ac-4dd8-4074-be76-227ab2c205ec",
"description": "This is an example port.",
"name": "API-port-001",
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"mac_address": "fa:16:3e:79:9f:44",
"admin_state_up": true,
"status": "DOWN",
"device_id": "cb9a2e15-2d5a-446e-ab1e-ec071ae126d1",
"device_owner": "network:port_interface",
"ip_allocations": [
{
"ip_address": "192.168.2.1",
"subnet_id": "9874325d-754c-4e66-989e-e5d83e5d8248"
}
]
}
Request
PATCH/vps/networking/v1/ports/{port_id}
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
port | true | object | A port object. |
name | false | string | The new name for the port. |
description | false | string | The new description for the port. |
admin_state_up | false | boolean | The new administrative state of the port, either up (true) or down (false). |
Networks
List all networks
Returns a list of all your networks.
Example request
curl "https://api.tavu.io/vps/networking/v1/networks" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "9ff312e4-3afb-45c3-ae32-18f96f15b317",
"description": "",
"name": "API-network-001",
"status": "ACTIVE",
"admin_state_up": true
}
]
Request
GET/vps/networking/v1/networks
Show network details
Returns a detailed description of the network.
Example request
curl "https://api.tavu.io/vps/networking/v1/networks/9ff312e4-3afb-45c3-ae32-18f96f15b317" \
-H 'Authorization: my-api-key'
Example response
{
"id": "9ff312e4-3afb-45c3-ae32-18f96f15b317",
"description": "",
"name": "API-network-001",
"status": "ACTIVE",
"admin_state_up": true
}
Request
GET/vps/networking/v1/networks/{network_id}
Create network
Creates a network.
Example request
curl "https://api.tavu.io/vps/networking/v1/networks" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"network": {
"name": "API-network-001",
"description": "This is an example network.",
"admin_state_up": true
}
}'
Example response
{
"id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"description": "This is an example network.",
"name": "API-network-001",
"status": "ACTIVE",
"admin_state_up": true
}
Request
POST/vps/networking/v1/networks
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
network | true | object | A network object. |
name | true | string | The name you want for the network. |
description | false | string | The description you want for the network. |
admin_state_up | false | boolean | The administrative state of the network, either up (true) or down (false). |
Update network
Updates an existing network and returns the updated network.
Example request
curl "https://api.tavu.io/vps/networking/v1/networks/165d4a26-2114-4a14-9e75-b865b48e2ce0" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"network": {
"name": "Network-1",
"description": "A brand new description.",
"admin_state_up": false
}
}'
Example response
{
"id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"description": "A brand new description.",
"name": "Network-1",
"status": "ACTIVE",
"admin_state_up": false
}
Request
PATCH/vps/networking/v1/networks/{network_id}
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
network | true | object | A network object. |
name | false | string | The new name for the network. |
description | false | string | The new description for the network. |
admin_state_up | false | boolean | The new administrative state of the network, either up (true) or down (false). |
Delete network
Deletes the network and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/networking/v1/networks/d290eda3-7a62-41c9-8386-730b5d84013a" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/networking/v1/networks/{network_id}
Subnets
List all subnets
Returns a list of all your subnets.
Example request
curl "https://api.tavu.io/vps/networking/v1/subnets" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "9874325d-754c-4e66-989e-e5d83e5d8248",
"description": "This is an example subnet.",
"name": "API-subnet-001",
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"ip_version": 4,
"cidr": "192.168.2.0/24",
"gateway_ip": "192.168.2.1",
"enable_dhcp": false,
"ipv6_ra_mode": null,
"ipv6_address_mode": null,
"allocation_pools": [
{
"start": "192.168.2.3",
"end": "192.168.2.7"
},
{
"start": "192.168.2.10",
"end": "192.168.2.20"
}
],
"dns_nameservers": [
"8.8.8.8"
],
"host_routes": [
{
"destination": "192.168.2.6/32",
"nexthop": "192.168.2.7"
}
]
},
{
"id": "df1e1f10-cf74-4d2f-bda9-12ecc18cf8bf",
"description": "",
"name": "API-subnet-003",
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"ip_version": 6,
"cidr": "abc0::/64",
"gateway_ip": null,
"enable_dhcp": true,
"ipv6_ra_mode": "dhcpv6-stateful",
"ipv6_address_mode": "dhcpv6-stateful",
"allocation_pools": [
{
"start": "abc0::2",
"end": "abc0::f"
}
],
"dns_nameservers": [],
"host_routes": [
{
"destination": "abc0::0010/124",
"nexthop": "abc0::0011"
}
]
}
]
Request
GET/vps/networking/v1/subnets
Show subnet details
Returns a detailed description of the subnet.
Example request
curl "https://api.tavu.io/vps/networking/v1/subnets/9874325d-754c-4e66-989e-e5d83e5d8248" \
-H 'Authorization: my-api-key'
Example response
{
"id": "9874325d-754c-4e66-989e-e5d83e5d8248",
"description": "This is an example subnet.",
"name": "API-subnet-001",
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"ip_version": 4,
"cidr": "192.168.2.0/24",
"gateway_ip": "192.168.2.1",
"enable_dhcp": false,
"ipv6_ra_mode": null,
"ipv6_address_mode": null,
"allocation_pools": [
{
"start": "192.168.2.3",
"end": "192.168.2.7"
},
{
"start": "192.168.2.10",
"end": "192.168.2.20"
}
],
"dns_nameservers": [
"8.8.8.8"
],
"host_routes": [
{
"destination": "192.168.2.6/32",
"nexthop": "192.168.2.7"
}
]
}
Request
GET/vps/networking/v1/subnets/{subnet_id}
Create subnet
Creates a subnet.
Example request
curl "https://api.tavu.io/vps/networking/v1/subnets" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"subnet": {
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"name": "API-subnet-001",
"description": "This is an example subnet",
"cidr": "192.168.2.0/24",
"ip_version": 4,
"gateway_ip": "192.168.2.1",
"enable_dhcp": true,
"dns_nameservers": [
"8.8.8.8",
"4.4.2.2"
],
"allocation_pools": [
{
"start":"192.168.2.2",
"end":"192.168.2.7"
},
{
"start":"192.168.2.10",
"end":"192.168.2.200"
}
],
"host_routes": [
{
"destination":"192.168.2.6/32",
"nexthop":"192.168.2.7"
}
]
}
}'
Example response
{
"id": "9874325d-754c-4e66-989e-e5d83e5d8248",
"name": "API-subnet-001",
"description": "This is an example subnet",
"cidr": "192.168.2.0/24",
"gateway_ip": "192.168.2.1",
"ip_version": 4,
"enable_dhcp": true,
"dns_nameservers": [
"8.8.8.8",
"4.4.2.2"
],
"allocation_pools": [
{
"start": "192.168.2.10",
"end": "192.168.2.200"
},
{
"start": "192.168.2.2",
"end": "192.168.2.7"
}
],
"host_routes": [
{
"nexthop": "192.168.2.7",
"destination": "192.168.2.6/32"
}
],
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"ipv6_ra_mode": null,
"ipv6_address_mode": null
}
Request
POST/vps/networking/v1/subnets
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
subnet | true | object | A subnet object. |
name | true | string | The name you want for the subnet. |
network_id | true | string | The ID of the network you want this subnet to be a part of. |
cidr | true | string | The CIDR you want for the subnet. |
ip_version | true | integer | The IP version of the subnet. NOTE: this has to match with the CIDR IP version. |
description | false | string | The description you want for the subnet. |
gateway_ip | false | string | The gateway IP you want for the subnet. |
enable_dhcp | false | boolean | Do you want the subnet to have DHCP enabled or not. |
ipv6_ra_mode | false | string | IPv6 RA mode. Available options are: dhcpv6-stateless , dhcpv6-stateful and slaac . |
ipv6_address_mode | false | string | IPv6 address mode. Available options are: dhcpv6-stateless , dhcpv6-stateful and slaac . |
dns_nameservers | false | array | List of DNS nameserver IPs as strings. |
allocation_pools | false | array | List of allocation pool objects, that contain start and end IP addresses. |
host_routes | false | array | List of host route objects, that contain destination CIDR and nexthop IP address. |
Update subnet
Updates an existing subnet and returns the updated subnet.
Example request
curl "https://api.tavu.io/vps/networking/v1/subnets/9874325d-754c-4e66-989e-e5d83e5d8248" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"subnet": {
"name": "Subnet-001",
"description": "A brand new description.",
"gateway_ip": null,
"enable_dhcp": false,
"dns_nameservers": [
"8.8.8.8"
],
"allocation_pools": [
{
"start":"192.168.2.3",
"end":"192.168.2.8"
}
],
"host_routes": []
}
}'
Example response
{
"id": "9874325d-754c-4e66-989e-e5d83e5d8248",
"name": "Subnet-001",
"description": "A brand new description.",
"cidr": "192.168.2.0/24",
"gateway_ip": "192.168.2.1",
"ip_version": 4,
"enable_dhcp": false,
"dns_nameservers": [
"8.8.8.8"
],
"allocation_pools": [
{
"start": "192.168.2.3",
"end": "192.168.2.8"
}
],
"host_routes": [],
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"ipv6_ra_mode": null,
"ipv6_address_mode": null
}
Request
PATCH/vps/networking/v1/subnets/{subnet_id}
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
subnet | true | object | A subnet object. |
name | false | string | The new name for the subnet. |
description | false | string | The new description for the subnet. |
gateway_ip | false | string | The new gateway IP you want for the subnet. |
enable_dhcp | false | boolean | Do you want the subnet to have DHCP enabled or not. |
dns_nameservers | false | array | The new list of DNS nameserver IPs as strings. |
allocation_pools | false | array | List of allocation pool objects, that contain start and end IP addresses. |
host_routes | false | array | List of host route objects, that contain destination CIDR and nexthop IP address. |
Delete subnet
Deletes the subnet and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/networking/v1/subnets/09ebbf29-6aa9-421c-843b-ddd252b4cd2d" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/networking/v1/subnets/{subnet_id}
Firewalls
List all firewalls
Returns a list of all your firewalls.
Example request
curl "https://api.tavu.io/vps/networking/v1/firewalls" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "76850c34-7489-4182-b655-f2caba3bc955",
"name": "API-firewall-002",
"description": "This is an example firewall.",
"audited": false,
"admin_state_up": false,
"status": "INACTIVE",
"router_ids": []
},
{
"id": "9648de6d-1a05-4794-a53c-fb29eb7c458a",
"name": "API-firewall-001",
"description": "",
"audited": true,
"admin_state_up": true,
"status": "INACTIVE",
"router_ids": []
}
]
Request
GET/vps/networking/v1/firewalls
Show firewall details
Returns a detailed description of the firewall.
Example request
curl "https://api.tavu.io/vps/networking/v1/firewalls/76850c34-7489-4182-b655-f2caba3bc955" \
-H 'Authorization: my-api-key'
Example response
{
"id": "76850c34-7489-4182-b655-f2caba3bc955",
"name": "API-firewall-002",
"description": "This is an example firewall.",
"audited": false,
"admin_state_up": false,
"status": "INACTIVE",
"router_ids": []
}
Request
GET/vps/networking/v1/firewalls/{firewall_id}
Update firewall
Updates an existing firewall and returns the updated firewall.
Example request
curl "https://api.tavu.io/vps/networking/v1/firewalls/76850c34-7489-4182-b655-f2caba3bc955" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"firewall": {
"name": "Firewall-001",
"description": "A brand new description.",
"admin_state_up": false,
"router_ids": []
}
}'
Example response
{
"name": "Firewall-001",
"description": "A brand new description.",
"admin_state_up": false,
"router_ids": [],
"id": "76850c34-7489-4182-b655-f2caba3bc955",
"audited": false,
"status": "PENDING_UPDATE"
}
Request
PATCH/vps/networking/v1/firewalls/{firewall_id}
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
firewall | true | object | A firewall object. |
name | false | string | The new name for the firewall. |
description | false | string | The new description for the firewall. |
admin_state_up | false | boolean | The new administrative state of the firewall, either up (true) or down (false). |
router_ids | false | array | An array of IDs of the routers you wish the firewall to be attached to. |
Delete firewall
Deletes the firewall and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/networking/v1/firewalls/76850c34-7489-4182-b655-f2caba3bc955" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/networking/v1/firewalls/{firewall_id}
Audit firewall
Changes firewall audit status to audited. Returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/networking/v1/firewalls/76850c34-7489-4182-b655-f2caba3bc955/audit" \
-H 'Authorization: my-api-key'
Request
GET/vps/networking/v1/firewalls/{firewall_id}/audit
Firewall rules
List all rules of a firewall
Returns a list of all the rules of the firewall.
Example request
curl "https://api.tavu.io/vps/networking/v1/firewalls/76850c34-7489-4182-b655-f2caba3bc955/rules" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "6276aab0-2ea7-4bdb-ba6f-f897986d77f3",
"name": "",
"description": "",
"protocol": null,
"ip_version": 4,
"source_ip_address": null,
"destination_ip_address": null,
"source_port_range_min": null,
"source_port_range_max": null,
"destination_port_range_min": null,
"destination_port_range_max": null,
"action": "allow",
"enabled": true,
"position": 2
},
{
"id": "807655f4-5a41-4c95-addd-b87e60967a73",
"name": "Rule 1",
"description": "This is an example rule.",
"protocol": "tcp",
"ip_version": 4,
"source_ip_address": "192.168.2.1",
"destination_ip_address": "192.168.3.1",
"source_port_range_min": 1,
"source_port_range_max": 2,
"destination_port_range_min": 1,
"destination_port_range_max": 1,
"action": "deny",
"enabled": true,
"position": 1
}
]
Request
GET/vps/networking/v1/firewalls/{firewall_id}/rules
Show firewall rule details
Returns a detailed description of the firewall rule.
Example request
curl "https://api.tavu.io/vps/networking/v1/firewalls/76850c34-7489-4182-b655-f2caba3bc955/rules/807655f4-5a41-4c95-addd-b87e60967a73" \
-H 'Authorization: my-api-key'
Example response
{
"id": "807655f4-5a41-4c95-addd-b87e60967a73",
"name": "Rule 1",
"description": "This is an example rule.",
"protocol": "tcp",
"ip_version": 4,
"source_ip_address": "192.168.2.1",
"destination_ip_address": "192.168.3.1",
"source_port_range_min": 1,
"source_port_range_max": 2,
"destination_port_range_min": 1,
"destination_port_range_max": 1,
"action": "deny",
"enabled": true,
"position": 1
}
Request
GET/vps/networking/v1/firewalls/{firewall_id}/rules/{rule_id}
Create firewall rule
Creates a rule for the firewall.
Example request
curl "https://api.tavu.io/vps/networking/v1/firewalls/76850c34-7489-4182-b655-f2caba3bc955/rules" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"rule": {
"name": "API-rule-001",
"description": "This is an example rule.",
"protocol": "tcp",
"ip_version": 4,
"source_ip_address": "192.168.1.1",
"destination_ip_address": "192.168.2.1",
"source_port_range_min": 1,
"source_port_range_max": 20,
"destination_port_range_min": 1,
"destination_port_range_max": 20,
"action": "allow",
"enabled": true
}
}'
Example response
{
"name": "API-rule-001",
"description": "This is an example rule.",
"protocol": "tcp",
"ip_version": 4,
"source_ip_address": "192.168.1.1",
"destination_ip_address": "192.168.2.1",
"source_port_range_min": 1,
"source_port_range_max": 20,
"destination_port_range_min": 1,
"destination_port_range_max": 20,
"action": "allow",
"enabled": true,
"id": "9eb732bd-a010-4603-be24-6bce9370cb22",
"position": 1
}
Request
POST/vps/networking/v1/firewalls/{firewall_id}/rules
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
rule | true | object | A rule object. |
name | false | string | The name you want for the firewall rule. |
description | false | string | The description you want for the firewall rule. |
protocol | false | string | The protocol of the traffic. Available options are: icmp , tcp and udp . |
ip_version | false | integer | The IP version of the traffic. |
source_ip_address | false | string | The IP address or CIDR of the source. |
destination_ip_address | false | string | The IP address or CIDR of the destination. |
source_port_range_min | false | integer | The minimum port number of the source port range. |
source_port_range_max | false | integer | The maximum port number of the source port range. Not needed if rule affects only one port. |
destination_port_range_min | false | integer | The minimum port number of the destination port range. |
destination_port_range_max | false | integer | The maximum port number of the destination port range. Not needed if rule affects only one port. |
action | false | string | What should be done to the traffic. Available options are: allow , deny and reject . |
enabled | false | boolean | Whether you want the rule to be in use or not. |
Update firewall rule
Updates an existing firewall rule and returns the updated rule.
Example request
curl "https://api.tavu.io/vps/networking/v1/firewalls/76850c34-7489-4182-b655-f2caba3bc955/rules/9eb732bd-a010-4603-be24-6bce9370cb22" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"rule": {
"name": "Rule-001",
"description": "A brand new description.",
"protocol": "udp",
"ip_version": 4,
"destination_ip_address": "192.168.4.1",
"source_port_range_min": 1,
"destination_port_range_min": 20,
"destination_port_range_max": 20,
"action": "deny",
"enabled": true
}
}'
Example response
{
"name": "Rule-001",
"description": "A brand new description.",
"protocol": "udp",
"ip_version": 4,
"source_ip_address": "192.168.1.1",
"destination_ip_address": "192.168.4.1",
"source_port_range_min": 1,
"source_port_range_max": 1,
"destination_port_range_min": 20,
"destination_port_range_max": 20,
"action": "deny",
"enabled": true,
"id": "9eb732bd-a010-4603-be24-6bce9370cb22",
"position": 1
}
Request
PATCH/vps/networking/v1/firewalls/{firewall_id}/rules/{rule_id}
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
rule | true | object | A rule object. |
name | false | string | The new name for the firewall rule. |
description | false | string | The new description for the firewall rule. |
protocol | false | string | The protocol of the traffic. Available options are: icmp , tcp and udp . |
ip_version | false | integer | The IP version of the traffic. |
source_ip_address | false | string | The IP address or CIDR of the source. |
destination_ip_address | false | string | The IP address or CIDR of the destination. |
source_port_range_min | false | integer | The minimum port number of the source port range. |
source_port_range_max | false | integer | The maximum port number of the source port range. Not needed if rule affects only one port. |
destination_port_range_min | false | integer | The minimum port number of the destination port range. |
destination_port_range_max | false | integer | The maximum port number of the destination port range. Not needed if rule affects only one port. |
action | false | string | What should be done to the traffic. Available options are: allow , deny and reject . |
enabled | false | boolean | Whether you want the rule to be in use or not. |
Delete firewall rule
Deletes the firewall rule and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/networking/v1/firewalls/76850c34-7489-4182-b655-f2caba3bc955/rules/32cf0411-ae24-4742-98b8-9dac8d273342" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/networking/v1/firewalls/{firewall_id}/rules/{rule_id}
Routers
List all routers
Returns a list of all your routers.
Example request
curl "https://api.tavu.io/vps/networking/v1/routers" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "3b0b8942-200c-4db9-a2eb-1a020d1a817c",
"description": "",
"name": "Router-1",
"status": "ACTIVE",
"admin_state_up": true,
"routes": [
{
"destination": "192.168.1.6/32",
"nexthop": "192.168.2.7"
}
],
"external_gateway_snat_enabled": true,
"external_gateway_info": {
"id": "a59fc165-4ed9-4416-9f1b-d59dea6d7486",
"description": "",
"name": "",
"network_id": "bdcffe24-89a2-4c72-80df-2709997192a7",
"mac_address": "fa:16:3e:9b:d0:43",
"admin_state_up": true,
"status": "ACTIVE",
"device_id": "3b0b8942-200c-4db9-a2eb-1a020d1a817c",
"device_owner": "network:router_gateway",
"ip_allocations": [
{
"ip_address": "192.168.255.41",
"subnet_id": "efa9c254-48bd-4d96-925f-a44a21828513"
}
]
}
},
{
"id": "6706ddad-3f13-44bb-906a-3c874ccb9ef8",
"description": "",
"name": "API-router-001",
"status": "ACTIVE",
"admin_state_up": true,
"routes": [],
"external_gateway_info": null
}
]
Request
GET/vps/networking/v1/routers
Show router details
Returns a detailed description of the router.
Example request
curl "https://api.tavu.io/vps/networking/v1/routers/3b0b8942-200c-4db9-a2eb-1a020d1a817c" \
-H 'Authorization: my-api-key'
Example response
{
"id": "3b0b8942-200c-4db9-a2eb-1a020d1a817c",
"description": "",
"name": "Router-1",
"status": "ACTIVE",
"admin_state_up": true,
"routes": [
{
"destination": "192.168.1.6/32",
"nexthop": "192.168.2.7"
}
],
"external_gateway_snat_enabled": true,
"external_gateway_info": {
"id": "a59fc165-4ed9-4416-9f1b-d59dea6d7486",
"description": "",
"name": "",
"network_id": "bdcffe24-89a2-4c72-80df-2709997192a7",
"mac_address": "fa:16:3e:9b:d0:43",
"admin_state_up": true,
"status": "ACTIVE",
"device_id": "3b0b8942-200c-4db9-a2eb-1a020d1a817c",
"device_owner": "network:router_gateway",
"ip_allocations": [
{
"ip_address": "192.168.255.41",
"subnet_id": "efa9c254-48bd-4d96-925f-a44a21828513"
}
]
}
}
Request
GET/vps/networking/v1/routers/{router_id}
Update router
Updates an existing router and returns the updated router.
Example request
curl "https://api.tavu.io/vps/networking/v1/routers/cb9a2e15-2d5a-446e-ab1e-ec071ae126d1" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"router": {
"name": "Router-1",
"description": "A brand new description.",
"admin_state_up": true,
"routes": [
{
"nexthop": "192.168.2.2",
"destination": "192.168.3.1/32"
}
]
}
}'
Example response
{
"id": "cb9a2e15-2d5a-446e-ab1e-ec071ae126d1",
"description": "A brand new description.",
"name": "Router-1",
"status": "ACTIVE",
"admin_state_up": true,
"routes": [
{
"destination": "192.168.3.1/32",
"nexthop": "192.168.2.2"
}
],
"external_gateway_port": {
"id": "879744a3-7134-4bcf-8bd4-ca1617af7f06",
"description": "",
"name": "",
"network_id": "bdcffe24-89a2-4c72-80df-2709997192a7",
"mac_address": "fa:16:3e:f4:5b:ed",
"admin_state_up": true,
"status": "DOWN",
"device_id": "cb9a2e15-2d5a-446e-ab1e-ec071ae126d1",
"device_owner": "network:router_gateway",
"ip_allocations": [
{
"ip_address": "192.168.255.40",
"subnet_id": "efa9c254-48bd-4d96-925f-a44a21828513"
}
]
}
}
Request
PATCH/vps/networking/v1/routers/{router_id}
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
router | true | object | A router object. |
name | false | string | The new name for the router. |
description | false | string | The new description for the router. |
admin_state_up | false | boolean | The new administrative state of the router, either up (true) or down (false). |
attach_to_external | false | boolean | Whether you want the router to have a gateway IP in a external network or not. |
routes | false | array | List of route objects, that contain destination CIDR and nexthop IP address. |
Delete router
Deletes the router and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/networking/v1/routers/6706ddad-3f13-44bb-906a-3c874ccb9ef8" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/networking/v1/routers/{router_id}
Router port interfaces
List all interfaces of a router
Returns a list of all the port interfaces of the router.
Example request
curl "https://api.tavu.io/vps/networking/v1/routers/cb9a2e15-2d5a-446e-ab1e-ec071ae126d1/interfaces" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "71e01e11-ff1f-4d18-b273-f2bf0a70d2f6",
"description": "",
"name": "",
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"mac_address": "fa:16:3e:d2:e3:96",
"admin_state_up": true,
"status": "ACTIVE",
"device_id": "cb9a2e15-2d5a-446e-ab1e-ec071ae126d1",
"device_owner": "network:router_interface",
"ip_allocations": [
{
"ip_address": "abc0::1",
"subnet_id": "339c4393-3d74-4e7c-b10d-e23c58d0b1fb"
}
]
},
{
"id": "b99e839a-cb44-44a0-a284-a06bfae31c8d",
"description": "",
"name": "",
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"mac_address": "fa:16:3e:0b:02:52",
"admin_state_up": true,
"status": "ACTIVE",
"device_id": "cb9a2e15-2d5a-446e-ab1e-ec071ae126d1",
"device_owner": "network:router_interface",
"ip_allocations": [
{
"ip_address": "192.168.2.1",
"subnet_id": "9874325d-754c-4e66-989e-e5d83e5d8248"
}
]
}
]
Request
GET/vps/networking/v1/routers/{router_id}/interfaces
Show router interface details
Returns a detailed description of the router port interface.
Example request
curl "https://api.tavu.io/vps/networking/v1/routers/cb9a2e15-2d5a-446e-ab1e-ec071ae126d1/interfaces/d272026e-98ea-4a9c-b758-22d268cf41b1" \
-H 'Authorization: my-api-key'
Example response
{
"id": "d272026e-98ea-4a9c-b758-22d268cf41b1",
"description": "",
"name": "",
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"mac_address": "fa:16:3e:a6:c3:60",
"admin_state_up": true,
"status": "ACTIVE",
"device_id": "cb9a2e15-2d5a-446e-ab1e-ec071ae126d1",
"device_owner": "network:router_interface",
"ip_allocations": [
{
"ip_address": "192.168.2.1",
"subnet_id": "9874325d-754c-4e66-989e-e5d83e5d8248"
}
]
}
Request
GET/vps/networking/v1/routers/{router_id}/interfaces/{interface_id}
Create router interface
Creates a port interface for the router in a subnet. Returns the IDs of the router, the newly created port, the subnet the port belongs to and the network the subnet belongs to.
Example request
curl "https://api.tavu.io/vps/networking/v1/routers/cb9a2e15-2d5a-446e-ab1e-ec071ae126d1/interfaces" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"subnet_id": "9874325d-754c-4e66-989e-e5d83e5d8248"
}'
Example response
{
"id": "cb9a2e15-2d5a-446e-ab1e-ec071ae126d1",
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"subnet_id": "9874325d-754c-4e66-989e-e5d83e5d8248",
"port_id": "9d8932e3-8b81-40bf-869e-3a8acbf7c8ad"
}
Request
POST/vps/networking/v1/routers/{router_id}/interfaces
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
subnet_id | true | string | ID of the subnet you wish to attach the router to. |
Delete router interface
Deletes a port interface from the router. Returns the IDs of the router, the deleted port, the subnet the port belonged to and the network the subnet belongs to.
Example request
curl "https://api.tavu.io/vps/networking/v1/routers/cb9a2e15-2d5a-446e-ab1e-ec071ae126d1/interfaces/d272026e-98ea-4a9c-b758-22d268cf41b1" \
-H 'Authorization: my-api-key' \
-X DELETE
Example response
{
"id": "cb9a2e15-2d5a-446e-ab1e-ec071ae126d1",
"network_id": "165d4a26-2114-4a14-9e75-b865b48e2ce0",
"subnet_id": "9874325d-754c-4e66-989e-e5d83e5d8248",
"port_id": "d272026e-98ea-4a9c-b758-22d268cf41b1"
}
Request
DELETE/vps/networking/v1/routers/{router_id}/interfaces/{interface_id}
Security groups
List all security groups
Returns a list of all your security groups.
Example request
curl "https://api.tavu.io/vps/networking/v1/security-groups" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"description": "Default security group",
"name": "default"
},
{
"id": "935bad7c-1b2a-46d3-ab5f-a03530e12d3c",
"description": "This is an example security group.",
"name": "API-security-group-001"
}
]
Request
GET/vps/networking/v1/security-groups
Show security group details
Returns a detailed description of the security group.
Example request
curl "https://api.tavu.io/vps/networking/v1/security-groups/935bad7c-1b2a-46d3-ab5f-a03530e12d3c" \
-H 'Authorization: my-api-key'
Example response
{
"id": "935bad7c-1b2a-46d3-ab5f-a03530e12d3c",
"description": "This is an example security group.",
"name": "API-security-group-001"
}
Request
GET/vps/networking/v1/security-groups/{security_group_id}
Create security group
Creates a security group.
Example request
curl "https://api.tavu.io/vps/networking/v1/security-groups" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"security_group": {
"name": "Api-security-group-001",
"description": "This is an example security group."
}
}'
Example response
{
"description": "This is an example security group.",
"id": "7ee3f318-9e52-4ac2-835b-caa1f425b57a",
"name": "Api-security-group-001"
}
Request
POST/vps/networking/v1/security-groups
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
security_group | true | object | A security_group object. |
name | true | string | The name you want for the security group. |
description | false | string | The description you want for the security group. |
Update security group
Updates an existing security group and returns the updated security group.
Example request
curl "https://api.tavu.io/vps/networking/v1/security-groups/7ee3f318-9e52-4ac2-835b-caa1f425b57a" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"security_group": {
"name": "Api-security-group-002",
"description": "A brand new description."
}
}'
Example response
{
"description": "A brand new description.",
"id": "7ee3f318-9e52-4ac2-835b-caa1f425b57a",
"name": "Api-security-group-002"
}
Request
PATCH/vps/networking/v1/security-groups/{security_group_id}
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
security_group | true | object | A security_group object. |
name | false | string | The new name for the security group. |
description | false | string | The new description for the security group. |
Delete security group
Deletes the security group and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/networking/v1/security-groups/7ee3f318-9e52-4ac2-835b-caa1f425b57a" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/networking/v1/security-groups/{security_group_id}
Security group rules
List all rules of a security group
Returns a list of all the rules of the security group.
Example request
curl "https://api.tavu.io/vps/networking/v1/security-groups/935bad7c-1b2a-46d3-ab5f-a03530e12d3c/rules" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "4bd3354d-c754-4cd5-ae69-f72edd4cc27d",
"security_group_id": "935bad7c-1b2a-46d3-ab5f-a03530e12d3c",
"remote_group_id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"direction": "ingress",
"ethertype": "IPv4",
"protocol": null,
"port_range_min": null,
"port_range_max": null,
"remote_ip_prefix": null
},
{
"id": "d51fda1a-71c7-4dd1-8c2c-546c1e008367",
"security_group_id": "935bad7c-1b2a-46d3-ab5f-a03530e12d3c",
"remote_group_id": null,
"direction": "ingress",
"ethertype": "IPv4",
"protocol": "icmp",
"port_range_min": 0,
"port_range_max": 0,
"remote_ip_prefix": "0.0.0.0/0"
}
]
Request
GET/vps/networking/v1/security-groups/{security_group_id}/rules
Show security group rule details
Returns a detailed description of the security group rule.
Example request
curl "https://api.tavu.io/vps/networking/v1/security-groups/935bad7c-1b2a-46d3-ab5f-a03530e12d3c/rules/4bd3354d-c754-4cd5-ae69-f72edd4cc27d" \
-H 'Authorization: my-api-key'
Example response
{
"id": "4bd3354d-c754-4cd5-ae69-f72edd4cc27d",
"security_group_id": "935bad7c-1b2a-46d3-ab5f-a03530e12d3c",
"remote_group_id": "7512b702-4ef5-49f4-b44e-1b5a6e25a10b",
"direction": "ingress",
"ethertype": "IPv4",
"protocol": null,
"port_range_min": null,
"port_range_max": null,
"remote_ip_prefix": null
}
Request
GET/vps/networking/v1/security-groups/{security_group_id}/rules/{rule_id}
Create security group rule
Creates a rule for the security group.
Example request
curl "https://api.tavu.io/vps/networking/v1/security-groups/935bad7c-1b2a-46d3-ab5f-a03530e12d3c/rules" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X POST -d '{
"rule": {
"remote_ip_prefix": "0.0.0.0/0",
"direction": "ingress",
"port_range_min": 1,
"port_range_max": 2,
"ethertype": "IPv4",
"protocol": "tcp"
}
}'
Example response
{
"id": "74bfe90d-8377-4685-873b-9192dcf05417",
"security_group_id": "935bad7c-1b2a-46d3-ab5f-a03530e12d3c",
"remote_group_id": null,
"direction": "ingress",
"ethertype": "IPv4",
"protocol": "tcp",
"port_range_min": 1,
"port_range_max": 2,
"remote_ip_prefix": "0.0.0.0/0"
}
Request
POST/vps/networking/v1/security-groups/{security_group_id}/rules
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
rule | true | object | A rule object. |
direction | true | string | Direction of the traffic to be allowed. Either ingress or egress . |
remote_group_id | false | string | Remote security group ID to be associated with the rule. Specify only remote_group_id or remote_ip_prefix . |
remote_ip_prefix | false | string | Remote IP prefix to be associated with the rule. Specify only remote_group_id or remote_ip_prefix . |
protocol | false | string | The protocol of the traffic. Available options are: icmp , icmpv6 , tcp and udp . or any integer between 1 and 255 . |
ethertype | false | string | Either IPv4 or IPv6 . If remote_ip_prefix is specified, versions must match. |
port_range_min | false | integer | The minimum port number of the port range. If protocol is ICMP, this represents the ICMP type. |
port_range_max | false | integer | The maximum port number of the port range. Not needed if rule affects only one port. |
Delete security group rule
Deletes the security group rule and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/networking/v1/security-groups/935bad7c-1b2a-46d3-ab5f-a03530e12d3c/rules/e4f14c52-a148-49f9-821a-003688279997" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/networking/v1/security-groups/{security_group_id}/rules/{rule_id}
Floating IPs
List all floating IPs
Returns a list of all your floating IPs.
Example request
curl "https://api.tavu.io/vps/networking/v1/floating-ips" \
-H 'Authorization: my-api-key'
Example response
[
{
"id": "96388526-df19-41a1-8adb-b36a21a28741",
"created_at": "2018-01-17T11:15:50.000+00:00",
"updated_at": "2018-01-17T11:28:29.000+00:00",
"description": "",
"revision_number": 5,
"floating_ip_address": "192.168.255.51",
"floating_network_id": "bdcffe24-89a2-4c72-80df-2709997192a7",
"fixed_ip_address": null,
"router_id": null,
"status": "DOWN",
"port_id": null
},
{
"id": "99bb1efe-782b-4af8-9c34-0bc6142980dc",
"created_at": "2018-01-17T11:14:05.000+00:00",
"updated_at": "2018-01-17T11:14:05.000+00:00",
"description": "",
"revision_number": 1,
"floating_ip_address": "192.168.255.50",
"floating_network_id": "bdcffe24-89a2-4c72-80df-2709997192a7",
"fixed_ip_address": null,
"router_id": null,
"status": "DOWN",
"port_id": null
}
]
Request
GET/vps/networking/v1/floating-ips
Show floating IP details
Returns a detailed description of the floating IP.
Example request
curl "https://api.tavu.io/vps/networking/v1/floating-ips/807655f4-5a41-4c95-addd-b87e60967a73" \
-H 'Authorization: my-api-key'
Example response
{
"id": "99bb1efe-782b-4af8-9c34-0bc6142980dc",
"created_at": "2018-01-17T11:14:05.000+00:00",
"updated_at": "2018-01-17T11:14:05.000+00:00",
"description": "",
"revision_number": 1,
"floating_ip_address": "192.168.255.50",
"floating_network_id": "bdcffe24-89a2-4c72-80df-2709997192a7",
"fixed_ip_address": null,
"router_id": null,
"status": "DOWN",
"port_id": null
}
Request
GET/vps/networking/v1/floating-ips/{floating_ip_id}
Update floating IP
Updates an existing floating IP and returns the updated floating IP.
Example request
curl "https://api.tavu.io/vps/networking/v1/floating-ips/99fg1efe-182b-4bf8-3c34-0b88042980dc" \
-H 'Authorization: my-api-key' \
-H 'Content-Type: application/json' \
-X PATCH -d '{
"floating_ip": {
"port_id": "5daee914-e5ea-41b6-830b-b0b10c0b11ec",
"description": "Attached to instance3"
}
}'
Example response
{
"id": "99fg1efe-182b-4bf8-3c34-0b88042980dc",
"created_at": "2018-01-17T11:14:05.000+00:00",
"updated_at": "2018-01-17T11:14:05.000+00:00",
"description": "This is an example Floating IP.",
"revision_number": 1,
"floating_ip_address": "192.168.255.51",
"floating_network_id": "bdcffe24-89a2-4c72-80df-2709997192a7",
"fixed_ip_address": null,
"router_id": null,
"status": "DOWN",
"port_id": "5daee914-e5ea-41b6-830b-b0b10c0b11ec"
}
Request
PATCH/vps/networking/v1/floating-ips/{floating_ip_id}
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
floating_ip | false | object | A floating_ip object. |
description | false | string | The description you want for the floating IP. |
port_id | false | string | ID of the instance interface you want to associate the floating IP with. |
Delete floating IP
Deletes the floating IP and returns an empty body if succesful.
Example request
curl "https://api.tavu.io/vps/networking/v1/floating-ips/32cf0411-ae24-4742-98b8-9dac8d273342" \
-H 'Authorization: my-api-key' \
-X DELETE
Request
DELETE/vps/networking/v1/floating-ips/{floating_ip_id}
Errors
Tavu.io API uses the following error codes:
Code | Message | Meaning |
---|---|---|
400 | Bad Request | Your request was malformed. You should not try sending the request again without modifying it. We'll try and provide you with a hint on what was wrong. |
401 | Unauthorized | Your API key is wrong or there was an error authenticating your API key. |
403 | Forbidden | You do not have the permissions to access this resource. |
404 | Not Found | The requested resource was not found. |
429 | Too Many Requests | You have hit the Rate Limit. Try again later. |
500 | Internal Server Error | We had a problem with our server. Try again later. |
Changelog
2021-02-09
- Breaking Temporarily removed volume create as we work on improving our storage features.
- Breaking Temporarily removed volume snapshot create as we work on improving our storage features.
2020-10-19
- Fix Fixed documentation for instance user delete.
- Feature Add ability to attach and detach security groups from instances.
2018-08-17
- Breaking Temporarily removed router create as we work on improving our networking features.
- Breaking Temporarily removed firewall create as we work on improving our networking features.
- Breaking Temporarily removed floating IP create as we work on improving our networking features.
- Feature Added availability zones for configurations and instances.
2018-05-14
- Breaking Renamed the
ssh_key
attribute from theInstance
object tossh_keys
. - Breaking Renamed the
username
attribute from theInstance
object tousernames
. - Feature Added the
generate_credentials
option to the create-instance request. - Feature Added the
upgrade_on_first_boot
option to the create-instance request. - Feature Added the
reboot_after_cloud_init
option to the create-instance request. - Feature Added the
instance_user_ids
attribute to the create-instance request. - Feature Added the
instance_script_id
attribute to the create-instance request. - Feature Added the Instance users endpoint.
- Feature Added the Instance scripts endpoint.
2018-04-24
- Feature Allow custom protocols for create-security-group-rule request.
2018-04-13
- Fix
ssh_key
attribute was not getting properly passed in create-instance request.
2018-04-11
- Feature Added
disk_type
attribute to theConfiguration
object, possible values arehdd
andssd
.
2018-03-19
- Fix
Instance
objects'configuration
attribute was sometimes set to the incorrect configuration.
2018-02-26
- Fix
port_id
attribute was always null for theFloating IP
object.
2018-02-23
- Feature Added
external_gateway_snat_enabled
attribute to theRouter
object.
2018-02-22
- Feature Added
instance_name
attribute to theVolume
objects'attachment
attribute.
2018-01-17
Open beta release of the Tavu API