The Joviam API provides access to features available in the context of an organization, centering around the management and provisioning of cloud resources.
The API is JSON only - requests must have JSON as the request body, and all responses will return JSON, including errors.
We make use of the HTTP verbs GET
, POST
, PUT
and DELETE
with
their appropriate meanings. For example, to create an instance
the URL would be POST /instances
. To perform actions on a particular object, the URL would be
prefixed by the object name and unique ID, e.g. DELETE /instances/f27bd296-084b-4a7b-a978-2b63dd7cc6a7
.
Status codes are used to indicate the success or failure of a request: 200
for success,
201
for success (new object created) and 202
for success (operation will completed
asynchronously). Error status codes are addressed in the
Errors section.
An access token grants you full permissions in the API for that organization and does not expire.
The following error codes are possible responses from the system. The JSON key of "error" is necessary because there is the possibility of overlap of different errors for the same HTTP status code.
Status | Error | Description |
---|---|---|
400 | bad_request | Request parameters are invalid. This usually means parameters are missing or are the wrong data types. An extra field called "details" will contain a string explanation of which fields have errors. |
401 | unauthorized | Either invalid or no credentials were supplied when attempting to access resources in the API. |
401 | invalid_token | There was a problem with the supplied authentication token. This may be because it is expired, has been revoked, or was otherwise invalid.
A description of the error will be sent in the 'error_description' key. Example:
|
401 | invalid_client | You will receive this error only when attempting to authenticate against the OAuth URL, and there is a problem with your supplied credentials. A description of the error will be sent in the 'error_description' key. |
401 | invalid_request | You will receive this error only when attempting to authenticate against the OAuth URL, and your request did not validate - i.e., the correct parameters were not supplied. A description of the error will be sent in the 'error_description' key. |
403 | forbidden | Your identity is authenticated, but you are not authorized to perform this action. |
404 | not_found | The request failed either because the resource with the given ID does not exist, or the URL itself does not exist. |
422 | validation_fail | Many situations can cause this error, including more fine-grained validations on field values that aren't picked up
by the basic field checking that the 400 error would catch. It may also happen when attempting to perform actions on a
resource when it is currently in an inappropriate state to do so. An extra field "details" will be supplied, which is
a dictionary with keys and values indicating the specific field on the object and its errors as an array of strings.
Example:
|
500 | internal_server_error | An error occurred on our servers that was unexpected. We have been notified about it, but if the issue persists please contact support |
Represents a request and the subsequent credentials required to remotely connect to an instance, either over VNC or serial interfaces. After a session becomes "ready", its connection details may only be used once.
The VNC interface type is wrapped by an HTML websockets connection. The serial interface type is served using Mosh.
Name | Type | Description |
---|---|---|
created_at | date-time | When the console session was created. |
host | nullable string | Remote access host (only present when type is "serial"). |
id | uuid | Unique identifier of the console session. |
instance_id | uuid | ID of the connected instance. |
port | nullable integer | Remote access port (only present when type is "serial"). |
state | string | State of the session. One of: failed initiating ready |
token | nullable string | VNC password or serial key. |
type | string | Console session type. One of: serial vnc |
updated_at | date-time | When the console session was last updated. |
url | nullable uri | Websockets URL (only present when type is "vnc"). |
GET /console_sessions/{console_session_id}
curl -X GET https://cloud.joviam.com/api/v1/console_sessions/$CONSOLE_SESSION_ID \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"id": "b80bb774-0288-fda1-f201-890375a60c8f",
"state": "ready",
"host": null,
"port": null,
"token": "4738y4o10984213",
"type": "vnc",
"url": "wss://region.cloudhosting.example/12345",
"instance_id": "7123a699-d77d-b647-9a1d-8ece2c4f1c16",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
Name | Type | Description |
---|---|---|
cdrom | boolean | Whether the disk is emulating a CD-ROM. |
created_at | date-time | When the disk was created. |
id | uuid | Unique identifier of the disk. |
instance_id | nullable uuid | ID of the instance to which the disk is attached. |
is_template | boolean | Whether the disk is a template from which other disks may be cloned. |
name | string | Name of the disk. |
performance_tier | performance_tier | Performance tier of the disk. |
position | nullable integer | Index/position at which the disk should be attached to its instance, with 0 as the first disk. |
region | region | Region in which the disk is located. |
size | integer | Size of the disk, in gigabytes. |
state | string | State of the disk. One of: attached attaching detaching failed_to_provision failed_to_terminate initial pending pending_verification provisioning resizing terminated terminating transferred unattached |
template | nullable template | Template from which the disk was originally sourced. |
updated_at | date-time | When the configuration of the disk was last updated. |
POST /disks
Name | Type | Description |
---|---|---|
name | string | Name of the disk. |
performance_tier | uuid | ID of the performance tier of the disk. |
region | uuid | ID of the region in which the disk is located. |
size | integer | Size of the disk, in gigabytes. |
Name | Type | Description |
---|---|---|
cdrom | boolean | Whether the disk is emulating a CD-ROM. |
is_template | boolean | Whether the disk is a template from which other disks may be cloned. |
template | string | ID or slug of the template from which the disk should be sourced. |
curl -X POST https://cloud.joviam.com/api/v1/disks \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Linux Disk",
"size": 100,
"region": "0f442f96-09e5-d4cc-9452-34896246cce7",
"performance_tier": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"template": "example",
"cdrom": false,
"is_template": false
}'
HTTP/1.1 201 Created
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
DELETE /disks/{disk_id}
curl -X DELETE https://cloud.joviam.com/api/v1/disks/$DISK_ID \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
GET /disks/{disk_id}
curl -X GET https://cloud.joviam.com/api/v1/disks/$DISK_ID \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
GET /disks/{disk_id}/state
curl -X GET https://cloud.joviam.com/api/v1/disks/$DISK_ID/state \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"state": "attached"
}
GET /disks
curl -X GET https://cloud.joviam.com/api/v1/disks \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
[
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
]
PUT /disks/{disk_id}
Name | Type | Description |
---|---|---|
cdrom | boolean | Whether the disk is emulating a CD-ROM. |
is_template | boolean | Whether the disk is a template from which other disks may be cloned. |
name | string | Name of the disk. |
curl -X PUT https://cloud.joviam.com/api/v1/disks/$DISK_ID \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Linux Disk",
"cdrom": false,
"is_template": false
}'
HTTP/1.1 200 OK
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
POST /disks/{disk_id}/resize
Name | Type | Description |
---|---|---|
size | integer | Size of the disk, in gigabytes. |
curl -X POST https://cloud.joviam.com/api/v1/disks/$DISK_ID/resize \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"size": 100
}'
HTTP/1.1 200 OK
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
POST /disks/{disk_id}/clone
Name | Type | Description |
---|---|---|
is_template | boolean | Whether the disk is a template from which other disks may be cloned. |
name | string | Name of the disk. |
performance_tier | uuid | ID of the performance tier of the disk. |
curl -X POST https://cloud.joviam.com/api/v1/disks/$DISK_ID/clone \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Linux Disk",
"performance_tier": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"is_template": false
}'
HTTP/1.1 201 Created
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
Name | Type | Description |
---|---|---|
availability_group | array | IDs of instances that should be grouped together with the instance for high availability. |
boot_device | string | Device from which the instance should boot. Default: disk One of: cdrom disk network |
created_at | date-time | When the instance was created. |
disks | array[disk] | Disks that are attached to the instance, in device order. |
hostname | string | Hostname of the instance. |
id | uuid | Unique identifier of the instance. |
memory | integer | Instance RAM in megabytes. |
name | string | Name of the instance. |
network_adapters | array[network_adapter] | Network adapters that are attached to the instance, in order. |
performance_tier | performance_tier | Performance tier of the instance. |
public_keys | array[public_key] | Public keys that can be used to access the instance. |
region | region | Region in which the instance is located. |
start_on_crash | boolean | Whether to restart the instance after a crash event. Default: true |
start_on_reboot | boolean | Whether to restart the instance after a reboot event. Default: true |
start_on_shutdown | boolean | Whether to restart the instance after a shutdown event. Default: false |
state | string | State of the instance. One of: failed_to_provision initial pending_verification provisioning running starting stopped stopping terminated terminating transferred updating updating_network |
updated_at | date-time | When the configuration of the instance was last updated. |
virtualization | string | Virtualization mode. One of: hvm pv |
POST /instances
Name | Type | Description |
---|---|---|
disk_performance_tier | uuid | ID of the performance tier to assign to the new boot disk. |
instance_performance_tier | uuid | ID of the performance tier to assign to the instance. |
memory | integer | Instance RAM in megabytes. |
name | string | Name of the instance. |
region | uuid | ID of the region in which to create the instance. |
size | integer | Size of the boot disk in gigabytes. |
template | string | ID or slug of the template to use for the new boot disk. |
Name | Type | Description |
---|---|---|
allocate_private_ip | boolean | Whether to allocate an IP address from the first available private network, and attach it to the new instance. Default: false |
allocate_public_ip | boolean | Whether to allocate an IP address from the first available public network, and attach it to the new instance. Default: false |
availability_group | array | IDs of instances that should be grouped together with the instance for high availability. |
networks | array | IDs of networks to which the instance should be attached. A new IP address will be allocated for each network. |
public_keys | array | IDs of public keys that can be used to access the instance. |
start_when_ready | boolean | Whether to start the instance immediately after the boot disk is provisioned. Default: false |
curl -X POST https://cloud.joviam.com/api/v1/instances \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Web Server",
"memory": 2048,
"region": "0f442f96-09e5-d4cc-9452-34896246cce7",
"instance_performance_tier": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"disk_performance_tier": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"template": "example",
"size": 30,
"allocate_public_ip": false,
"allocate_private_ip": false,
"networks": [
"41ba5632-95f5-82b1-416e-e4a1ff74fee4"
],
"public_keys": [
"afa7d08a-ef15-f46f-eed9-ab015431b906"
],
"start_when_ready": true,
"availability_group": [
"0c4dde6f-7c55-0afd-e15f-a5bd0f157033"
]
}'
HTTP/1.1 201 Created
{
"id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"name": "Web Server",
"memory": 2048,
"virtualization": "hvm",
"hostname": "web-server",
"boot_device": "disk",
"start_on_shutdown": false,
"start_on_reboot": true,
"start_on_crash": true,
"state": "stopped",
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"disks": [
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"public_keys": [
{
"id": "afa7d08a-ef15-f46f-eed9-ab015431b906",
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"network_adapters": [
{
"id": "971e4423-2c66-9f81-2f78-b3cb16c3c345",
"index": 0,
"dhcp": false,
"network": {
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
},
"ip_addresses": [
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"availability_group": [
"0c4dde6f-7c55-0afd-e15f-a5bd0f157033"
],
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
POST /instances/assemble
Name | Type | Description |
---|---|---|
memory | integer | Instance RAM in megabytes. |
name | string | Name of the instance. |
performance_tier | uuid | ID of the performance tier to assign to the instance. |
region | uuid | ID of the region in which to create the instance. |
Name | Type | Description |
---|---|---|
availability_group | array | IDs of instances that should be grouped together with the instance for high availability. |
boot_device | string | Device from which the instance should boot. Default: disk One of: cdrom disk network |
disks | array | IDs of disks to be attached to the instance, in device order. |
ip_addresses | array | IDs of IP addresses to be assigned to the instance. |
public_keys | array | IDs of public keys that can be used to access the instance. |
start_on_crash | boolean | Whether to restart the instance after a crash event. Default: true |
start_on_reboot | boolean | Whether to restart the instance after a reboot event. Default: true |
start_on_shutdown | boolean | Whether to restart the instance after a shutdown event. Default: false |
virtualization | string | Virtualization mode. One of: hvm pv |
curl -X POST https://cloud.joviam.com/api/v1/instances/assemble \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Web Server",
"memory": 2048,
"region": "0f442f96-09e5-d4cc-9452-34896246cce7",
"performance_tier": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"disks": [
"dc2706a0-52ce-de25-ff5a-0d15acd34c51"
],
"ip_addresses": [
"41ba5632-95f5-82b1-416e-e4a1ff74fee4"
],
"public_keys": [
"afa7d08a-ef15-f46f-eed9-ab015431b906"
],
"boot_device": "disk",
"start_on_shutdown": false,
"start_on_reboot": true,
"start_on_crash": true,
"virtualization": "hvm",
"availability_group": [
"0c4dde6f-7c55-0afd-e15f-a5bd0f157033"
]
}'
HTTP/1.1 200 OK
{
"id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"name": "Web Server",
"memory": 2048,
"virtualization": "hvm",
"hostname": "web-server",
"boot_device": "disk",
"start_on_shutdown": false,
"start_on_reboot": true,
"start_on_crash": true,
"state": "stopped",
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"disks": [
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"public_keys": [
{
"id": "afa7d08a-ef15-f46f-eed9-ab015431b906",
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"network_adapters": [
{
"id": "971e4423-2c66-9f81-2f78-b3cb16c3c345",
"index": 0,
"dhcp": false,
"network": {
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
},
"ip_addresses": [
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"availability_group": [
"0c4dde6f-7c55-0afd-e15f-a5bd0f157033"
],
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
DELETE /instances/{instance_id}
curl -X DELETE https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 202 Accepted
{
"id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"name": "Web Server",
"memory": 2048,
"virtualization": "hvm",
"hostname": "web-server",
"boot_device": "disk",
"start_on_shutdown": false,
"start_on_reboot": true,
"start_on_crash": true,
"state": "terminating",
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"disks": [
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"public_keys": [
{
"id": "afa7d08a-ef15-f46f-eed9-ab015431b906",
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"network_adapters": [
{
"id": "971e4423-2c66-9f81-2f78-b3cb16c3c345",
"index": 0,
"dhcp": false,
"network": {
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
},
"ip_addresses": [
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"availability_group": [
"0c4dde6f-7c55-0afd-e15f-a5bd0f157033"
],
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
GET /instances/{instance_id}
curl -X GET https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"name": "Web Server",
"memory": 2048,
"virtualization": "hvm",
"hostname": "web-server",
"boot_device": "disk",
"start_on_shutdown": false,
"start_on_reboot": true,
"start_on_crash": true,
"state": "stopped",
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"disks": [
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"public_keys": [
{
"id": "afa7d08a-ef15-f46f-eed9-ab015431b906",
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"network_adapters": [
{
"id": "971e4423-2c66-9f81-2f78-b3cb16c3c345",
"index": 0,
"dhcp": false,
"network": {
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
},
"ip_addresses": [
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"availability_group": [
"0c4dde6f-7c55-0afd-e15f-a5bd0f157033"
],
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
GET /instances
curl -X GET https://cloud.joviam.com/api/v1/instances \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
[
{
"id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"name": "Web Server",
"memory": 2048,
"virtualization": "hvm",
"hostname": "web-server",
"boot_device": "disk",
"start_on_shutdown": false,
"start_on_reboot": true,
"start_on_crash": true,
"state": "stopped",
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"disks": [
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"public_keys": [
{
"id": "afa7d08a-ef15-f46f-eed9-ab015431b906",
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"network_adapters": [
{
"id": "971e4423-2c66-9f81-2f78-b3cb16c3c345",
"index": 0,
"dhcp": false,
"network": {
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
},
"ip_addresses": [
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"availability_group": [
"0c4dde6f-7c55-0afd-e15f-a5bd0f157033"
],
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
]
PUT /instances/{instance_id}
Name | Type | Description |
---|---|---|
boot_device | string | Device from which the instance should boot. Default: disk One of: cdrom disk network |
memory | integer | Instance RAM in megabytes. |
name | string | Name of the instance. |
note | string | Free text field for storing custom information about the instance. |
performance_tier | uuid | ID of the performance tier to assign to the instance. |
start_on_crash | boolean | Whether to restart the instance after a crash event. Default: true |
start_on_reboot | boolean | Whether to restart the instance after a reboot event. Default: true |
start_on_shutdown | boolean | Whether to restart the instance after a shutdown event. Default: false |
virtualization | string | Virtualization mode. One of: hvm pv |
curl -X PUT https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Web Server",
"note": "Configured nginx with PHP. Firewall only allows SSH through private network.",
"virtualization": "hvm",
"memory": 2048,
"boot_device": "disk",
"start_on_shutdown": false,
"start_on_reboot": true,
"start_on_crash": true,
"performance_tier": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51"
}'
HTTP/1.1 200 OK
{
"id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"name": "Web Server",
"memory": 2048,
"virtualization": "hvm",
"hostname": "web-server",
"boot_device": "disk",
"start_on_shutdown": false,
"start_on_reboot": true,
"start_on_crash": true,
"state": "stopped",
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"disks": [
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"public_keys": [
{
"id": "afa7d08a-ef15-f46f-eed9-ab015431b906",
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"network_adapters": [
{
"id": "971e4423-2c66-9f81-2f78-b3cb16c3c345",
"index": 0,
"dhcp": false,
"network": {
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
},
"ip_addresses": [
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"availability_group": [
"0c4dde6f-7c55-0afd-e15f-a5bd0f157033"
],
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
GET /instances/{instance_id}/state
curl -X GET https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID/state \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"state": "stopped"
}
GET /instances/{instance_id}/note
curl -X GET https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID/note \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"note": "Configured nginx with PHP. Firewall only allows SSH through private network."
}
POST /instances/{instance_id}/start
curl -X POST https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID/start \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 202 Accepted
{
"id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"name": "Web Server",
"memory": 2048,
"virtualization": "hvm",
"hostname": "web-server",
"boot_device": "disk",
"start_on_shutdown": false,
"start_on_reboot": true,
"start_on_crash": true,
"state": "starting",
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"disks": [
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"public_keys": [
{
"id": "afa7d08a-ef15-f46f-eed9-ab015431b906",
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"network_adapters": [
{
"id": "971e4423-2c66-9f81-2f78-b3cb16c3c345",
"index": 0,
"dhcp": false,
"network": {
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
},
"ip_addresses": [
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"availability_group": [
"0c4dde6f-7c55-0afd-e15f-a5bd0f157033"
],
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
POST /instances/{instance_id}/stop
curl -X POST https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID/stop \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 202 Accepted
{
"id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"name": "Web Server",
"memory": 2048,
"virtualization": "hvm",
"hostname": "web-server",
"boot_device": "disk",
"start_on_shutdown": false,
"start_on_reboot": true,
"start_on_crash": true,
"state": "stopping",
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"disks": [
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"public_keys": [
{
"id": "afa7d08a-ef15-f46f-eed9-ab015431b906",
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"network_adapters": [
{
"id": "971e4423-2c66-9f81-2f78-b3cb16c3c345",
"index": 0,
"dhcp": false,
"network": {
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
},
"ip_addresses": [
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"availability_group": [
"0c4dde6f-7c55-0afd-e15f-a5bd0f157033"
],
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
POST /instances/{instance_id}/remote_access
Name | Type | Description |
---|---|---|
type | string | Type of remote access. One of: serial vnc |
curl -X POST https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID/remote_access \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "vnc"
}'
HTTP/1.1 202 Accepted
{
"id": "b80bb774-0288-fda1-f201-890375a60c8f",
"state": "ready",
"host": "192.168.5.5",
"port": 50321,
"token": "4738y4o10984213",
"type": "vnc",
"url": "wss://region.cloudhosting.example/12345",
"instance_id": "7123a699-d77d-b647-9a1d-8ece2c4f1c16",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
PUT /instances/{instance_id}/disks
Name | Type | Description |
---|---|---|
disks | array | IDs of disks to be attached to the instance, in device order. |
curl -X PUT https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID/disks \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"disks": [
"dc2706a0-52ce-de25-ff5a-0d15acd34c51"
]
}'
HTTP/1.1 200 OK
[
{
"id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"name": "Linux Disk",
"position": 0,
"size": 100,
"performance_tier": {
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
},
"template": null,
"state": "attached",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"instance_id": "51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c",
"cdrom": false,
"is_template": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
]
PUT /instances/{instance_id}/public_keys
Name | Type | Description |
---|---|---|
public_keys | array | IDs of public keys that can be used to access the instance. |
curl -X PUT https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID/public_keys \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"public_keys": [
"afa7d08a-ef15-f46f-eed9-ab015431b906"
]
}'
HTTP/1.1 200 OK
[
{
"id": "afa7d08a-ef15-f46f-eed9-ab015431b906",
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
]
PUT /instances/{instance_id}/network_adapters
Name | Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
network_adapters | array | An array of objects that each describe a connection to a given network, with the following keys:
|
curl -X PUT https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID/network_adapters \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"network_adapters": [
{
"network": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"ip_addresses": [
"41ba5632-95f5-82b1-416e-e4a1ff74fee4"
]
}
]
}'
HTTP/1.1 200 OK
[
{
"id": "971e4423-2c66-9f81-2f78-b3cb16c3c345",
"index": 0,
"dhcp": false,
"network": {
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
},
"ip_addresses": [
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
],
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
]
PUT /instances/{instance_id}/availability_group
Name | Type | Description |
---|---|---|
availability_group | array | IDs of instances that should be grouped together with the instance for high availability. |
curl -X PUT https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID/availability_group \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"availability_group": [
"0c4dde6f-7c55-0afd-e15f-a5bd0f157033"
]
}'
HTTP/1.1 200 OK
[
"0c4dde6f-7c55-0afd-e15f-a5bd0f157033"
]
GET /instances/{instance_id}/context
curl -X GET https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID/context \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"MY_VARIABLE": "value of my variable",
"EMPTY_VARIABLE": ""
}
POST /instances/{instance_id}/context
curl -X POST https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID/context \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"MY_VARIABLE": "value of my variable",
"EMPTY_VARIABLE": ""
}'
HTTP/1.1 200 OK
{
"MY_VARIABLE": "value of my variable",
"EMPTY_VARIABLE": ""
}
PUT /instances/{instance_id}/context
curl -X PUT https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID/context \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"MY_VARIABLE": "value of my variable",
"EMPTY_VARIABLE": ""
}'
HTTP/1.1 200 OK
{
"MY_VARIABLE": "value of my variable",
"EMPTY_VARIABLE": ""
}
DELETE /instances/{instance_id}/context/{instance_context_key}
curl -X DELETE https://cloud.joviam.com/api/v1/instances/$INSTANCE_ID/context/$INSTANCE_CONTEXT_KEY \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"MY_VARIABLE": "value of my variable",
"EMPTY_VARIABLE": ""
}
Name | Type | Description |
---|---|---|
address | ipv4 | Address in IPv4 notation. |
created_at | date-time | When the IP address was allocated. |
id | uuid | Unique identifier of the IP address. |
instance_ids | array | IDs of instances to which the IP address is attached. |
loadbalanced | boolean | Whether the IP address has a loadbalancer in front of it. |
name | nullable string | Name of the IP address. |
network_id | uuid | ID of the network to which the IP address belongs. |
shareable | boolean | Whether the IP address can be shared between instances. |
updated_at | date-time | When the IP address was last updated. |
POST /ip_addresses
Name | Type | Description |
---|---|---|
address | ipv4 | Address in IPv4 notation. |
loadbalanced | boolean | Whether the IP address has a loadbalancer in front of it. |
name | nullable string | Name of the IP address. |
network | uuid | ID of the network to which the IP address belongs. Optional for public IPs if region is provided. |
region | uuid | ID of the region in which to create the IP address. Optional if network is provided. |
shareable | boolean | Whether the IP address can be shared between instances. |
curl -X POST https://cloud.joviam.com/api/v1/ip_addresses \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Web Server IP",
"shareable": false,
"loadbalanced": false,
"address": "12.34.56.78",
"region": "0f442f96-09e5-d4cc-9452-34896246cce7",
"network": "4e19114d-66ab-e7ed-ba93-91885a98c59b"
}'
HTTP/1.1 201 Created
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
DELETE /ip_addresses/{ip_address_id}
curl -X DELETE https://cloud.joviam.com/api/v1/ip_addresses/$IP_ADDRESS_ID \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
}
GET /ip_addresses
curl -X GET https://cloud.joviam.com/api/v1/ip_addresses \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
[
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
]
GET /ip_addresses/public
curl -X GET https://cloud.joviam.com/api/v1/ip_addresses/public \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
[
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
]
GET /ip_addresses/private
curl -X GET https://cloud.joviam.com/api/v1/ip_addresses/private \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
[
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
]
GET /ip_addresses/{ip_address_id}
curl -X GET https://cloud.joviam.com/api/v1/ip_addresses/$IP_ADDRESS_ID \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
PUT /ip_addresses/{ip_address_id}
Name | Type | Description |
---|---|---|
loadbalanced | boolean | Whether the IP address has a loadbalancer in front of it. |
name | nullable string | Name of the IP address. |
shareable | boolean | Whether the IP address can be shared between instances. |
curl -X PUT https://cloud.joviam.com/api/v1/ip_addresses/$IP_ADDRESS_ID \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Web Server IP",
"shareable": false,
"loadbalanced": false
}'
HTTP/1.1 200 OK
{
"id": "41ba5632-95f5-82b1-416e-e4a1ff74fee4",
"name": "Web Server IP",
"address": "12.34.56.78",
"network_id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"instance_ids": [
"51afcc4f-fa9f-7e01-87e0-e53ba9ef0e4c"
],
"shareable": false,
"loadbalanced": false,
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
Name | Type | Description |
---|---|---|
created_at | date-time | When the network was created. |
gateway | nullable ipv4 | Gateway of the network. |
id | uuid | Unique identifier of the network. |
is_public | boolean | Whether the network is public (i.e. routable on the Internet). |
name | nullable string | Name of the network. |
netmask | ipv4 | Netmask of the network. |
network_address | ipv4 | Reserved address of the network (i.e. the first IP in its range). |
primary_nameserver | nullable ipv4 | Primary name server for the network. |
region | region | Region of the network. |
secondary_nameserver | nullable ipv4 | Secondary name server for the network. |
specification | string | Network specification in CIDR format. |
state | string | State of the network. One of: failed_to_provision initial pending_verification provisioning ready terminated terminating transferred |
updated_at | date-time | When the network was last updated. |
POST /networks
Name | Type | Description |
---|---|---|
name | nullable string | Name of the network. |
region | uuid | ID of the region in which to create the network. |
specification | string | Network specification in CIDR format. |
Name | Type | Description |
---|---|---|
gateway | nullable ipv4 | Gateway of the network. |
primary_nameserver | nullable ipv4 | Primary name server for the network. |
secondary_nameserver | nullable ipv4 | Secondary name server for the network. |
curl -X POST https://cloud.joviam.com/api/v1/networks \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "My Private Network",
"specification": "192.168.2.0/24",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"region": "0f442f96-09e5-d4cc-9452-34896246cce7"
}'
HTTP/1.1 201 Created
{
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
DELETE /networks/{network_id}
curl -X DELETE https://cloud.joviam.com/api/v1/networks/$NETWORK_ID \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
GET /networks
curl -X GET https://cloud.joviam.com/api/v1/networks \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
[
{
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
]
GET /networks/public
curl -X GET https://cloud.joviam.com/api/v1/networks/public \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
[
{
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
]
GET /networks/private
curl -X GET https://cloud.joviam.com/api/v1/networks/private \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
[
{
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
]
GET /networks/{network_id}
curl -X GET https://cloud.joviam.com/api/v1/networks/$NETWORK_ID \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
PUT /networks/{network_id}
Name | Type | Description |
---|---|---|
gateway | nullable ipv4 | Gateway of the network. |
name | nullable string | Name of the network. |
primary_nameserver | nullable ipv4 | Primary name server for the network. |
secondary_nameserver | nullable ipv4 | Secondary name server for the network. |
curl -X PUT https://cloud.joviam.com/api/v1/networks/$NETWORK_ID \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "My Private Network",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5"
}'
HTTP/1.1 200 OK
{
"id": "4e19114d-66ab-e7ed-ba93-91885a98c59b",
"name": "My Private Network",
"is_public": false,
"specification": "192.168.2.0/24",
"netmask": "255.255.255.0",
"gateway": "192.168.2.1",
"primary_nameserver": "192.168.2.4",
"secondary_nameserver": "192.168.2.5",
"state": "ready",
"network_address": "192.168.2.0",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
Name | Type | Description |
---|---|---|
created_at | date-time | When the network adapter was created. |
dhcp | boolean | Whether DHCP is enabled for the network adapter. Default: false |
id | uuid | Unique identifier of the network adapter. |
index | integer | The position at which the network adapter is connected to the instances (e.g. 2 => eth2) |
ip_addresses | array[ip_address] | Static IP addresses attached to the network adapter. |
network | network | The network to which the adapter is connected. |
updated_at | date-time | When the network adapter was last updated. |
Name | Type | Description |
---|---|---|
id | uuid | Unique identifier of the performance tier. |
name | string | Name of the performance tier. |
region | region | Region in which the performance tier is available. |
GET /performance_tiers/instances
curl -X GET https://cloud.joviam.com/api/v1/performance_tiers/instances \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
[
{
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
}
]
GET /performance_tiers/disks
curl -X GET https://cloud.joviam.com/api/v1/performance_tiers/disks \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
[
{
"id": "9023fa53-fe2a-81b7-6904-7d28ae3e3d51",
"name": "Standard",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
}
]
Name | Type | Description |
---|---|---|
created_at | date-time | When the public key was created. |
id | uuid | Unique identifier of the public key. |
key | string | Public key in OpenSSH format. |
name | string | Name of the public key. |
updated_at | date-time | When the public key was last updated. |
POST /public_keys
Name | Type | Description |
---|---|---|
key | string | Public key in OpenSSH format. |
name | string | Name of the public key. |
curl -X POST https://cloud.joviam.com/api/v1/public_keys \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)"
}'
HTTP/1.1 201 Created
{
"id": "afa7d08a-ef15-f46f-eed9-ab015431b906",
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
DELETE /public_keys/{public_key_id}
curl -X DELETE https://cloud.joviam.com/api/v1/public_keys/$PUBLIC_KEY_ID \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
}
GET /public_keys/{public_key_id}
curl -X GET https://cloud.joviam.com/api/v1/public_keys/$PUBLIC_KEY_ID \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"id": "afa7d08a-ef15-f46f-eed9-ab015431b906",
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
GET /public_keys
curl -X GET https://cloud.joviam.com/api/v1/public_keys \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
[
{
"id": "afa7d08a-ef15-f46f-eed9-ab015431b906",
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
]
PUT /public_keys/{public_key_id}
Name | Type | Description |
---|---|---|
name | string | Name of the public key. |
curl -X PUT https://cloud.joviam.com/api/v1/public_keys/$PUBLIC_KEY_ID \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Sharon's Desktop"
}'
HTTP/1.1 200 OK
{
"id": "afa7d08a-ef15-f46f-eed9-ab015431b906",
"name": "Sharon's Desktop",
"key": "ssh-rsa AAAAB3NzaC......uL/jU95H sharon@sharons-desktop.local (example is truncated)",
"created_at": "2016-05-10T03:36:34.849Z",
"updated_at": "2016-05-10T04:36:34.849Z"
}
Name | Type | Description |
---|---|---|
code | string | Code of the region. |
id | uuid | Unique identifier of the region. |
name | string | Name of the region. |
GET /regions/{region_id}
curl -X GET https://cloud.joviam.com/api/v1/regions/$REGION_ID \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
GET /regions
curl -X GET https://cloud.joviam.com/api/v1/regions \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
[
{
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
}
]
Name | Type | Description |
---|---|---|
allows_public_key_auth | boolean | Whether the operating system on the template supports SSH key functionality. |
disk_id | nullable uuid | ID of the disk that contains the data for this template. Null for system templates. |
id | uuid | Unique identifier of the template. |
minimum_disk_size | nullable integer | Minimum size for boot disks that use the template, in gigabytes. |
name | nullable string | Name of the template. |
published | boolean | Whether or not this template is published and shared to other organizations. |
recommended_virtualization | string | The type of virtualization recommended (or in some cases required) for the template. One of: hvm pv |
region | region | Region in which the template is available. |
slug | nullable string | A unique short name used to find the most recent version of a template. |
superseded_by_id | nullable uuid | ID of the template which superseded this template (caused by updating the source disk). |
version | integer | A number starting from 1 that increases each time the source disk for a template is changed. |
GET /templates/{template_id}
curl -X GET https://cloud.joviam.com/api/v1/templates/$TEMPLATE_ID \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
{
"id": "74f53564-53a6-9e43-8e0f-58ef93103cc0",
"name": "Ubuntu 16.04",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"minimum_disk_size": 50,
"allows_public_key_auth": true,
"slug": "ubuntu-16-04",
"version": 1,
"disk_id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"published": true,
"superseded_by_id": "74f53564-53a6-9e43-8e0f-58ef93103cc0",
"recommended_virtualization": "hvm"
}
GET /templates
curl -X GET https://cloud.joviam.com/api/v1/templates \
-H "Authorization: Bearer $OAUTH_TOKEN"
HTTP/1.1 200 OK
[
{
"id": "74f53564-53a6-9e43-8e0f-58ef93103cc0",
"name": "Ubuntu 16.04",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"minimum_disk_size": 50,
"allows_public_key_auth": true,
"slug": "ubuntu-16-04",
"version": 1,
"disk_id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"published": true,
"superseded_by_id": "74f53564-53a6-9e43-8e0f-58ef93103cc0",
"recommended_virtualization": "hvm"
}
]
POST /templates
Name | Type | Description |
---|---|---|
disk | uuid | Unique identifier of the disk. |
supersedes | uuid | ID of the template to supersede (create a new version of). |
curl -X POST https://cloud.joviam.com/api/v1/templates \
-H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"disk": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"supersedes": "74f53564-53a6-9e43-8e0f-58ef93103cc0"
}'
HTTP/1.1 201 Created
{
"id": "74f53564-53a6-9e43-8e0f-58ef93103cc0",
"name": "Ubuntu 16.04",
"region": {
"id": "0f442f96-09e5-d4cc-9452-34896246cce7",
"name": "AU East",
"code": "SY3"
},
"minimum_disk_size": 50,
"allows_public_key_auth": true,
"slug": "ubuntu-16-04",
"version": 1,
"disk_id": "dc2706a0-52ce-de25-ff5a-0d15acd34c51",
"published": true,
"superseded_by_id": "74f53564-53a6-9e43-8e0f-58ef93103cc0",
"recommended_virtualization": "hvm"
}