Passer au contenu principal
Les snapshots remplacent l’API backup / backups de la v3. app.backup et app.backups sont toujours exportés en v4 mais ils affichent un avertissement de dépréciation et redirigent vers app.snapshots. Mettez à jour votre code pour utiliser le nouveau nom.
app.snapshots expose le SnapshotsModule.
const app = await api.applications.fetch("abc123def456abc123def456");
app.snapshots; // SnapshotsModule

Lister les snapshots

app.snapshots.list() renvoie un tableau d’instances Snapshot.
const snapshots = await app.snapshots.list();

for (const snap of snapshots) {
    console.log(snap.url);          // signed download URL (valid for 30 days)
    console.log(snap.size);         // bytes
    console.log(snap.modifiedAt);   // Date
    console.log(snap.key);          // signed query string
}
Chaque snapshot peut être téléchargé directement :
const buffer = await snapshots[0].download();

Créer un nouveau snapshot

app.snapshots.create() déclenche un nouveau snapshot et renvoie l’URL signée et la clé.
const fresh = await app.snapshots.create();
console.log(fresh.url); // valid for 30 days
console.log(fresh.key);

Télécharger en une seule étape

app.snapshots.download() crée un snapshot et le télécharge sous forme de Buffer.
import { writeFile } from "node:fs/promises";

const buffer = await app.snapshots.download();
await writeFile("./backup.zip", buffer);

Restaurer depuis un snapshot

app.snapshots.restore({ snapshotId, versionId }) restaure l’application à une version de snapshot précédente.
await app.snapshots.restore({
    snapshotId: "00000000-0000-4000-8000-000000000000",
    versionId: "abc123def4567890",
});
ChampTypeDescription
snapshotIdstringIdentifiant du snapshot (UUID v4)
versionIdstringIdentifiant de version renvoyé par list()

Lister les snapshots à l’échelle du compte

api.user.snapshots(scope) renvoie tous les snapshots que vous possédez sur l’ensemble de vos applications ou bases de données.
const appSnapshots = await api.user.snapshots("applications");
const dbSnapshots  = await api.user.snapshots("databases");
api.user.snapshots() nécessite un abonnement payant actif.