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.
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.
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.