Passer au contenu principal
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)
Les snapshots existent en trois portées : par application, par base de données et à l’échelle du compte.

La struct Snapshot

Les méthodes de listage renvoient []squarecloud.Snapshot :
ChampTypeDescription
NamestringNom de l’objet snapshot
SizeintTaille en octets
ModifiedstringDate de dernière modification
KeystringChaîne de requête signée utilisée pour construire l’URL de téléchargement

Snapshots d’applications

Lister

snapshots, err := api.GetApplicationSnapshots("abc123def456abc123def456")
if err != nil {
	panic(err)
}

for _, snap := range snapshots {
	fmt.Println(snap.Name, snap.Size, snap.Modified)
}

Créer

api.CreateApplicationSnapshot(appID) déclenche un nouveau snapshot et renvoie un squarecloud.SnapshotCreated avec l’URL de téléchargement signée.
created, err := api.CreateApplicationSnapshot("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(created.URL) // URL de téléchargement signée
fmt.Println(created.Key)

Restaurer

api.RestoreApplicationSnapshot(appID, snapshotID, versionID) ramène l’application à une version antérieure d’un snapshot.
err := api.RestoreApplicationSnapshot(
	"abc123def456abc123def456",
	"00000000-0000-4000-8000-000000000000",
	"abc123def4567890",
)
if err != nil {
	panic(err)
}

Snapshots de bases de données

La portée base de données reflète celle des applications :
snapshots, err := api.GetDatabaseSnapshots("abc123def456abc123def456")
if err != nil {
	panic(err)
}

created, err := api.CreateDatabaseSnapshot("abc123def456abc123def456")
if err != nil {
	panic(err)
}
fmt.Println(created.URL)

err = api.RestoreDatabaseSnapshot(
	"abc123def456abc123def456",
	"00000000-0000-4000-8000-000000000000_mongo",
	"v1",
)
if err != nil {
	panic(err)
}

Lister les snapshots à l’échelle du compte

api.UserSnapshots(scope) renvoie tous les snapshots que vous possédez à travers toutes vos applications ou bases de données. La portée est l’une des constantes squarecloud.SnapshotScope* :
appSnapshots, err := api.UserSnapshots(squarecloud.SnapshotScopeApplications)
if err != nil {
	panic(err)
}

dbSnapshots, err := api.UserSnapshots(squarecloud.SnapshotScopeDatabases)
if err != nil {
	panic(err)
}
Le listage des snapshots à l’échelle du compte nécessite un plan payant actif. Chaque plan a également un quota quotidien de snapshots — une fois épuisé, la création échoue avec le code DAILY_SNAPSHOTS_LIMIT_REACHED, distinct de l’erreur générique de limitation KEEP_CALM.