ByCloud Docs
GuidesCLIAPISDK

Go SDK

Block Storage

Volumes, snapshots, and backups

20 methods

GET

ListBackups()

List backups

Parameters

limit

integer

- Maximum number of items to return

marker

string

- ID of the last item from the previous page (for pagination)

name

string

- Filter by name (exact match or prefix with *)

status

string

- Filter by status

volume_id

string

- Filter by volume ID

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.ListBackups(ctx)
if err != nil {
panic(err)
}
fmt.Println(result)
}
POST

CreateBackup()

Create backup

Parameters

volume_id

string

required

- Volume to backup

name

string

description

string

container

string

- Backup container

incremental

boolean

- Create incremental backup

force

boolean

- Force backup even if volume is attached

snapshot_id

string

- Create backup from snapshot instead of volume

metadata

object

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.CreateBackup(ctx, &bycloud.CreateBackupParams{
Volume_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
GET

GetBackup()

Get backup

Parameters

backup_id

string

required

- Backup ID

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.GetBackup(ctx, &bycloud.GetBackupParams{
Backup_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
DELETE

DeleteBackup()

Delete backup

Parameters

backup_id

string

required

- Backup ID

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.DeleteBackup(ctx, &bycloud.DeleteBackupParams{
Backup_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
POST

RestoreBackup()

Restore backup

Parameters

backup_id

string

required

- Backup ID

volume_id

string

- Existing volume to restore to (creates new volume if omitted)

name

string

- Name for new volume (if not restoring to existing)

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.RestoreBackup(ctx, &bycloud.RestoreBackupParams{
Backup_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
GET

ListSnapshots()

List snapshots

Parameters

limit

integer

- Maximum number of items to return

marker

string

- ID of the last item from the previous page (for pagination)

name

string

- Filter by name (exact match or prefix with *)

status

string

- Filter by status

volume_id

string

- Filter by volume ID

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.ListSnapshots(ctx)
if err != nil {
panic(err)
}
fmt.Println(result)
}
POST

CreateSnapshot()

Create snapshot

Parameters

volume_id

string

required

- Volume to snapshot

name

string

description

string

force

boolean

- Force snapshot even if volume is attached

metadata

object

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.CreateSnapshot(ctx, &bycloud.CreateSnapshotParams{
Volume_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
GET

GetSnapshot()

Get snapshot

Parameters

snapshot_id

string

required

- Snapshot ID

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.GetSnapshot(ctx, &bycloud.GetSnapshotParams{
Snapshot_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
PATCH

UpdateSnapshot()

Update snapshot

Parameters

snapshot_id

string

required

- Snapshot ID

name

string

description

string

metadata

object

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.UpdateSnapshot(ctx, &bycloud.UpdateSnapshotParams{
Snapshot_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
DELETE

DeleteSnapshot()

Delete snapshot

Parameters

snapshot_id

string

required

- Snapshot ID

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.DeleteSnapshot(ctx, &bycloud.DeleteSnapshotParams{
Snapshot_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
GET

ListVolumeTypes()

List volume types

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.ListVolumeTypes(ctx)
if err != nil {
panic(err)
}
fmt.Println(result)
}
GET

GetVolumeType()

Get volume type

Parameters

volume_type_id

string

required

- Volume Type ID

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.GetVolumeType(ctx, &bycloud.GetVolumeTypeParams{
Volume_type_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
GET

ListVolumes()

List volumes

Parameters

limit

integer

- Maximum number of items to return

marker

string

- ID of the last item from the previous page (for pagination)

name

string

- Filter by name (exact match or prefix with *)

status

string

- Filter by status

bootable

boolean

- Filter by bootable status

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.ListVolumes(ctx)
if err != nil {
panic(err)
}
fmt.Println(result)
}
POST

CreateVolume()

Create volume

Parameters

name

string

description

string

size

integer

required

- Size in GB

volume_type

string

- Volume type name or ID

snapshot_id

string

- Create volume from snapshot

source_volume_id

string

- Clone from existing volume

image_id

string

- Create volume from image

multiattach

boolean

metadata

object

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.CreateVolume(ctx, &bycloud.CreateVolumeParams{
Size: 100,
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
GET

GetVolume()

Get volume

Parameters

volume_id

string

required

- Volume ID

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.GetVolume(ctx, &bycloud.GetVolumeParams{
Volume_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
PATCH

UpdateVolume()

Update volume

Parameters

volume_id

string

required

- Volume ID

name

string

description

string

metadata

object

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.UpdateVolume(ctx, &bycloud.UpdateVolumeParams{
Volume_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
DELETE

DeleteVolume()

Delete volume

Parameters

volume_id

string

required

- Volume ID

force

boolean

- Force delete even if volume is in use

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.DeleteVolume(ctx, &bycloud.DeleteVolumeParams{
Volume_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
POST

AttachVolume()

Attach volume

Parameters

volume_id

string

required

- Volume ID

instance_id

string

required

- Instance to attach to

device

string

- Device name (e.g., /dev/vdb). Auto-assigned if omitted.

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.AttachVolume(ctx, &bycloud.AttachVolumeParams{
Volume_id: "550e8400-e29b-41d4-a716-446655440000",
Instance_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
POST

DetachVolume()

Detach volume

Parameters

volume_id

string

required

- Volume ID

instance_id

string

required

- Instance to detach from

force

boolean

- Force detach even if instance is running

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.DetachVolume(ctx, &bycloud.DetachVolumeParams{
Volume_id: "550e8400-e29b-41d4-a716-446655440000",
Instance_id: "550e8400-e29b-41d4-a716-446655440000",
})
if err != nil {
panic(err)
}
fmt.Println(result)
}
POST

ExtendVolume()

Extend volume

Parameters

volume_id

string

required

- Volume ID

new_size

integer

required

- New size in GB (must be larger than current size)

Example

package main
import (
"context"
"fmt"
"github.com/bycoded/bycloud-go"
)
func main() {
client := bycloud.New(bycloud.WithToken("YOUR_ACCESS_TOKEN"))
ctx := context.Background()
result, err := client.BlockStorage.ExtendVolume(ctx, &bycloud.ExtendVolumeParams{
Volume_id: "550e8400-e29b-41d4-a716-446655440000",
New_size: 10,
})
if err != nil {
panic(err)
}
fmt.Println(result)
}