Passer au contenu principal

API externes

Ces points de terminaison sont conçus pour être utilisés par d'autres applications et intégrations, par exemple Homepage. Ils sont exemptés de CSRF et n'utilisent pas de cookies de session.

L'authentification est facultative et désactivée par défaut. Bien que les clés soient facultatives, les clients peuvent omettre la clé ou en envoyer une : une clé valide dont la portée correspond est acceptée et enregistrée ; une mauvaise clé est ignorée et la requête se poursuit tout de même. Quand Require API keys est activé dans Clés API, envoyez la clé sous la forme ?api_key=, X-Api-Key ou Authorization: Bearer. Les clés Télécharger fonctionnent uniquement sur POST /api/upload. Les clés Lire fonctionnent uniquement sur /api/summary et /api/lastbackup*. Les clés dans la chaîne de requête apparaissent dans les journaux d'accès du reverse proxy.

Une liste d'adresses IP autorisées peut également restreindre ces routes. /api/health et /api/ping restent publics tant que les deux listes sont désactivées ; quand l'une ou l'autre des listes est activée, ils acceptent le bouclage (loopback) et les CIDR de la liste admin ou externe, et les clients hors loopback sont soumis à une limitation de débit.

Obtenir le résumé global - /api/summary​

  • Endpoint : /api/summary

  • Méthode : GET

  • Description : Récupère un résumé de toutes les opérations de sauvegarde sur tous les serveurs.

  • Réponse :

    {
    "totalServers": 3,
    "totalBackupsRuns": 9,
    "totalBackups": 9,
    "totalUploadedSize": 2397229507,
    "totalStorageUsed": 43346796938,
    "totalBackupSize": 126089687807,
    "overdueBackupsCount": 2,
    "secondsSinceLastBackup": 7200
    }
  • Réponses d'erreur :

    • 401 : Clé API manquante ou invalide lorsque les clés sont requises
    • 403 : La portée de la clé n'est pas read, ou l'IP cliente n'est pas sur la liste blanche externe
    • 429 : Limite de débit de l'API de lecture dépassée
    • 500 : Erreur du serveur lors de la récupération des données récapitulatives
  • Notes :

    • Dans la version 0.5.x, le champ totalBackupedSize a été remplacé par totalBackupSize
    • Dans la version 0.7.x, le champ totalMachines a été remplacé par totalServers
    • Le champ overdueBackupsCount affiche le nombre de sauvegardes actuellement en retard
    • Le champ secondsSinceLastBackup affiche la durée en secondes depuis la dernière sauvegarde sur tous les serveurs
    • Renvoie une réponse de secours avec des zéros si la récupération des données échoue
    • Note : Pour une utilisation interne du tableau de bord, envisagez d'utiliser /api/dashboard qui inclut ces données ainsi que des informations supplémentaires

Obtenir la dernière sauvegarde - /api/lastbackup/:serverId​

  • Endpoint : /api/lastbackup/:serverId
  • Méthode : GET
  • Description : Récupère les dernières informations de sauvegarde pour un serveur spécifique.
  • Paramètres :
    • serverId : l'identifiant du serveur (ID ou nom)
note

L'identifiant du serveur doit être encodé pour l'URL.

  • Réponse :

    {
    "server": {
    "id": "unique-server-id",
    "name": "Server Name",
    "backup_name": "Backup Name",
    "backup_id": "backup-id",
    "created_at": "2024-03-20T10:00:00Z"
    },
    "latest_backup": {
    "id": "backup-id",
    "server_id": "unique-server-id",
    "name": "Backup Name",
    "date": "2024-03-20T10:00:00Z",
    "status": "Success",
    "warnings": 0,
    "errors": 0,
    "messages": 150,
    "fileCount": 249426,
    "fileSize": 113395849938,
    "uploadedSize": 331318892,
    "duration": "00:38:31",
    "duration_seconds": 2311.6018052,
    "durationInMinutes": 38.52669675333333,
    "knownFileSize": 27203688543,
    "backup_list_count": 10,
    "messages_array": ["message1", "message2"],
    "warnings_array": ["warning1"],
    "errors_array": [],
    "available_backups": ["v1", "v2", "v3"]
    },
    "status": 200
    }
  • Réponses d'erreur :

    • 401 : Clé API manquante ou invalide lorsque les clés sont requises
    • 403 : La portée de la clé n'est pas read, ou l'IP cliente n'est pas sur la liste blanche externe
    • 404 : Serveur introuvable
    • 429 : Limite de débit de l'API de lecture dépassée
    • 500 : Erreur interne du serveur
  • Notes :

    • Dans la version 0.7.x, la clé d'objet de réponse est passée de machine à server
    • L'identifiant du serveur peut être soit l'ID soit le nom
    • Renvoie null pour latest_backup s'il n'existe aucune sauvegarde
    • Inclut des en-têtes de contrôle de cache pour empêcher la mise en cache

Obtenir les dernières sauvegardes - /api/lastbackups/:serverId​

  • Endpoint : /api/lastbackups/:serverId
  • Méthode : GET
  • Description : Récupère les dernières informations de sauvegarde pour toutes les sauvegardes configurées (par ex. « Fichiers », « Bases de données ») sur un serveur spécifique.
  • Paramètres :
    • serverId : l'identifiant du serveur (ID ou nom)
