Administration
Backups sammeln - /api/backups/collect
-
Endpunkt:
/api/backups/collect -
Methode: POST
-
Beschreibung: Sammelt Sicherungsdaten direkt von einem Duplicati-Server über dessen API. Dieser Endpunkt erkennt automatisch das beste Verbindungsprotokoll (HTTPS mit SSL-Validierung, HTTPS mit selbstsignierten Zertifikaten oder HTTP als Fallback) und stellt eine Verbindung zum Duplicati-Server her, um Backup-Informationen abzurufen und in der lokalen Datenbank zu verarbeiten.
-
Authentifizierung: Erfordert eine gültige Sitzung und ein CSRF-Token
-
Anforderungstext:
{"hostname": "duplicati-server.local","port": 8200,"password": "your-password","downloadJson": false} -
Antwort:
{"success": true,"serverName": "Server Name","serverAlias": "My Server","stats": {"processed": 5,"skipped": 2,"errors": 0},"backupSettings": {"added": 2,"total": 7}} -
Fehlerantworten:
400: Ungültige Anfrageparameter oder Verbindung fehlgeschlagen500: Serverfehler während der Sicherungssammlung
-
Hinweise:
- Der Endpunkt erkennt automatisch das optimale Verbindungsprotokoll (HTTPS → HTTPS mit selbstsigniertem Zertifikat → HTTP)
- Protokollerfassungsversuche erfolgen in der Reihenfolge der Sicherheitspräferenz
- Verbindungs-Timeouts sind über Umgebungsvariablen konfigurierbar
- Protokolle sammeln Daten im Entwicklungsmodus für Debugging-Zwecke
- Stellt sicher, dass die Sicherungseinstellungen für alle Server und Sicherungen vollständig sind
- Verwendet Standardport 8200, wenn nicht angegeben
- Das erkannte Protokoll und die Server-URL werden automatisch in der Datenbank gespeichert
serverAliaswird aus der Datenbank abgerufen und kann leer sein, wenn kein Alias festgelegt ist- Das Frontend sollte
serverAlias || serverNamezu Anzeigezwecken verwenden - Unterstützt sowohl JSON-Download als auch direkte API-Sammlungsmethoden
Sicherungen bereinigen - /api/backups/cleanup
-
Endpunkt:
/api/backups/cleanup -
Methode: POST
-
Beschreibung: Löscht alte Sicherungsdaten basierend auf der Aufbewahrungsfrist. Dieser Endpunkt hilft bei der Verwaltung der Datenbankgröße, indem veraltete Sicherungsdatensätze entfernt werden, während aktuelle und wichtige Daten erhalten bleiben.
-
Authentifizierung: Erfordert eine gültige Sitzung und ein CSRF-Token
-
Anforderungstext:
{"retentionPeriod": "6 months"} -
Aufbewahrungsfristen:
"6 months","1 year","2 years","Delete all data" -
Antwort:
{"message": "Successfully deleted 15 old backups","status": 200}
Für die Option "Alle Daten löschen":
{
"message": "Successfully deleted all 15 backups and 3 servers, and cleared configuration settings",
"status": 200
}
- Fehlerantworten:
401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token400: Ungültiger Aufbewahrungszeitraum angegeben500: Serverfehler während des Bereinigungsvorgangs mit detaillierten Fehlerinformationen
- Hinweise:
- Der Bereinigungsvorgang ist unwiderruflich
- Sicherungsdaten werden dauerhaft aus der Datenbank gelöscht
- Computerdatensätze bleiben erhalten, auch wenn alle Sicherungen gelöscht werden
- Wenn "Alle Daten löschen" ausgewählt ist, werden alle Computer und Sicherungen entfernt und die Konfiguration geleert
- Erweiterte Fehlerberichterstattung enthält Details und Stack-Trace im Entwicklungsmodus
- Unterstützt sowohl zeitbasierte Aufbewahrung als auch vollständige Datenlöschung
Sicherungsauftrag löschen - /api/backups/delete-job
-
Endpunkt:
/api/backups/delete-job -
Methode: DELETE
-
Beschreibung: Löscht alle Sicherungsdatensätze für eine bestimmte Server-Sicherungs-Kombination. Dieser Endpunkt ist nur im Entwicklungsmodus verfügbar.
-
Authentifizierung: Erfordert eine gültige Sitzung und ein CSRF-Token
-
Anforderungstext:
{"serverId": "server-id","backupName": "Backup Name"} -
Antwort:
{"message": "Successfully deleted 5 backup record(s) for \"Files\" from server \"My Server\"","status": 200,"deletedCount": 5,"serverName": "My Server","backupName": "Files"} -
Fehlerantworten:
401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token403: Löschen von Sicherungsaufträgen ist nur im Entwicklungsmodus verfügbar400: Server-ID und Sicherungsname sind erforderlich404: Keine zu löschenden Sicherungen gefunden500: Serverfehler während des Löschvorgangs mit detaillierten Fehlerinformationen
-
Hinweise:
- Dieser Vorgang ist nur im Entwicklungsmodus verfügbar
- Dieser Vorgang ist unwiderruflich
- Alle Sicherungsdatensätze für die angegebene Server-Sicherungskombination werden dauerhaft gelöscht
- Gibt die Anzahl der gelöschten Sicherungen und Serverinformationen zurück
- Verwendet Server-Alias zur Anzeige, falls verfügbar, andernfalls greift es auf den Servernamen zurück
Sicherungszeitpläne synchronisieren - /api/backups/sync-schedule
-
Endpunkt:
/api/backups/sync-schedule -
Methode: POST
-
Beschreibung: Synchronisiert Sicherungszeitplaninformationen von einem Duplicati-Server. Dieser Endpunkt stellt eine Verbindung zum Server her, ruft Zeitplaninformationen für alle Sicherungen ab und aktualisiert die lokalen Sicherungseinstellungen mit Zeitplandetails einschließlich Wiederholungsintervallen, zulässigen Wochentagen und Zeitplanzeiten.
-
Authentifizierung: Erfordert eine gültige Sitzung und ein CSRF-Token
-
Anforderungstext:
{"hostname": "duplicati-server.local","port": 8200,"password": "your-password","serverId": "optional-server-id"}
Oder nur mit serverId (verwendet das gespeicherte Passwort):
{
"serverId": "server-id"
}
Oder mit serverId und aktualisierten Anmeldedaten:
{
"serverId": "server-id",
"hostname": "new-hostname.local",
"port": 8200,
"password": "new-password"
}
-
Antwort:
{"success": true,"serverName": "Server Name","stats": {"processed": 5,"errors": 0}}
Mit Fehlern:
{
"success": true,
"serverName": "Server Name",
"stats": {
"processed": 3,
"errors": 2
},
"errors": [
"Backup Name 1: Error message",
"Backup Name 2: Error message"
]
}
- Fehlerantworten:
400: Ungültige Anfrageparameter, fehlender Hostname/Passwort wenn serverId nicht bereitgestellt wird, oder Verbindung fehlgeschlagen404: Server nicht gefunden (wenn serverId bereitgestellt wird) oder kein Passwort für Server gespeichert500: Serverfehler während der Zeitplan-Synchronisierung
- Hinweise:
- Der Endpunkt erkennt automatisch das optimale Verbindungsprotokoll (HTTPS → HTTPS mit selbstsigniertem Zertifikat → HTTP)
- Kann nur mit serverId aufgerufen werden, um gespeicherte Server-Anmeldeinformationen zu verwenden
- Kann mit serverId und neuen Anmeldeinformationen aufgerufen werden, um Server-Verbindungsdetails zu aktualisieren
- Kann mit Hostname/Port/Passwort ohne serverId für neue Server aufgerufen werden
- Aktualisiert Sicherungseinstellungen mit Zeitplaninformationen einschließlich:
expectedInterval: Das Wiederholungsintervall (z.B. "Täglich", "Wöchentlich", "Monatlich")allowedWeekDays: Array der erlaubten Wochentage (0=Sonntag, 1=Montag usw.)time: Die geplante Zeit für die Sicherung
- Verarbeitet alle auf dem Server gefundenen Sicherungen
- Gibt Statistiken zu verarbeiteten Sicherungen und auftretenden Fehlern zurück
- Protokolliert Audit-Ereignisse für erfolgreiche und fehlgeschlagene Synchronisationsvorgänge
- Verwendet Standardport 8200, wenn nicht angegeben
Serververbindung testen - /api/servers/test-connection
-
Endpunkt:
/api/servers/test-connection -
Methode: POST
-
Beschreibung: Testet die Verbindung zu einem Duplicati-Server, um zu überprüfen, ob er erreichbar ist.
-
Anforderungstext:
{"server_url": "http://localhost:8200"} -
Antwort:
{"success": true,"message": "Connection successful"} -
Fehlerantworten:
400: Ungültiges URL-Format oder fehlende Server-URL500: Serverfehler während des Verbindungstests
-
Hinweise:
- Der Endpunkt überprüft das URL-Format und testet die Konnektivität
- Gibt Erfolg zurück, wenn der Server mit Status 401 antwortet (erwartet für Login-Endpunkt ohne Anmeldeinformationen)
- Testet die Verbindung zum Login-Endpunkt des Duplicati-Servers
- Unterstützt sowohl HTTP- als auch HTTPS-Protokolle
- Verwendet Timeou-Konfiguration für Verbindungstest
Server-URL abrufen - /api/servers/:serverId/server-url
-
Endpunkt:
/api/servers/:serverId/server-url -
Methode: GET
-
Beschreibung: Ruft die Server-URL für einen bestimmten Server ab.
-
Parameter:
serverId: die Serverkennung
-
Antwort:
{"serverId": "server-id","server_url": "http://localhost:8200"} -
Fehlerantworten:
404: Server nicht gefunden500: Serverfehler
-
Hinweise:
- Gibt Server-URL für bestimmten Server zurück
- Wird für Server-Verbindungsverwaltung verwendet
- Gibt leeren String zurück, wenn keine Server-URL festgelegt ist
Server-URL aktualisieren - /api/servers/:serverId/server-url
-
Endpunkt:
/api/servers/:serverId/server-url -
Methode: PATCH
-
Beschreibung: Aktualisiert die Server-URL für einen bestimmten Server.
-
Authentifizierung: Erfordert eine gültige Sitzung und ein CSRF-Token
-
Parameter:
serverId: die Serverkennung
-
Request-Body:
{"server_url": "http://localhost:8200"} -
Antwort:
{"message": "Server URL updated successfully","serverId": "server-id","serverName": "Server Name","server_url": "http://localhost:8200"} -
Fehlerantworten:
401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token400: Ungültiges URL-Format404: Server nicht gefunden500: Serverfehler während der Aktualisierung
-
Hinweise:
- Der Endpunkt überprüft das URL-Format vor der Aktualisierung
- Leere oder Null-Server-URLs sind erlaubt
- Unterstützt sowohl HTTP- als auch HTTPS-Protokolle
- Gibt aktualisierte Serverinformationen zurück
Serverpasswort abrufen - /api/servers/:serverId/password
-
Endpunkt:
/api/servers/:serverId/password -
Methode: GET
-
Beschreibung: Ruft ein CSRF-Token für Serverpasswort-Operationen ab.
-
Authentifizierung: Erfordert eine gültige Sitzung
-
Parameter:
serverId: die Serverkennung
-
Antwort:
{"csrfToken": "csrf-token-string","serverId": "server-id"} -
Fehlerantworten:
401: Ungültige oder abgelaufene Sitzung500: CSRF-Token konnte nicht generiert werden
-
Hinweise:
- Gibt CSRF-Token für die Verwendung bei Passwortaktualisierungsoperationen zurück
- Die Sitzung muss gültig sein, um Token zu generieren
Serverpasswort aktualisieren - /api/servers/:serverId/password
-
Endpunkt:
/api/servers/:serverId/password -
Methode: PATCH
-
Beschreibung: Aktualisiert das Passwort für einen bestimmten Server.
-
Authentifizierung: Erfordert eine gültige Sitzung und ein CSRF-Token
-
Parameter:
serverId: die Serverkennung
-
Request-Body:
{"password": "new-password"} -
Antwort:
{"message": "Password updated successfully","serverId": "server-id"} -
Fehlerantworten:
400: Passwort muss eine Zeichenkette sein401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token500: Passwort konnte nicht aktualisiert werden
-
Hinweise:
- Passwort kann eine leere Zeichenkette sein, um das Passwort zu löschen
- Passwort wird sicher mit dem Geheimnisspeichersystem gespeichert
Benutzerverwaltung
Benutzer auflisten - /api/users
-
Endpunkt:
/api/users -
Methode: GET
-
Beschreibung: Listet alle Benutzer mit Paginierung und optionaler Suchfilterung auf. Gibt Benutzerinformationen einschließlich Anmeldeverlauf und Kontostatus zurück.
-
Authentifizierung: Erfordert Administratorrechte, gültige Sitzung und CSRF-Token
-
Abfrageparameter:
page(optional): Seitennummer (Standard: 1)limit(optional): Einträge pro Seite (Standard: 50)search(optional): Suchbegriff zum Filtern nach Benutzername
-
Antwort:
{"users": [{"id": "user-id","username": "admin","isAdmin": true,"accessAllServers": true,"serverIds": [],"mustChangePassword": false,"createdAt": "2024-01-01T00:00:00Z","lastLoginAt": "2024-01-15T10:30:00Z","lastLoginIp": "192.168.1.100","failedLoginAttempts": 0,"lockedUntil": null,"isLocked": false}],"pagination": {"page": 1,"limit": 50,"total": 5,"totalPages": 1}} -
Fehlerantworten:
401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token403: Verboten - Administratorrechte erforderlich500: Interner Serverfehler
-
Hinweise:
- Nur für Administratoren zugänglich
- Unterstützt Paginierung und Suchfilter
- Gibt den Benutzerkontostatus einschließlich Sperrstatus zurück
Benutzer erstellen - /api/users
-
Endpunkt:
/api/users -
Methode: POST
-
Beschreibung: Erstellt ein neues Benutzerkonto. Kann ein temporäres Passwort generieren oder ein angegebenes Passwort verwenden.
-
Authentifizierung: Erfordert Admin-Berechtigungen, eine gültige Sitzung und ein CSRF-Token
-
Request-Body:
{"username": "newuser","password": "optional-password","isAdmin": false,"requirePasswordChange": true,"accessAllServers": false,"serverIds": ["server-id"]} -
username: Erforderlich, muss 3-50 Zeichen lang und eindeutig seinpassword: Optional, wenn nicht angegeben, wird ein sicheres temporäres Passwort generiertisAdmin: Optional, Standard: false. Admin-Benutzer erhalten immer alle ServerrequirePasswordChange: Optional, Standard: trueaccessAllServers: Optional, Standard: true. Wenn false, istserverIdsdie einzige Gruppe von Servern, die der Benutzer sehen kannserverIds: Optionales Array bestehender Server-IDs. Unbekannte IDs werden abgelehnt. Wird ignoriert, wenn der Benutzer ein Admin ist oderaccessAllServersnicht false ist
-
Antwort:
{"user": {"id": "user-id","username": "newuser","isAdmin": false,"mustChangePassword": true,"accessAllServers": true,"serverIds": []},"temporaryPassword": "generated-password-123"} -
temporaryPasswordwird nur enthalten, wenn ein Passwort automatisch generiert wurde -
Fehlerantworten:
400: Ungültiges Benutzernamenformat, Verstoß gegen Passwortrichtlinie oder Validierungsfehler401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token403: Verboten - Administratorrechte erforderlich409: Benutzername existiert bereits500: Interner Serverfehler
-
Hinweise:
- Nur für Administratoren zugänglich
- Benutzername ist nicht groß-/kleinschreibungsabhängig und wird in Kleinbuchstaben gespeichert
- Falls kein Passwort angegeben wird, wird ein sicheres 12-stelliges Passwort generiert
- Generierte temporäre Passwörter werden nur einmalig in der Antwort zurückgegeben
- Benutzererstellung wird im Audit-Protokoll protokolliert
Benutzer aktualisieren - /api/users/:id
-
Endpunkt:
/api/users/:id -
Methode: PATCH
-
Beschreibung: Aktualisiert Benutzerinformationen einschließlich Benutzername, Admin-Status, Pflicht zur Passwortänderung und Passwort-Zurücksetzung.
-
Authentifizierung: Erfordert Admin-Rechte, eine gültige Sitzung und ein gültiges CSRF-Token
-
Parameter:
id: Zu aktualisierende Benutzer-ID
-
Request-Body:
{"username": "updated-username","isAdmin": true,"requirePasswordChange": false,"resetPassword": true,"password": "optional-custom-password","accessAllServers": false,"serverIds": ["server-id"]} -
Alle Felder sind optional
accessAllServersundserverIds: Dieselben Regeln wie beim Erstellen. Das Befördern eines Benutzers zum Admin speichert den Zugriff auf alle Server. Das Zurückstufen eines Admins beginnt wieder bei allen Servern, sofern nicht eine benutzerdefinierte Liste in derselben Anfrage gesendet wirdresetPassword: Wenn true, wird ein neues Passwort festgelegt.password, falls angegeben, wird nach Richtlinienprüfungen verwendet. Wennpasswordweggelassen wird, wird ein temporäres Passwort generiertrequirePasswordChange: MitresetPassword, Standard: true. Senden Siefalse, um das Flag zum Ändern des Passworts zu löschen
-
Antwort (mit Passwort-Zurücksetzung):
{"user": {"id": "user-id","username": "updated-username","isAdmin": true,"mustChangePassword": true,"accessAllServers": true,"serverIds": []},"temporaryPassword": "new-temp-password-456"} -
Antwort (ohne Passwort-Zurücksetzung):
{"user": {"id": "user-id","username": "updated-username","isAdmin": true,"mustChangePassword": false,"accessAllServers": true,"serverIds": []}} -
Fehlerantworten:
400: Ungültige Eingabe oder Validierungsfehler401: Nicht autorisiert – Ungültige Sitzung oder ungültiges CSRF-Token403: Verboten – Admin-Rechte erforderlich404: Benutzer nicht gefunden409: Benutzername existiert bereits (wenn der Benutzername geändert wird)500: Interner Serverfehler
-
Hinweise:
- Nur für Admin-Benutzer zugänglich
- Änderungen des Benutzernamens werden auf Eindeutigkeit geprüft
- Wenn kein Passwort zum Zurücksetzen angegeben wird, wird ein sicheres, 12 Zeichen langes temporäres Passwort generiert, das einmalig zurückgegeben wird
- Ein angegebenes Passwort zum Zurücksetzen muss der Passwortrichtlinie entsprechen und wird nicht zurückgegeben
- Alle Änderungen werden im Audit-Protokoll protokolliert
Benutzer löschen - /api/users/:id
-
Endpunkt:
/api/users/:id -
Methode: DELETE
-
Beschreibung: Löscht ein Benutzerkonto. Verhindert das Löschen des eigenen Kontos oder des letzten Admin-Kontos.
-
Authentifizierung: Erfordert Admin-Rechte, eine gültige Sitzung und ein gültiges CSRF-Token
-
Parameter:
id: Zu löschende Benutzer-ID
-
Antwort:
{"success": true,"message": "User deleted successfully"} -
Fehlerantworten:
400: Kann eigenen Account oder letzten Administrator-Account nicht löschen401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token403: Verboten - Administratorrechte erforderlich404: Benutzer nicht gefunden500: Interner Serverfehler
-
Hinweise:
- Nur für Administratoren zugänglich
- Kann eigenen Account nicht löschen
- Kann letzten Administrator-Account nicht löschen (mindestens ein Administrator muss erhalten bleiben)
- Benutzerlöschung wird im Audit-Protokoll protokolliert
- Zugehörige Sitzungen werden automatisch gelöscht (Kaskade)
Audit-Protokoll-Verwaltung
Audit-Protokolle auflisten - /api/audit-log
-
Endpunkt:
/api/audit-log -
Methode: GET
-
Beschreibung: Ruft Audit-Protokolleinträge mit Filter-, Paginierungs- und Suchfunktionen ab. Unterstützt sowohl seitenbasierte als auch offsetbasierte Paginierung.
-
Authentifizierung: Erfordert gültige Sitzung und CSRF-Token (angemeldeter Benutzer erforderlich)
-
Abfrageparameter:
page(optional): Seitennummer für seitenbasierte Paginierungoffset(optional): Offset für offset-basierte Paginierung (hat Vorrang vor Seite)limit(optional): Einträge pro Seite (Standard: 50)startDate(optional): Protokolle ab diesem Datum filtern (ISO-Format)endDate(optional): Protokolle bis zu diesem Datum filtern (ISO-Format)userId(optional): Nach Benutzer-ID filternusername(optional): Filter by usernameaction(optional): Nach Aktionsname filterncategory(optional): Nach Kategorie filtern (auth,user_management,config,backup,server)status(optional): Nach Status filtern (success,failure,error)
-
Antwort:
{"logs": [{"id": 1,"timestamp": "2024-01-15T10:30:00Z","userId": "user-id","username": "admin","action": "login","category": "auth","targetType": "user","targetId": "user-id","status": "success","ipAddress": "192.168.1.100","userAgent": "Mozilla/5.0...","details": {"is_admin": true},"errorMessage": null}],"pagination": {"page": 1,"limit": 50,"total": 150,"totalPages": 3}} -
Fehlerantworten:
401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token500: Interner Serverfehler
-
Hinweise:
- Unterstützt sowohl seitenbasierte (
page) als auch offset-basierte (offset) Paginierung details-Feld enthält geparstes JSON mit zusätzlichem Kontext- Alle Audit-Log-Abfragen werden protokolliert
- Unterstützt sowohl seitenbasierte (
Audit-Protokoll-Filterwerte abrufen - /api/audit-log/filters
-
Endpunkt:
/api/audit-log/filters -
Methode: GET
-
Beschreibung: Ruft eindeutige Filterwerte ab, die zum Filtern von Audit-Protokollen verfügbar sind. Gibt alle eindeutigen Aktionen, Kategorien und Statuswerte zurück, die in der Audit-Protokoll-Datenbank vorhanden sind. Nützlich zum Befüllen von Filter-Dropdowns in der Benutzeroberfläche.
-
Authentifizierung: Erfordert eine gültige Sitzung und ein CSRF-Token (angemeldeter Benutzer erforderlich)
-
Antwort:
{"actions": ["login","logout","user_created","user_updated","config_updated"],"categories": ["auth","user_management","config","backup","server"],"statuses": ["success","failure","error"]} -
Fehlerantworten:
401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token500: Interner Serverfehler
-
Hinweise:
- Gibt Arrays eindeutiger Werte aus der Audit-Log-Datenbank zurück
- Werte sind alphabetisch sortiert
- Leere Arrays werden zurückgegeben, wenn keine Daten vorhanden sind oder bei Fehler
- Wird vom Prüfprotokoll-Viewer verwendet, um Filter-Auswahllisten dynamisch zu füllen
Audit-Protokolle herunterladen - /api/audit-log/download
- Endpunkt:
/api/audit-log/download - Methode: GET
- Beschreibung: Lädt Audit-Protokolle im CSV- oder JSON-Format mit optionaler Filterung herunter. Nützlich für externe Analysen und Berichte.
- Authentifizierung: Erfordert gültige Sitzung und CSRF-Token (angemeldeter Benutzer erforderlich)
- Abfrageparameter:
format(optional): Exportformat -csvoderjson(Standard:csv)startDate(optional): Protokolle ab diesem Datum filtern (ISO-Format)endDate(optional): Protokolle bis zu diesem Datum filtern (ISO-Format)userId(optional): Nach Benutzer-ID filternusername(optional): Filter by usernameaction(optional): Nach Aktionsname filterncategory(optional): Nach Kategorie filternstatus(optional): Nach Status filtern
- Antwort (CSV):
- Content-Type:
text/csv - Content-Disposition:
attachment; filename="audit-log-YYYY-MM-DD.csv" - CSV-Datei mit Kopfzeilen: ID, Zeitstempel, Benutzer-ID, Benutzername, Aktion, Kategorie, Zieltyp, Ziel-ID, Status, IP-Adresse, Benutzer-Agent, Details, Fehlermeldung
- Content-Type:
- Antwort (JSON):
- Content-Type:
application/json - Content-Disposition:
attachment; filename="audit-log-YYYY-MM-DD.json" - JSON-Array von Audit-Log-Einträgen
- Content-Type:
- Fehlerantworten:
400: Keine Protokolle zum Exportieren401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token500: Interner Serverfehler
- Hinweise:
- Exportlimit beträgt 10.000 Datensätze
- CSV-Format maskiert Sonderzeichen ordnungsgemäß
- Details-Feld in CSV ist als JSON formatiert
- Dateiname enthält das aktuelle Datum
Audit-Protokolle bereinigen – /api/audit-log/cleanup
-
Endpoint:
/api/audit-log/cleanup -
Method: POST
-
Description: Löst die Bereinigung alter Audit-Protokolle basierend auf dem Aufbewahrungszeitraum manuell aus. Unterstützt einen Dry-Run-Modus zur Vorschau der zu löschenden Einträge.
-
Authentifizierung: Erfordert Admin-Berechtigungen, eine gültige Sitzung und ein CSRF-Token
-
Request-Body:
{"retentionDays": 90,"dryRun": false} -
retentionDays(optional): Aufbewahrungstage überschreiben (30–365), andernfalls wird der konfigurierte Wert verwendetdryRun(optional): Wenn „true“, wird nur zurückgegeben, was gelöscht werden würde, ohne tatsächlich zu löschen
-
Response (Testlauf):
{"dryRun": true,"wouldDeleteCount": 50,"oldestRemaining": "2024-01-01T00:00:00Z","retentionDays": 90,"cutoffDate": "2024-01-01"} -
Response (tatsächliche Bereinigung):
{"success": true,"deletedCount": 50,"oldestRemaining": "2024-01-01T00:00:00Z","retentionDays": 90} -
Fehlerantworten:
400: Ungültige Aufbewahrungstage (muss 30-365 sein)401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token403: Verboten - Administratorrechte erforderlich500: Interner Serverfehler
-
Hinweise:
- Nur für Administratoren zugänglich
- Standardaufbewahrung beträgt 90 Tage, wenn nicht konfiguriert
- Bereinigungsoperation wird im Audit-Protokoll protokolliert
- Dry-Run-Modus ist nützlich zur Vorschau des Bereinigungsauswirkungen
Prüfprotokoll-Aufbewahrung abrufen – /api/audit-log/retention
-
Endpoint:
/api/audit-log/retention -
Method: GET
-
Description: Ruft die aktuelle Konfiguration der Prüfprotokoll-Aufbewahrung in Tagen ab.
-
Authentication: Erfordert eine gültige Sitzung und ein gültiges CSRF-Token (kein angemeldeter Benutzer erforderlich)
-
Response:
{"retentionDays": 90} -
Fehlerantworten:
500: Interner Serverfehler
-
Hinweise:
- Standardaufbewahrung beträgt 90 Tage, wenn nicht konfiguriert
- Kann ohne Authentifizierung abgerufen werden (schreibgeschützt)
Prüfprotokoll-Aufbewahrung aktualisieren – /api/audit-log/retention
-
Endpoint:
/api/audit-log/retention -
Method: PATCH
-
Description: Aktualisiert den Zeitraum für die Prüfprotokoll-Aufbewahrung in Tagen. Diese Einstellung bestimmt, wie lange Audit-Protokolle vor der automatischen Bereinigung aufbewahrt werden.
-
Authentifizierung: Erfordert Admin-Berechtigungen, eine gültige Sitzung und ein CSRF-Token
-
Request-Body:
{"retentionDays": 120} -
retentionDays: Erforderlich, muss zwischen 30 und 365 Tagen liegen -
Response:
{"success": true,"retentionDays": 120} -
Fehlerantworten:
400: Ungültige Aufbewahrungstage (muss 30-365 sein)401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token403: Verboten - Administratorrechte erforderlich500: Interner Serverfehler
-
Hinweise:
- Nur für Administratoren zugänglich
- Konfigurationsänderung wird im Audit-Protokoll protokolliert
- Aufbewahrungszeitraum beeinflusst automatische und manuelle Bereinigungsoperationen
API-Schlüssel
API-Schlüssel auflisten - /api/api-keys
- Endpunkt:
/api/api-keys - Methode: GET
- Beschreibung: Listet alle API-Schlüssel auf. Secrets werden niemals zurückgegeben; jeder Schlüssel enthält einen Fingerabdruck (
Qk7v…3xTa). - Authentifizierung: Erfordert Administratorrechte, gültige Sitzung und CSRF-Token
- Fehlerantworten:
401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token403: Verboten - Administratorrechte erforderlich500: Interner Serverfehler
API-Schlüssel erstellen - /api/api-keys
-
Endpunkt:
/api/api-keys -
Methode: POST
-
Beschreibung: Erstellt einen bereichsbezogenen API-Schlüssel. Das Klartext-Secret wird nur in dieser Antwort zurückgegeben.
-
Authentifizierung: Erfordert Admin-Berechtigungen, eine gültige Sitzung und ein CSRF-Token
-
Request-Body:
{"name": "Duplicati uploads","scope": "upload","description": "Optional","expiresAt": null} -
Fehlerantworten:
400: Fehlender Name oder ungültiger Bereich (uploadoderread)401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token403: Verboten - Administratorrechte erforderlich500: Interner Serverfehler
API-Schlüssel aktualisieren - /api/api-keys/:id
- Endpunkt:
/api/api-keys/:id - Methode: PATCH
- Beschreibung: Aktiviert oder deaktiviert einen Schlüssel.
- Authentifizierung: Erfordert Admin-Berechtigungen, eine gültige Sitzung und ein CSRF-Token
API-Schlüssel löschen - /api/api-keys/:id
- Endpunkt:
/api/api-keys/:id - Methode: DELETE
- Beschreibung: Löscht einen Schlüssel. Bestehende Clients, die dieses Secret verwenden, verlieren sofort den Zugriff.
- Authentifizierung: Erfordert Admin-Berechtigungen, eine gültige Sitzung und ein CSRF-Token
Datenbankverwaltung
Datenbank sichern - /api/database/backup
- Endpunkt:
/api/database/backup - Methode: GET
- Beschreibung: Erstellt eine Sicherung der Datenbank im Binär- (.db) oder SQL-Format (.sql). Die Sicherungsdatei wird automatisch mit einem mit Zeitstempel versehenen Dateinamen heruntergeladen.
- Authentifizierung: Erfordert Administratorrechte, gültige Sitzung und CSRF-Token
- Abfrageparameter:
format(optional): Backup-Format -db(binär) odersql(SQL-Dump). Standard:db
- Antwort:
- Content-Type:
application/octet-stream(für .db) odertext/plain(für .sql) - Content-Disposition:
attachment; filename="duplistatus-backup-YYYY-MM-DDTHH-MM-SS.db"oder.sql - Binärdateiinhalt (für .db) oder SQL-Textinhalt (für .sql)
- Content-Type:
- Fehlerantworten:
400: Ungültiges Format (muss "db" oder "sql" sein)401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token403: Verboten - Administratorrechte erforderlich500: Erstellung des Datenbank-Backups fehlgeschlagen
- Hinweise:
- Nur für Administratoren zugänglich
- Binärformat verwendet die Backup-Methode von SQLite zur Gewährleistung der Integrität
- SQL-Format erstellt einen Textdump aller Datenbankinhalte
- Zeitstempel im Dateinamen verwendet die lokale Zeitzone des Servers
- Backup-Vorgang wird im Audit-Protokoll protokolliert
- Temporäre Dateien werden nach dem Download automatisch bereinigt
Datenbank wiederherstellen - /api/database/restore
-
Endpunkt:
/api/database/restore -
Methode: POST
-
Beschreibung: Stellt die Datenbank aus einer Sicherungsdatei (.db- oder .sql-Format) wieder her. Erstellt vor der Wiederherstellung eine Sicherung zur Absicherung und löscht nach der Wiederherstellung aus Sicherheitsgründen alle Sitzungen.
-
Authentifizierung: Erfordert Admin-Rechte, eine gültige Sitzung und ein CSRF-Token
-
Request-Body: FormData mit einem Dateifeld namens
database- Die Datei muss entweder
.db,.sqlite,.sqlite3(Binärformat) oder.sql(SQL-Format) sein - Maximale Dateigröße: 200MB
- Die Datei muss entweder
-
Antwort:
{"success": true,"message": "Database restored successfully from DB file","safetyBackupPath": "duplistatus-backup-YYYY-MM-DDTHH-MM-SS.db","requiresReauth": true} -
Fehlerantworten:
400: Keine Datei bereitgestellt, Dateigröße überschreitet Limit, ungültiges Dateiformat oder Datenbankintegritätsprüfung fehlgeschlagen401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token403: Verboten - Administratorrechte erforderlich500: Wiederherstellung der Datenbank fehlgeschlagen (ursprüngliche Datenbank wird aus Sicherungssicherung wiederhergestellt, falls Wiederherstellung fehlschlägt)
-
Hinweise:
- Nur für Administratoren zugänglich
- Erstellt automatisch eine Sicherungssicherung vor der Wiederherstellung
- Unterstützt sowohl binäres (.db) als auch SQL-Format (.sql)
- Überprüft die Datenbankintegrität nach der Wiederherstellung
- Falls Wiederherstellung fehlschlägt, wird automatisch aus Sicherungssicherung wiederhergestellt
- Alle Sitzungen werden nach erfolgreicher Wiederherstellung aus Sicherheitsgründen gelöscht
- Gibt
requiresReauth: truezurück, um anzuzeigen, dass sich der Benutzer erneut anmelden muss - Wiederherstellungsvorgang wird im Audit-Protokoll protokolliert
- Für SQL-Format wird der SQL-Inhalt vor der Ausführung überprüft
- Datenbankverbindung wird nach der Wiederherstellung neu initialisiert
- Alle Caches werden nach der Wiederherstellung ungültig gemacht
Sicherungs-Zeitstempel
Zeitstempel der letzten Sicherung abrufen - /api/backups/last-timestamps
-
Endpunkt:
/api/backups/last-timestamps -
Methode: GET
-
Beschreibung: Ruft den Zeitstempel der letzten Sicherung für jede Server-Sicherungs-Kombination ab. Gibt eine Map für ein einfaches Nachschlagen zurück.
-
Authentifizierung: Erfordert eine gültige Sitzung und ein CSRF-Token
-
Antwort:
{"timestamps": {"server-id-1:Backup Name 1": "2024-03-20T10:00:00Z","server-id-1:Backup Name 2": "2024-03-20T11:00:00Z","server-id-2:Backup Name 1": "2024-03-20T12:00:00Z"},"raw": [{"server_name": "Server Name","server_id": "server-id-1","backup_name": "Backup Name 1","date": "2024-03-20T10:00:00Z"}]} -
Fehlerantworten:
401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token500: Abrufen der Zeitstempel der letzten Sicherung fehlgeschlagen
-
Hinweise:
- Gibt sowohl eine Karte (zur einfachen Suche nach
server_id:backup_name) als auch ein Roharray-Format zurück - Enthält Cache-Control-Header, um Caching zu verhindern
- Nützlich zum Verfolgen der letzten Sicherungszeiten über alle Server-Sicherungskombinationen hinweg
- Zeitstempel sind im ISO-Format
- Gibt sowohl eine Karte (zur einfachen Suche nach
Verwaltung der Anwendungsprotokolle
Anwendungsprotokolle abrufen - /api/application-logs
-
Endpunkt:
/api/application-logs -
Methode: GET
-
Beschreibung: Ruft Anwendungsprotokolleinträge aus Protokolldateien ab. Unterstützt das Lesen aktueller und rotierter Protokolldateien mit Tail-Funktionalität.
-
Authentifizierung: Erfordert Administratorrechte, gültige Sitzung und CSRF-Token
-
Abfrageparameter:
file(optional): Zu lesende Protokolldatei -application.log,application.log.1,application.log.2, usw. Wenn nicht angegeben, wird die Liste verfügbarer Dateien zurückgegebentail(optional): Anzahl der Zeilen, die vom Ende der Datei zurückgegeben werden sollen (Standard: 1000, Mindestwert: 1, Maximalwert: 10000)
-
Antwort (mit Dateiparameter):
{"logs": "log content as string...","fileSize": 1024000,"lastModified": "2024-03-20T10:00:00Z","lineCount": 5000,"currentFile": "application.log","availableFiles": ["application.log", "application.log.1", "application.log.2"]} -
Antwort (ohne file-Parameter):
{"logs": "","fileSize": 0,"lastModified": "2024-03-20T10:00:00Z","lineCount": 0,"currentFile": "","availableFiles": ["application.log", "application.log.1", "application.log.2"]} -
Fehlerantworten:
400: Ungültiger Tail-Parameter (muss 1-10000 sein) oder ungültiges Dateiparameterformat401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token403: Verboten - Administratorrechte erforderlich404: Protokolldatei nicht gefunden500: Lesen der Protokolldatei fehlgeschlagen
-
Hinweise:
- Nur für Administratoren zugänglich
- Unterstützt das Lesen der aktuellen Protokolldatei und rotierter Protokolldateien (bis zu 10 rotierte Dateien)
- Gibt die letzten N Zeilen (Tail) aus der angegebenen Protokolldatei zurück
- Der Name der Protokolldatei wird durch eine Umgebungsvariable bestimmt (Standard:
application.log) - Gibt eine Liste verfügbarer Protokolldateien zurück, wenn der Dateiparameter nicht angegeben ist
- Dateinamen werden überprüft, um Directory Traversal-Angriffe zu verhindern
- Rotierte Dateien sind sequenziell nummeriert (
.1,.2, usw.)
Anwendungsprotokolle exportieren – /api/application-logs/export
- Endpunkt:
/api/application-logs/export - Methode: GET
- Beschreibung: Exportiert Anwendungsprotokolleinträge in einem gefilterten Textformat. Unterstützt das Filtern nach Protokollebene und Suchzeichenfolge.
- Authentifizierung: Erfordert Administratorrechte, gültige Sitzung und CSRF-Token
- Abfrageparameter:
file(erforderlich): Zu exportierender Protokolldateiname -application.log,application.log.1,application.log.2, usw.logLevels(optional): Durch Kommas getrennte Liste der einzuschließenden Protokollstufen -INFO,WARN,ERROR(Standard:INFO,WARN,ERROR)search(optional): Suchbegriff zum Filtern der Protokollzeilen (Groß-/Kleinschreibung wird ignoriert)
- Antwort:
- Content-Type:
text/plain - Content-Disposition:
attachment; filename="duplistatus-logs-YYYY-MM-DDTHH-MM-SS.txt" - Gefilterter Protokollinhalt als Klartext
- Content-Type:
- Fehlerantworten:
400: Dateiparameter ist erforderlich oder ungültiges Format des Dateiparameters401: Nicht autorisiert - Ungültige Sitzung oder CSRF-Token403: Verboten - Administratorrechte erforderlich500: Protokolle konnten nicht exportiert werden
- Hinweise:
- Nur für Admin-Benutzer zugänglich
- Exportiert gefilterte Protokolleinträge basierend auf Protokollstufe und Suchkriterien
- Unterstützt Filterung nach Protokollstufen:
INFO,WARN,ERROR - Die Filterung nach Suchbegriffen berücksichtigt nicht die Groß-/Kleinschreibung
- Leere Zeilen werden automatisch herausgefiltert
- Der Name der Protokolldatei wird durch eine Umgebungsvariable bestimmt (Standard:
application.log) - Dateinamen werden überprüft, um Directory Traversal-Angriffe zu verhindern
- Exportierte Datei enthält Zeitstempel im Dateinamen
- Nützlich für externe Analyse und Fehlerbehebung