Aller au contenu

Sauvegardes des sites

30 routes. Chemins relatifs à https://api.nexus-engine.eu/api/v1.

GET /backup-policy Owner et Admin

La règle de l’entreprise : cadence, heure, rétention, chiffrement.

RéponseBackupPolicyDto
Note`prochaineExecution` est calculée par le serveur, dans le fuseau de l’entreprise.
PUT /backup-policy Owner et Admin

Fixe la cadence et la durée de conservation.

Corpsenabled, everyDays (1 = tous les jours), hourLocal (0-23), timezone, retentionDays, keepMinimum, defaultCode, defaultDb, defaultExcludes (liste), agePublicKey
RéponseBackupPolicyDto
NoteUne clé `age` invalide est refusée à l’enregistrement, pas à 2 h du matin.
GET /backup-destinations Owner et Admin

Les dépôts déclarés. Un seul est actif ; les secrets ne sortent jamais.

RéponseBackupDestinationDto[]
POST /backup-destinations Owner et Admin

Déclare un dépôt (serveur SFTP ou compte Dropbox). Le premier devient actif.

Corpskind (SFTP, DROPBOX), label, basePath, host, port, username, secret
RéponseBackupDestinationDto
PATCH /backup-destinations/:id Owner et Admin

Modifie un dépôt.

Corpsmêmes champs, tous facultatifs ; resetHostKey oublie la clé d’hôte retenue
RéponseBackupDestinationDto
NoteChanger d’hôte oublie l’empreinte : sinon la sauvegarde échouerait chaque nuit.
DELETE /backup-destinations/:id Owner et Admin

Supprime un dépôt qui ne porte plus aucune archive.

NoteRefusé tant que des sauvegardes y vivent : les désactiver, plutôt que perdre leur trace.
POST /backup-destinations/:id/activate Owner et Admin

Désigne le dépôt qui reçoit les archives ; les autres sont désactivés.

RéponseBackupDestinationDto[]
POST /backup-destinations/:id/test Owner et Admin

Essai d’écriture réel : un témoin est déposé, relu, puis effacé.

RéponseBackupDestinationDto
NoteUn simple test de connexion laisserait passer le cas le plus fréquent — joignable, mais sans droit d’écriture.
POST /backup-destinations/:id/dropbox/start Owner et Admin

Ouvre l’autorisation Dropbox et rend l’adresse à visiter.

Réponse{ url, redirectUri }
NoteL’application Dropbox appartient à l’entreprise : la déclarer d’abord.
POST /backup-destinations/:id/dropbox/unlink Owner et Admin

Délie le compte Dropbox : le jeton est effacé.

RéponseBackupDestinationDto
GET /backup-dropbox-app Owner et Admin

L’application Dropbox de l’entreprise, sans son secret.

RéponseDropboxAppDto
PUT /backup-dropbox-app Owner et Admin

Enregistre la clé et le secret de l’application Dropbox de l’entreprise.

CorpsappKey, appSecret (absent = inchangé, vide = effacé)
RéponseDropboxAppDto
NoteLe secret ne ressort jamais : seul le serveur mène le flux d’autorisation.
GET /backup-runs

Les campagnes de sauvegarde, de la plus récente à la plus ancienne.

Requêtelimit (50 au plus, défaut 20), champs (complet, sites, resume), curseur (la valeur `suivant` de la page précédente)
RéponseBackupRunDto[] ; avec `champs` ou `curseur` : PageBackupRunsDto — { items, suivant } (suivant nul à la fin)
NoteUn développeur ne voit que les lignes des sites qui lui sont confiés. Une campagne porte une ligne par site et ses étapes : plusieurs centaines de Ko pour deux campagnes. `champs=resume` rend les décomptes et les seuls échecs (20 au plus, le reste compté dans `echecsNonListes`), `champs=sites` une ligne allégée par site (ni étapes, ni empreintes, ni chemin ; erreur bornée à 300 signes). Sans `champs` ni `curseur`, la réponse garde sa forme d’avant.
GET /backup-runs/:id

Le rapport d’une campagne, site par site.

RéponseBackupRunDto
POST /backup-runs Owner et Admin

Lance une sauvegarde tout de suite.