note

L'identifiant du serveur doit être encodé pour l'URL.

  • Réponse :

    {
    "server": {
    "id": "unique-server-id",
    "name": "Server Name",
    "backup_name": "Default Backup",
    "backup_id": "backup-id",
    "created_at": "2024-03-20T10:00:00Z"
    },
    "latest_backups": [
    {
    "id": "backup1",
    "server_id": "unique-server-id",
    "name": "Files",
    "date": "2024-03-20T10:00:00Z",
    "status": "Success",
    "warnings": 0,
    "errors": 0,
    "messages": 150,
    "fileCount": 249426,
    "fileSize": 113395849938,
    "uploadedSize": 331318892,
    "duration": "00:38:31",
    "duration_seconds": 2311.6018052,
    "durationInMinutes": 38.52669675333333,
    "knownFileSize": 27203688543,
    "backup_list_count": 10,
    "messages_array": "[\"message1\", \"message2\"]",
    "warnings_array": "[\"warning1\"]",
    "errors_array": "[]",
    "available_backups": ["v1", "v2", "v3"]
    },
    {
    "id": "backup2",
    "server_id": "unique-server-id",
    "name": "Databases",
    "date": "2024-03-20T11:00:00Z",
    "status": "Success",
    "warnings": 1,
    "errors": 0,
    "messages": 75,
    "fileCount": 125000,
    "fileSize": 56789012345,
    "uploadedSize": 123456789,
    "duration": "00:25:15",
    "duration_seconds": 1515.1234567,
    "durationInMinutes": 25.25205761166667,
    "knownFileSize": 12345678901,
    "backup_list_count": 5,
    "messages_array": ["message1"],
    "warnings_array": ["warning1"],
    "errors_array": [],
    "available_backups": ["v1", "v2"]
    }
    ],
    "backup_jobs_count": 2,
    "backup_names": ["Files", "Databases"],
    "status": 200
    }
  • Réponses d'erreur :

    • 401 : Clé API manquante ou invalide lorsque les clés sont requises
    • 403 : La portée de la clé n'est pas read, ou l'IP cliente n'est pas sur la liste blanche externe
    • 404 : Serveur introuvable
    • 429 : Limite de débit de l'API de lecture dépassée
    • 500 : Erreur interne du serveur
  • Notes :

    • Dans la version 0.7.x, la clé d'objet de réponse est passée de machine à server, et le champ backup_types_count a été renommé en backup_jobs_count
    • L'identifiant du serveur peut être soit l'ID soit le nom
    • Renvoie la dernière sauvegarde pour chaque tâche de sauvegarde (backup_name) que possède le serveur
    • Contrairement à /api/lastbackup/:serverId qui ne renvoie que la sauvegarde la plus récente du serveur (indépendamment de la tâche de sauvegarde)
    • Inclut des en-têtes de contrôle de cache pour empêcher la mise en cache

Télécharger les données de Sauvegarde - /api/upload​

  • Point de terminaison : /api/upload

  • Méthode : POST

  • Description : Télécharge les données d'opération de Sauvegarde pour un Serveur. Prend en charge la détection des exécutions de sauvegarde en double et envoie des Notifications.

  • Corps de la requête : JSON Envoyé par Duplicati avec les options suivantes :

    --send-http-json-urls=http://my.local.server:9666/api/upload?api_key=YOUR_UPLOAD_KEY
    --send-http-log-level=Information
    --send-http-max-log-lines=500

Sur les versions de Duplicati antérieures à 2.0.9.106, utilisez `--send-http-url` avec `--send-http-result-output-format=Json`. Consultez [Configuration du Serveur Duplicati](../installation/duplicati-server-configuration.md).

- **Réponse** :

```json
{
"success": true
}
  • Réponses d'erreur :
    • 400 : Champs requis manquants dans les sections Extra ou Data, ou MainOperation invalide
    • 401 : Clé API manquante ou invalide lorsque les clés sont requises
    • 403 : La portée de la clé n'est pas upload, ou l'IP cliente n'est pas sur la liste blanche externe
    • 409 : Données de sauvegarde en double (ignorées)
    • 413 : Le corps de la requête dépasse la limite de taille de téléchargement configurée (5 Mo par défaut)
    • 429 : Limite de débit de téléchargement ou d'échec d'authentification dépassée (Retry-After est défini)
    • 500 : Erreur du serveur lors du traitement des données de sauvegarde
  • Notes :
    • Traite uniquement les opérations de sauvegarde (MainOperation doit être "Backup")
    • Valide les champs requis dans la section Extra : machine-id, machine-name, backup-name, backup-id
    • Valide les champs requis dans la section Data : ParsedResult, BeginTime, Duration
    • Détecte automatiquement les exécutions de sauvegarde en double et renvoie un statut 409
    • Envoie des notifications après l'insertion réussie de la sauvegarde (si configuré)
    • Enregistre les données de la requête dans un fichier du répertoire data à la racine du projet en mode développement pour le débogage
    • Utilise une transaction pour la cohérence des données