Sauvegarder toutes les données dans un système de backup
Objectif : répliquer régulièrement les données accessibles via l'API Batis dans un système interne de backup.
Parcours
- Récupérer les opérations par pagination.
- Pour chaque opération, récupérer les dossiers.
- Pour chaque dossier, récupérer les documents.
- Récupérer les fournisseurs avec
includeAdministrativeDocuments=truesi le backup couvre ce périmètre. - Télécharger les fichiers associés pour leur archivage.
- Stocker les données avec une stratégie d'incrémental.
Synchronisation incrémentale
Les endpoints de liste exposent le paramètre updatedSince. Il permet de récupérer uniquement les éléments créés ou modifiés depuis une date donnée.
Pour construire un backup incrémental, conservez une date de synchronisation par ressource :
- opérations ;
- dossiers ;
- documents ;
- fournisseurs ;
Après chaque synchronisation réussie, stockez le plus grand updatedAt traité pour la ressource concernée. Cette valeur devient le prochain updatedSince.
Pour les opérations, cet horodatage tient aussi compte du groupe et de son entité légale. Le filtre est inclusif : dédupliquez par id, conservez le même filtre pendant le parcours et avancez la date de synchronisation uniquement après avoir traité toutes les pages. La pagination ne constitue pas un instantané global. Les suppressions ne sont pas exposées comme événements : prévoyez une réconciliation complète. Voir Pagination et erreurs.
Points d'attention
- Utiliser
metadata.limitetmetadata.offsetpour parcourir les listes. - Appliquer
updatedSincesur chaque ressource synchronisable pour récupérer les différentiels. - Conserver les identifiants Batis pour éviter les doublons.
- Ne pas traiter les clés de fichier comme des URLs permanentes.
- Télécharger avec
GET /document-file/{fileKey}/downloadet archiver les octets après un transfert réussi. Les anciennes pièces administratives cessent d’être accessibles lorsqu’elles ne sont plus courantes ; une clé ne garantit pas un instantané immuable du fichier.
Endpoints utiles
GET /operation?updatedSince={lastOperationSync}
GET /folder?operationId={operationId}&updatedSince={lastFolderSync}
GET /document?folderId={folderId}&updatedSince={lastDocumentSync}
GET /supplier?updatedSince={lastSupplierSync}