CorpssiteIds (facultatif : tout le parc éligible sinon), label
RéponseBackupRunDto
NoteSur une sélection explicite, l’environnement n’est pas retrié : une préproduction désignée est sauvegardée.
POST /backup-runs/:id/stop Owner et Admin

Demande l’arrêt : il est lu entre deux sites, jamais au milieu d’un transfert.

POST /backup-runs/:id/pause Owner et Admin

Suspend la campagne entre deux sites, sans perdre ce qui reste à faire.

NoteComme l’arrêt, c’est une demande ; les sites restants gardent leur état « en attente ».
POST /backup-runs/:id/resume Owner et Admin

Repart d’où la campagne s’était arrêtée.

NoteRefusé (409) si une autre campagne tourne : elles se partageraient le même lien montant.
DELETE /backup-runs/:id Owner et Admin

Supprime la campagne ET les archives qu’elle a déposées.

Réponse{ ok, differe, effacees, restantes }
NoteSur une campagne qui tourne, la suppression est différée : elle s’exécute à l’arrêt.
GET /sites/:id/backups

Les dernières sauvegardes d’un site.

Requêtelimit (50 au plus, défaut 10)
RéponseSiteBackupDto[]
GET /site-backups/:id/ouverture

Où est cette archive : adresse web (Dropbox) ou chemin (SFTP), et son contenu.

RéponseBackupOuvertureDto
NoteToujours journalisé : une archive contient la base d’un client.
GET /site-backups/:id/fichier

Télécharge un fichier de l’archive, en flux.

Requêtenom (le fichier, tel que l’ouverture le liste)
Réponseapplication/octet-stream
NoteLe serveur relaie les octets sans les poser sur son disque : le poste n’a accès ni au SFTP ni au jeton Dropbox. Le nom est vérifié CONTRE la liste du dépôt, jamais concaténé. Toujours journalisé, comme l’ouverture.
DELETE /site-backups/:id

Efface UNE archive chez le destinataire.

Réponse{ efface, deja }
NoteAdministrateur seulement. Supprime des fichiers chez un tiers, sans corbeille. La ligne reste et porte deletedAt : « effacée volontairement » et « jamais faite » ne doivent pas laisser le même état.
GET /sites/:id/backup-config

Le réglage de sauvegarde d’un site, avec le verdict : sera-t-il sauvegardé ?

RéponseSiteBackupConfigDto
PUT /sites/:id/backup-config

Règle la sauvegarde d’un site : mode, chemin, base, exclusions.

Corpsmode (AUTO, ALWAYS, NEVER), docPath, code, db, excludes (liste), dbCredentialId, dbEngine (mysql, postgres ou vide)
RéponseSiteBackupConfigDto
NoteAUTO suit l’environnement ; NEVER exclut une production, ALWAYS force une préproduction.
GET /backup-storage

Ce que le dépôt contient, ce qu’il peut contenir, et la part écrite par Nexus.

RéponseBackupStorageDto
NoteLa mesure ouvre une connexion au dépôt : elle est gardée cinq minutes. Un SFTP qui n’exécute rien rend une occupation inconnue plutôt qu’un chiffre inventé.
GET /backup-storage/repartition

Ce que pèsent les archives chez le dépositaire, site par site.

RéponseBackupRepartitionDto
NoteNe pèse que les sites VISIBLES du membre : un développeur ne voit peser que ce qu’il peut voir.
DELETE /sites/:id/backups Owner et Admin

Efface toutes les archives d’un site chez le dépositaire.

Réponse{ effacees, octets, erreurs }
NoteDestructif et sans retour : les fichiers partent du dépôt. Les lignes d’historique restent, marquées effacées.
GET /backup-freshness Owner et Admin

Le contrôle de fraîcheur : qui n’a plus de copie récente, et pourquoi les autres sont écartés.

RéponseBackupFraicheurDto
NoteLecture indépendante des campagnes : elle reste juste même si le moteur ne tourne plus.
GET /backup/dropbox/callback sans authentification

Le retour d’autorisation Dropbox. Rend une page, pas du JSON.

Requêtecode, state, error
NotePublic par nécessité : le navigateur qui revient de dropbox.com n’a pas de session. C’est l’état à usage unique qui tient ce flux.