API: Compute
Generated from the API's OpenAPI schema. Paths are relative to https://cloud.tebibhost.com. Authentication, errors, pagination and idempotency are on the API overview.
GET/api/v1/projects/{project_id}/images
List Images (listImages)
IAM action: compute:DescribeImage
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string |
Responses
200OK (array of ImageOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
GET/api/v1/projects/{project_id}/instance-types
List Instance Types (listInstanceTypes)
IAM action: compute:DescribeInstanceType
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string |
Responses
200OK (array of InstanceTypeOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
GET/api/v1/projects/{project_id}/snapshot-schedules
List Snapshot Schedules (listSnapshotSchedules)
IAM action: compute:DescribeSnapshotSchedule
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id | query | string (nullable) | |
limit | query | integer (nullable) | |
cursor | query | string (nullable) |
Responses
200OK (Page_SnapshotScheduleOut_)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of Page_SnapshotScheduleOut_
| Field | Type | Description |
|---|---|---|
items | array of SnapshotScheduleOut | |
next_cursor | string (nullable) |
POST/api/v1/projects/{project_id}/snapshot-schedules
Create Snapshot Schedule (createSnapshotSchedule)
Snapshot a VM on a schedule and delete its old snapshots (scheduled backups). The caller must also be allowed to snapshot the VM (compute:CreateSnapshot on it); TebibHost's scheduler then takes the snapshots, whoever made the schedule.
IAM action: compute:CreateSnapshotSchedule
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string |
Request body (JSON, SnapshotScheduleIn)
| Field | Type | Description |
|---|---|---|
cron | string (nullable) | For frequency custom: minute hour day-of-month month day-of-week, e.g. 30 2 * * 1-5. At most once an hour: the minute is one number |
description | string | Default: "". |
enabled | boolean | Default: true. |
frequency required | "hourly" | "daily" | "weekly" | "custom" | hourly (at minute), daily (at hour:minute), weekly (on weekday at hour:minute), or custom (cron) |
hour | integer | Default: 0. |
minute | integer | Default: 0. |
name required | string | |
retention_count | integer (nullable) | Keep the newest N snapshots this schedule took |
retention_days | integer (nullable) | Delete snapshots this schedule took once they are N days old |
tags | object | |
timezone | string | IANA time zone of the times, e.g. Africa/Nairobi Default: "UTC". |
vm_id required | string | |
weekday | integer | 0 = Sunday, 6 = Saturday Default: 0. |
Responses
202Accepted (SnapshotScheduleOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of SnapshotScheduleOut
| Field | Type | Description |
|---|---|---|
created_at | string (date-time) | |
cron | string | The effective cron expression, presets included |
description | string | |
enabled | boolean | |
failures | integer | Runs in a row that didn't succeed |
frequency | string | |
id | string | |
last_run | SnapshotScheduleRunOut (nullable) | |
missed | integer | Runs not taken because the scheduler wasn't running |
name | string | |
next_run_at | string (date-time) (nullable) | The next run (UTC); null while disabled |
project_id | string | |
retention_count | integer (nullable) | |
retention_days | integer (nullable) | |
snapshot_count | integer | Live snapshots this schedule took |
state | string | |
status_message | string | |
tags | object | |
timezone | string | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string |
GET/api/v1/projects/{project_id}/snapshot-schedules/{schedule_id}
Get Snapshot Schedule (getSnapshotSchedule)
IAM action: compute:DescribeSnapshotSchedule
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
schedule_id required | path | string |
Responses
200OK (SnapshotScheduleOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of SnapshotScheduleOut
| Field | Type | Description |
|---|---|---|
created_at | string (date-time) | |
cron | string | The effective cron expression, presets included |
description | string | |
enabled | boolean | |
failures | integer | Runs in a row that didn't succeed |
frequency | string | |
id | string | |
last_run | SnapshotScheduleRunOut (nullable) | |
missed | integer | Runs not taken because the scheduler wasn't running |
name | string | |
next_run_at | string (date-time) (nullable) | The next run (UTC); null while disabled |
project_id | string | |
retention_count | integer (nullable) | |
retention_days | integer (nullable) | |
snapshot_count | integer | Live snapshots this schedule took |
state | string | |
status_message | string | |
tags | object | |
timezone | string | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string |
PATCH/api/v1/projects/{project_id}/snapshot-schedules/{schedule_id}
Update Snapshot Schedule (updateSnapshotSchedule)
Change the schedule or the retention, or turn it off and on. A changed schedule, or one turned on again, starts from now: runs already past are not taken.
IAM action: compute:UpdateSnapshotSchedule
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
schedule_id required | path | string |
Request body (JSON, SnapshotSchedulePatch)
| Field | Type | Description |
|---|---|---|
clear_retention_count | boolean | Stop keeping by count (retention_days must then be set) Default: false. |
clear_retention_days | boolean | Stop keeping by age (retention_count must then be set) Default: false. |
cron | string (nullable) | |
description | string (nullable) | |
enabled | boolean (nullable) | |
frequency | "hourly" | "daily" | "weekly" | "custom" (nullable) | |
hour | integer (nullable) | |
minute | integer (nullable) | |
retention_count | integer (nullable) | |
retention_days | integer (nullable) | |
tags | object (nullable) | |
timezone | string (nullable) | |
weekday | integer (nullable) |
Responses
200OK (SnapshotScheduleOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of SnapshotScheduleOut
| Field | Type | Description |
|---|---|---|
created_at | string (date-time) | |
cron | string | The effective cron expression, presets included |
description | string | |
enabled | boolean | |
failures | integer | Runs in a row that didn't succeed |
frequency | string | |
id | string | |
last_run | SnapshotScheduleRunOut (nullable) | |
missed | integer | Runs not taken because the scheduler wasn't running |
name | string | |
next_run_at | string (date-time) (nullable) | The next run (UTC); null while disabled |
project_id | string | |
retention_count | integer (nullable) | |
retention_days | integer (nullable) | |
snapshot_count | integer | Live snapshots this schedule took |
state | string | |
status_message | string | |
tags | object | |
timezone | string | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string |
DELETE/api/v1/projects/{project_id}/snapshot-schedules/{schedule_id}
Delete Snapshot Schedule (deleteSnapshotSchedule)
Stop the schedule. The snapshots it took stay (and bill) until you delete them.
IAM action: compute:DeleteSnapshotSchedule
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
schedule_id required | path | string |
Responses
202Accepted (SnapshotScheduleOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of SnapshotScheduleOut
| Field | Type | Description |
|---|---|---|
created_at | string (date-time) | |
cron | string | The effective cron expression, presets included |
description | string | |
enabled | boolean | |
failures | integer | Runs in a row that didn't succeed |
frequency | string | |
id | string | |
last_run | SnapshotScheduleRunOut (nullable) | |
missed | integer | Runs not taken because the scheduler wasn't running |
name | string | |
next_run_at | string (date-time) (nullable) | The next run (UTC); null while disabled |
project_id | string | |
retention_count | integer (nullable) | |
retention_days | integer (nullable) | |
snapshot_count | integer | Live snapshots this schedule took |
state | string | |
status_message | string | |
tags | object | |
timezone | string | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string |
GET/api/v1/projects/{project_id}/snapshots
List Snapshots (listSnapshots)
IAM action: compute:DescribeSnapshot
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id | query | string (nullable) | |
schedule_id | query | string (nullable) | |
limit | query | integer (nullable) | |
cursor | query | string (nullable) |
Responses
200OK (Page_SnapshotOut_)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of Page_SnapshotOut_
| Field | Type | Description |
|---|---|---|
items | array of SnapshotOut | |
next_cursor | string (nullable) |
POST/api/v1/projects/{project_id}/snapshots
Create Snapshot (createSnapshot)
Snapshot every disk of a VM. A running VM with the guest agent gets its filesystems frozen for the moment of the snapshot (application-consistent); otherwise the snapshot is crash-consistent.
IAM action: compute:CreateSnapshot
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string |
Request body (JSON, SnapshotIn)
| Field | Type | Description |
|---|---|---|
description | string | Default: "". |
name required | string | |
tags | object | |
vm_id required | string |
Responses
202Accepted (SnapshotOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of SnapshotOut
| Field | Type | Description |
|---|---|---|
consistency | "application" | "crash" (nullable) | application: filesystems were frozen through the guest agent |
created_at | string (date-time) | |
description | string | |
id | string | |
name | string | |
project_id | string | |
schedule_id | string (nullable) | The snapshot schedule that took it; null for a snapshot taken by hand |
scheduled_for | string (date-time) (nullable) | The schedule's run it was taken for (UTC); null for a snapshot taken by hand |
size_gib | integer | |
state | string | |
status_message | string | |
tags | object | |
taken_at | string (date-time) (nullable) | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string | |
volume_ids | array of string |
GET/api/v1/projects/{project_id}/snapshots/{snapshot_id}
Get Snapshot (getSnapshot)
IAM action: compute:DescribeSnapshot
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
snapshot_id required | path | string |
Responses
200OK (SnapshotOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of SnapshotOut
| Field | Type | Description |
|---|---|---|
consistency | "application" | "crash" (nullable) | application: filesystems were frozen through the guest agent |
created_at | string (date-time) | |
description | string | |
id | string | |
name | string | |
project_id | string | |
schedule_id | string (nullable) | The snapshot schedule that took it; null for a snapshot taken by hand |
scheduled_for | string (date-time) (nullable) | The schedule's run it was taken for (UTC); null for a snapshot taken by hand |
size_gib | integer | |
state | string | |
status_message | string | |
tags | object | |
taken_at | string (date-time) (nullable) | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string | |
volume_ids | array of string |
PATCH/api/v1/projects/{project_id}/snapshots/{snapshot_id}
Update Snapshot (updateSnapshot)
IAM action: compute:UpdateSnapshot
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
snapshot_id required | path | string |
Request body (JSON, VMPatch)
| Field | Type | Description |
|---|---|---|
description | string (nullable) | |
tags | object (nullable) |
Responses
200OK (SnapshotOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of SnapshotOut
| Field | Type | Description |
|---|---|---|
consistency | "application" | "crash" (nullable) | application: filesystems were frozen through the guest agent |
created_at | string (date-time) | |
description | string | |
id | string | |
name | string | |
project_id | string | |
schedule_id | string (nullable) | The snapshot schedule that took it; null for a snapshot taken by hand |
scheduled_for | string (date-time) (nullable) | The schedule's run it was taken for (UTC); null for a snapshot taken by hand |
size_gib | integer | |
state | string | |
status_message | string | |
tags | object | |
taken_at | string (date-time) (nullable) | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string | |
volume_ids | array of string |
DELETE/api/v1/projects/{project_id}/snapshots/{snapshot_id}
Delete Snapshot (deleteSnapshot)
IAM action: compute:DeleteSnapshot
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
snapshot_id required | path | string |
Responses
202Accepted (SnapshotOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of SnapshotOut
| Field | Type | Description |
|---|---|---|
consistency | "application" | "crash" (nullable) | application: filesystems were frozen through the guest agent |
created_at | string (date-time) | |
description | string | |
id | string | |
name | string | |
project_id | string | |
schedule_id | string (nullable) | The snapshot schedule that took it; null for a snapshot taken by hand |
scheduled_for | string (date-time) (nullable) | The schedule's run it was taken for (UTC); null for a snapshot taken by hand |
size_gib | integer | |
state | string | |
status_message | string | |
tags | object | |
taken_at | string (date-time) (nullable) | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string | |
volume_ids | array of string |
GET/api/v1/projects/{project_id}/ssh-keys
List Ssh Keys (listSshKeys)
IAM action: compute:DescribeSSHKey
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
limit | query | integer (nullable) | |
cursor | query | string (nullable) |
Responses
200OK (Page_SSHKeyOut_)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of Page_SSHKeyOut_
| Field | Type | Description |
|---|---|---|
items | array of SSHKeyOut | |
next_cursor | string (nullable) |
POST/api/v1/projects/{project_id}/ssh-keys
Create Ssh Key (createSshKey)
IAM action: compute:CreateSSHKey
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string |
Request body (JSON, SSHKeyIn)
| Field | Type | Description |
|---|---|---|
description | string | Default: "". |
name required | string | |
public_key required | string | |
tags | object |
Responses
202Accepted (SSHKeyOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of SSHKeyOut
| Field | Type | Description |
|---|---|---|
created_at | string (date-time) | |
description | string | |
fingerprint | string | |
id | string | |
key_type | string | |
name | string | |
project_id | string | |
public_key | string | |
state | string | |
status_message | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) |
GET/api/v1/projects/{project_id}/ssh-keys/{key_id}
Get Ssh Key (getSshKey)
IAM action: compute:DescribeSSHKey
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
key_id required | path | string |
Responses
200OK (SSHKeyOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of SSHKeyOut
| Field | Type | Description |
|---|---|---|
created_at | string (date-time) | |
description | string | |
fingerprint | string | |
id | string | |
key_type | string | |
name | string | |
project_id | string | |
public_key | string | |
state | string | |
status_message | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) |
PATCH/api/v1/projects/{project_id}/ssh-keys/{key_id}
Update Ssh Key (updateSshKey)
IAM action: compute:UpdateSSHKey
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
key_id required | path | string |
Request body (JSON, VMPatch)
| Field | Type | Description |
|---|---|---|
description | string (nullable) | |
tags | object (nullable) |
Responses
200OK (SSHKeyOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of SSHKeyOut
| Field | Type | Description |
|---|---|---|
created_at | string (date-time) | |
description | string | |
fingerprint | string | |
id | string | |
key_type | string | |
name | string | |
project_id | string | |
public_key | string | |
state | string | |
status_message | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) |
DELETE/api/v1/projects/{project_id}/ssh-keys/{key_id}
Delete Ssh Key (deleteSshKey)
Removes the key from the project. VMs created with it keep it (cloud-init ran).
IAM action: compute:DeleteSSHKey
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
key_id required | path | string |
Responses
202Accepted (SSHKeyOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of SSHKeyOut
| Field | Type | Description |
|---|---|---|
created_at | string (date-time) | |
description | string | |
fingerprint | string | |
id | string | |
key_type | string | |
name | string | |
project_id | string | |
public_key | string | |
state | string | |
status_message | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) |
GET/api/v1/projects/{project_id}/vms
List Vms (listVms)
IAM action: compute:DescribeVM
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
limit | query | integer (nullable) | |
cursor | query | string (nullable) |
Responses
200OK (Page_VMOut_)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of Page_VMOut_
| Field | Type | Description |
|---|---|---|
items | array of VMOut | |
next_cursor | string (nullable) |
POST/api/v1/projects/{project_id}/vms
Create Vm (createVm)
Create a VM and its boot volume (a clone of the image), started unless asked not to.
IAM action: compute:CreateVM
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string |
Request body (JSON, VMIn)
| Field | Type | Description |
|---|---|---|
description | string | Default: "". |
hostname | string (nullable) | Defaults to the name, lowercased, as a DNS label |
image required | string | |
instance_type required | string | |
name required | string | |
power_state | "running" | "stopped" | Default: "running". |
root_disk_gib | integer (nullable) | Defaults to 20 GiB or the image's minimum, whichever is larger |
security_group_ids | array of string (nullable) | Defaults to the subnet VPC's default security group |
ssh_key_ids | array of string | |
subnet_id | string (nullable) | Defaults to the default VPC's default subnet |
tags | object | |
user_data | string | Optional cloud-init user data (any format: #cloud-config, a script...) Default: "". |
Responses
202Accepted (VMOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VMOut
| Field | Type | Description |
|---|---|---|
addresses | array of VMAddressOut | |
boot_volume_id | string (nullable) | |
created_at | string (date-time) | |
description | string | |
desired_power_state | string | running or stopped, as last requested |
guest_agent | boolean | |
guest_os | VMGuestOSOut (nullable) | |
held_reason | string (nullable) | Set while TebibHost holds the VM for abuse review: it can't be started |
hostname | string | |
id | string | |
image | string | |
instance_type | string | |
last_action | VMLastActionOut (nullable) | |
memory_mib | integer | |
name | string | |
power_state | string | As observed: running, stopped, starting, stopping, paused, error, unknown |
project_id | string | |
restart_required | boolean | |
security_group_ids | array of string | |
ssh_key_ids | array of string | |
state | string | |
status_message | string | |
stop_reason | "guest" | "abuse" | "balance" | "suspended" (nullable) | guest: the VM was shut down from inside (power_state stopped although desired_power_state is running); it stays stopped until started. abuse: TebibHost stopped it after detecting abuse (see held_reason; contact abuse@tebibhost.com). balance: TebibHost stopped it because the balance ran out; start it after a top-up. suspended: the organization is suspended |
subnet_id | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vcpus | integer | |
volumes | array of VolumeAttachmentOut |
GET/api/v1/projects/{project_id}/vms/{vm_id}
Get Vm (getVm)
IAM action: compute:DescribeVM
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id required | path | string |
Responses
200OK (VMOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VMOut
| Field | Type | Description |
|---|---|---|
addresses | array of VMAddressOut | |
boot_volume_id | string (nullable) | |
created_at | string (date-time) | |
description | string | |
desired_power_state | string | running or stopped, as last requested |
guest_agent | boolean | |
guest_os | VMGuestOSOut (nullable) | |
held_reason | string (nullable) | Set while TebibHost holds the VM for abuse review: it can't be started |
hostname | string | |
id | string | |
image | string | |
instance_type | string | |
last_action | VMLastActionOut (nullable) | |
memory_mib | integer | |
name | string | |
power_state | string | As observed: running, stopped, starting, stopping, paused, error, unknown |
project_id | string | |
restart_required | boolean | |
security_group_ids | array of string | |
ssh_key_ids | array of string | |
state | string | |
status_message | string | |
stop_reason | "guest" | "abuse" | "balance" | "suspended" (nullable) | guest: the VM was shut down from inside (power_state stopped although desired_power_state is running); it stays stopped until started. abuse: TebibHost stopped it after detecting abuse (see held_reason; contact abuse@tebibhost.com). balance: TebibHost stopped it because the balance ran out; start it after a top-up. suspended: the organization is suspended |
subnet_id | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vcpus | integer | |
volumes | array of VolumeAttachmentOut |
PATCH/api/v1/projects/{project_id}/vms/{vm_id}
Update Vm (updateVm)
IAM action: compute:UpdateVM
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id required | path | string |
Request body (JSON, VMPatch)
| Field | Type | Description |
|---|---|---|
description | string (nullable) | |
tags | object (nullable) |
Responses
200OK (VMOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VMOut
| Field | Type | Description |
|---|---|---|
addresses | array of VMAddressOut | |
boot_volume_id | string (nullable) | |
created_at | string (date-time) | |
description | string | |
desired_power_state | string | running or stopped, as last requested |
guest_agent | boolean | |
guest_os | VMGuestOSOut (nullable) | |
held_reason | string (nullable) | Set while TebibHost holds the VM for abuse review: it can't be started |
hostname | string | |
id | string | |
image | string | |
instance_type | string | |
last_action | VMLastActionOut (nullable) | |
memory_mib | integer | |
name | string | |
power_state | string | As observed: running, stopped, starting, stopping, paused, error, unknown |
project_id | string | |
restart_required | boolean | |
security_group_ids | array of string | |
ssh_key_ids | array of string | |
state | string | |
status_message | string | |
stop_reason | "guest" | "abuse" | "balance" | "suspended" (nullable) | guest: the VM was shut down from inside (power_state stopped although desired_power_state is running); it stays stopped until started. abuse: TebibHost stopped it after detecting abuse (see held_reason; contact abuse@tebibhost.com). balance: TebibHost stopped it because the balance ran out; start it after a top-up. suspended: the organization is suspended |
subnet_id | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vcpus | integer | |
volumes | array of VolumeAttachmentOut |
DELETE/api/v1/projects/{project_id}/vms/{vm_id}
Delete Vm (deleteVm)
Delete the VM. Volumes with delete_on_termination (the boot disk by default) go with it; the others are detached and kept. Its snapshot schedules are deleted; its snapshots are kept until deleted.
IAM action: compute:DeleteVM
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id required | path | string |
Responses
202Accepted (VMOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VMOut
| Field | Type | Description |
|---|---|---|
addresses | array of VMAddressOut | |
boot_volume_id | string (nullable) | |
created_at | string (date-time) | |
description | string | |
desired_power_state | string | running or stopped, as last requested |
guest_agent | boolean | |
guest_os | VMGuestOSOut (nullable) | |
held_reason | string (nullable) | Set while TebibHost holds the VM for abuse review: it can't be started |
hostname | string | |
id | string | |
image | string | |
instance_type | string | |
last_action | VMLastActionOut (nullable) | |
memory_mib | integer | |
name | string | |
power_state | string | As observed: running, stopped, starting, stopping, paused, error, unknown |
project_id | string | |
restart_required | boolean | |
security_group_ids | array of string | |
ssh_key_ids | array of string | |
state | string | |
status_message | string | |
stop_reason | "guest" | "abuse" | "balance" | "suspended" (nullable) | guest: the VM was shut down from inside (power_state stopped although desired_power_state is running); it stays stopped until started. abuse: TebibHost stopped it after detecting abuse (see held_reason; contact abuse@tebibhost.com). balance: TebibHost stopped it because the balance ran out; start it after a top-up. suspended: the organization is suspended |
subnet_id | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vcpus | integer | |
volumes | array of VolumeAttachmentOut |
GET/api/v1/projects/{project_id}/vms/{vm_id}/activity
VM activity (listVmActivity)
Audit events for this VM (who did what, when), newest first.
IAM action: compute:ListVMActivity
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id required | path | string | |
limit | query | integer | |
cursor | query | string (nullable) |
Responses
200OK (VMActivityPage)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VMActivityPage
| Field | Type | Description |
|---|---|---|
items | array of VMActivityEventOut | |
next_cursor | string (nullable) |
POST/api/v1/projects/{project_id}/vms/{vm_id}/console
Create Console Ticket (createConsoleTicket)
A one-time websocket URL for the VM's serial or VNC console, valid for 60 s.
IAM action: compute:ConnectConsole
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id required | path | string |
Request body (JSON, VMConsoleIn)
| Field | Type | Description |
|---|---|---|
kind | "serial" | "vnc" | Default: "serial". |
Responses
201Created (VMConsoleOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VMConsoleOut
| Field | Type | Description |
|---|---|---|
expires_at | string (date-time) | |
kind | string | |
url | string | Open a websocket to this URL within expires_at |
GET/api/v1/projects/{project_id}/vms/{vm_id}/metrics
VM metrics (getVmMetrics)
CPU, memory, network and disk usage over a window. Series are empty (all null) while the VM is stopped. 503 MetricsUnavailable when the metrics store can't answer; retry later.
IAM action: compute:GetVMMetrics
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id required | path | string | |
window | query | "1h" | "6h" | "24h" | "7d" |
Responses
200OK (VMMetricsOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VMMetricsOut
| Field | Type | Description |
|---|---|---|
end | string (date-time) | |
memory_bytes | integer | |
series | array of MetricSeriesOut | |
start | string (date-time) | |
step_seconds | integer | |
timestamps | array of integer | Unix seconds, shared by every series |
vcpus | integer | |
window | "1h" | "6h" | "24h" | "7d" |
POST/api/v1/projects/{project_id}/vms/{vm_id}/reboot
Reboot Vm (rebootVm)
IAM action: compute:RebootVM
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id required | path | string |
Request body (JSON, RebootVMIn)
| Field | Type | Description |
|---|---|---|
hard | boolean | Power-cycle instead of asking the guest to reboot (ACPI/guest agent) Default: false. |
Responses
202Accepted (VMOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VMOut
| Field | Type | Description |
|---|---|---|
addresses | array of VMAddressOut | |
boot_volume_id | string (nullable) | |
created_at | string (date-time) | |
description | string | |
desired_power_state | string | running or stopped, as last requested |
guest_agent | boolean | |
guest_os | VMGuestOSOut (nullable) | |
held_reason | string (nullable) | Set while TebibHost holds the VM for abuse review: it can't be started |
hostname | string | |
id | string | |
image | string | |
instance_type | string | |
last_action | VMLastActionOut (nullable) | |
memory_mib | integer | |
name | string | |
power_state | string | As observed: running, stopped, starting, stopping, paused, error, unknown |
project_id | string | |
restart_required | boolean | |
security_group_ids | array of string | |
ssh_key_ids | array of string | |
state | string | |
status_message | string | |
stop_reason | "guest" | "abuse" | "balance" | "suspended" (nullable) | guest: the VM was shut down from inside (power_state stopped although desired_power_state is running); it stays stopped until started. abuse: TebibHost stopped it after detecting abuse (see held_reason; contact abuse@tebibhost.com). balance: TebibHost stopped it because the balance ran out; start it after a top-up. suspended: the organization is suspended |
subnet_id | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vcpus | integer | |
volumes | array of VolumeAttachmentOut |
POST/api/v1/projects/{project_id}/vms/{vm_id}/resize
Resize Vm (resizeVm)
Change the instance type of a stopped VM (offline resize, plan: Resize).
IAM action: compute:ResizeVM
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id required | path | string |
Request body (JSON, ResizeVMIn)
| Field | Type | Description |
|---|---|---|
instance_type required | string |
Responses
202Accepted (VMOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VMOut
| Field | Type | Description |
|---|---|---|
addresses | array of VMAddressOut | |
boot_volume_id | string (nullable) | |
created_at | string (date-time) | |
description | string | |
desired_power_state | string | running or stopped, as last requested |
guest_agent | boolean | |
guest_os | VMGuestOSOut (nullable) | |
held_reason | string (nullable) | Set while TebibHost holds the VM for abuse review: it can't be started |
hostname | string | |
id | string | |
image | string | |
instance_type | string | |
last_action | VMLastActionOut (nullable) | |
memory_mib | integer | |
name | string | |
power_state | string | As observed: running, stopped, starting, stopping, paused, error, unknown |
project_id | string | |
restart_required | boolean | |
security_group_ids | array of string | |
ssh_key_ids | array of string | |
state | string | |
status_message | string | |
stop_reason | "guest" | "abuse" | "balance" | "suspended" (nullable) | guest: the VM was shut down from inside (power_state stopped although desired_power_state is running); it stays stopped until started. abuse: TebibHost stopped it after detecting abuse (see held_reason; contact abuse@tebibhost.com). balance: TebibHost stopped it because the balance ran out; start it after a top-up. suspended: the organization is suspended |
subnet_id | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vcpus | integer | |
volumes | array of VolumeAttachmentOut |
POST/api/v1/projects/{project_id}/vms/{vm_id}/restore
Restore Vm (restoreVm)
Roll the VM's disks back to a snapshot. The VM must be stopped; it stays stopped.
IAM action: compute:RestoreSnapshot
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id required | path | string |
Request body (JSON, RestoreVMIn)
| Field | Type | Description |
|---|---|---|
snapshot_id required | string |
Responses
202Accepted (VMOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VMOut
| Field | Type | Description |
|---|---|---|
addresses | array of VMAddressOut | |
boot_volume_id | string (nullable) | |
created_at | string (date-time) | |
description | string | |
desired_power_state | string | running or stopped, as last requested |
guest_agent | boolean | |
guest_os | VMGuestOSOut (nullable) | |
held_reason | string (nullable) | Set while TebibHost holds the VM for abuse review: it can't be started |
hostname | string | |
id | string | |
image | string | |
instance_type | string | |
last_action | VMLastActionOut (nullable) | |
memory_mib | integer | |
name | string | |
power_state | string | As observed: running, stopped, starting, stopping, paused, error, unknown |
project_id | string | |
restart_required | boolean | |
security_group_ids | array of string | |
ssh_key_ids | array of string | |
state | string | |
status_message | string | |
stop_reason | "guest" | "abuse" | "balance" | "suspended" (nullable) | guest: the VM was shut down from inside (power_state stopped although desired_power_state is running); it stays stopped until started. abuse: TebibHost stopped it after detecting abuse (see held_reason; contact abuse@tebibhost.com). balance: TebibHost stopped it because the balance ran out; start it after a top-up. suspended: the organization is suspended |
subnet_id | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vcpus | integer | |
volumes | array of VolumeAttachmentOut |
PUT/api/v1/projects/{project_id}/vms/{vm_id}/security-groups
Set Vm Security Groups (setVmSecurityGroups)
Replace the VM's security groups (same VPC). Applies to a running VM within seconds.
IAM action: compute:SetVMSecurityGroups
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id required | path | string |
Request body (JSON, VMSecurityGroupsIn)
| Field | Type | Description |
|---|---|---|
security_group_ids required | array of string |
Responses
202Accepted (VMOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VMOut
| Field | Type | Description |
|---|---|---|
addresses | array of VMAddressOut | |
boot_volume_id | string (nullable) | |
created_at | string (date-time) | |
description | string | |
desired_power_state | string | running or stopped, as last requested |
guest_agent | boolean | |
guest_os | VMGuestOSOut (nullable) | |
held_reason | string (nullable) | Set while TebibHost holds the VM for abuse review: it can't be started |
hostname | string | |
id | string | |
image | string | |
instance_type | string | |
last_action | VMLastActionOut (nullable) | |
memory_mib | integer | |
name | string | |
power_state | string | As observed: running, stopped, starting, stopping, paused, error, unknown |
project_id | string | |
restart_required | boolean | |
security_group_ids | array of string | |
ssh_key_ids | array of string | |
state | string | |
status_message | string | |
stop_reason | "guest" | "abuse" | "balance" | "suspended" (nullable) | guest: the VM was shut down from inside (power_state stopped although desired_power_state is running); it stays stopped until started. abuse: TebibHost stopped it after detecting abuse (see held_reason; contact abuse@tebibhost.com). balance: TebibHost stopped it because the balance ran out; start it after a top-up. suspended: the organization is suspended |
subnet_id | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vcpus | integer | |
volumes | array of VolumeAttachmentOut |
POST/api/v1/projects/{project_id}/vms/{vm_id}/start
Start Vm (startVm)
Start the VM, also after it was shut down from inside the guest.
IAM action: compute:StartVM
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id required | path | string |
Responses
202Accepted (VMOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VMOut
| Field | Type | Description |
|---|---|---|
addresses | array of VMAddressOut | |
boot_volume_id | string (nullable) | |
created_at | string (date-time) | |
description | string | |
desired_power_state | string | running or stopped, as last requested |
guest_agent | boolean | |
guest_os | VMGuestOSOut (nullable) | |
held_reason | string (nullable) | Set while TebibHost holds the VM for abuse review: it can't be started |
hostname | string | |
id | string | |
image | string | |
instance_type | string | |
last_action | VMLastActionOut (nullable) | |
memory_mib | integer | |
name | string | |
power_state | string | As observed: running, stopped, starting, stopping, paused, error, unknown |
project_id | string | |
restart_required | boolean | |
security_group_ids | array of string | |
ssh_key_ids | array of string | |
state | string | |
status_message | string | |
stop_reason | "guest" | "abuse" | "balance" | "suspended" (nullable) | guest: the VM was shut down from inside (power_state stopped although desired_power_state is running); it stays stopped until started. abuse: TebibHost stopped it after detecting abuse (see held_reason; contact abuse@tebibhost.com). balance: TebibHost stopped it because the balance ran out; start it after a top-up. suspended: the organization is suspended |
subnet_id | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vcpus | integer | |
volumes | array of VolumeAttachmentOut |
POST/api/v1/projects/{project_id}/vms/{vm_id}/stop
Stop Vm (stopVm)
Graceful shutdown (ACPI); KubeVirt powers the VM off if the guest ignores it.
IAM action: compute:StopVM
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id required | path | string |
Responses
202Accepted (VMOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VMOut
| Field | Type | Description |
|---|---|---|
addresses | array of VMAddressOut | |
boot_volume_id | string (nullable) | |
created_at | string (date-time) | |
description | string | |
desired_power_state | string | running or stopped, as last requested |
guest_agent | boolean | |
guest_os | VMGuestOSOut (nullable) | |
held_reason | string (nullable) | Set while TebibHost holds the VM for abuse review: it can't be started |
hostname | string | |
id | string | |
image | string | |
instance_type | string | |
last_action | VMLastActionOut (nullable) | |
memory_mib | integer | |
name | string | |
power_state | string | As observed: running, stopped, starting, stopping, paused, error, unknown |
project_id | string | |
restart_required | boolean | |
security_group_ids | array of string | |
ssh_key_ids | array of string | |
state | string | |
status_message | string | |
stop_reason | "guest" | "abuse" | "balance" | "suspended" (nullable) | guest: the VM was shut down from inside (power_state stopped although desired_power_state is running); it stays stopped until started. abuse: TebibHost stopped it after detecting abuse (see held_reason; contact abuse@tebibhost.com). balance: TebibHost stopped it because the balance ran out; start it after a top-up. suspended: the organization is suspended |
subnet_id | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vcpus | integer | |
volumes | array of VolumeAttachmentOut |
GET/api/v1/projects/{project_id}/volumes
List Volumes (listVolumes)
IAM action: compute:DescribeVolume
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
vm_id | query | string (nullable) | |
limit | query | integer (nullable) | |
cursor | query | string (nullable) |
Responses
200OK (Page_VolumeOut_)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of Page_VolumeOut_
| Field | Type | Description |
|---|---|---|
items | array of VolumeOut | |
next_cursor | string (nullable) |
POST/api/v1/projects/{project_id}/volumes
Create Volume (createVolume)
IAM action: compute:CreateVolume
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string |
Request body (JSON, VolumeIn)
| Field | Type | Description |
|---|---|---|
delete_on_termination | boolean | Default: false. |
description | string | Default: "". |
name required | string | |
size_gib required | integer | |
tags | object | |
vm_id | string (nullable) | Attach to this VM once created |
Responses
202Accepted (VolumeOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VolumeOut
| Field | Type | Description |
|---|---|---|
boot | boolean | |
created_at | string (date-time) | |
delete_on_termination | boolean | |
description | string | |
id | string | |
name | string | |
project_id | string | |
size_gib | integer | |
source_image | string (nullable) | |
state | string | |
status_message | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string (nullable) |
GET/api/v1/projects/{project_id}/volumes/{volume_id}
Get Volume (getVolume)
IAM action: compute:DescribeVolume
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
volume_id required | path | string |
Responses
200OK (VolumeOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VolumeOut
| Field | Type | Description |
|---|---|---|
boot | boolean | |
created_at | string (date-time) | |
delete_on_termination | boolean | |
description | string | |
id | string | |
name | string | |
project_id | string | |
size_gib | integer | |
source_image | string (nullable) | |
state | string | |
status_message | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string (nullable) |
PATCH/api/v1/projects/{project_id}/volumes/{volume_id}
Update Volume (updateVolume)
IAM action: compute:UpdateVolume
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
volume_id required | path | string |
Request body (JSON, VolumePatch)
| Field | Type | Description |
|---|---|---|
delete_on_termination | boolean (nullable) | |
description | string (nullable) | |
tags | object (nullable) |
Responses
200OK (VolumeOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VolumeOut
| Field | Type | Description |
|---|---|---|
boot | boolean | |
created_at | string (date-time) | |
delete_on_termination | boolean | |
description | string | |
id | string | |
name | string | |
project_id | string | |
size_gib | integer | |
source_image | string (nullable) | |
state | string | |
status_message | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string (nullable) |
DELETE/api/v1/projects/{project_id}/volumes/{volume_id}
Delete Volume (deleteVolume)
IAM action: compute:DeleteVolume
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
volume_id required | path | string |
Responses
202Accepted (VolumeOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VolumeOut
| Field | Type | Description |
|---|---|---|
boot | boolean | |
created_at | string (date-time) | |
delete_on_termination | boolean | |
description | string | |
id | string | |
name | string | |
project_id | string | |
size_gib | integer | |
source_image | string (nullable) | |
state | string | |
status_message | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string (nullable) |
POST/api/v1/projects/{project_id}/volumes/{volume_id}/attach
Attach Volume (attachVolume)
IAM action: compute:AttachVolume
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
volume_id required | path | string |
Request body (JSON, AttachVolumeIn)
| Field | Type | Description |
|---|---|---|
vm_id required | string |
Responses
202Accepted (VolumeOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VolumeOut
| Field | Type | Description |
|---|---|---|
boot | boolean | |
created_at | string (date-time) | |
delete_on_termination | boolean | |
description | string | |
id | string | |
name | string | |
project_id | string | |
size_gib | integer | |
source_image | string (nullable) | |
state | string | |
status_message | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string (nullable) |
POST/api/v1/projects/{project_id}/volumes/{volume_id}/detach
Detach Volume (detachVolume)
Unplug a data volume (live if the VM runs). Unmount it in the guest first.
IAM action: compute:DetachVolume
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
volume_id required | path | string |
Responses
202Accepted (VolumeOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VolumeOut
| Field | Type | Description |
|---|---|---|
boot | boolean | |
created_at | string (date-time) | |
delete_on_termination | boolean | |
description | string | |
id | string | |
name | string | |
project_id | string | |
size_gib | integer | |
source_image | string (nullable) | |
state | string | |
status_message | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string (nullable) |
POST/api/v1/projects/{project_id}/volumes/{volume_id}/resize
Resize Volume (resizeVolume)
Grow a volume, also while attached to a running VM (the guest sees the new size; grow the partition/filesystem inside it). Volumes never shrink.
IAM action: compute:ResizeVolume
| Parameter | In | Type | Description |
|---|---|---|---|
project_id required | path | string | |
volume_id required | path | string |
Request body (JSON, ResizeVolumeIn)
| Field | Type | Description |
|---|---|---|
size_gib required | integer |
Responses
202Accepted (VolumeOut)400Invalid request (ErrorOut)401Not authenticated (ErrorOut)403Access denied: the error names the action and the resource (ErrorOut)404Not found (also: the resource belongs to another organization) (ErrorOut)409Conflict or quota exceeded (ErrorOut)422Idempotency key reused for a different request (ErrorOut)429Rate limited (ErrorOut)
Fields of VolumeOut
| Field | Type | Description |
|---|---|---|
boot | boolean | |
created_at | string (date-time) | |
delete_on_termination | boolean | |
description | string | |
id | string | |
name | string | |
project_id | string | |
size_gib | integer | |
source_image | string (nullable) | |
state | string | |
status_message | string | |
tags | object | |
trn | string | |
updated_at | string (date-time) | |
vm_id | string (nullable) |