Administration
Backups sammeln - /api/backups/collect
-
Endpoint:
/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-Überprüfung, HTTPS mit selbstsignierten Zertifikaten oder HTTP als Fallback) und stellt eine Verbindung zum Duplicati-Server her, um Sicherungsinformationen abzurufen und in die lokale Datenbank zu übernehmen.
-
Authentifizierung: Erfordert gültige Sitzung und 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 Anforderungsparameter oder Verbindung fehlgeschlagen500: Serverfehler während des Sammelvorgangs
-
Hinweise:
- Der Endpunkt erkennt automatisch das optimale Verbindungsprotokoll (HTTPS → HTTPS mit selbstsignierten Zertifikaten → HTTP)
- Die Protokollerfassungsversuche erfolgen in der Reihenfolge der Sicherheitspräferenz
- Verbindungs-Timeouts sind über Umgebungsvariablen konfigurierbar
- Im Entwicklungsmodus werden gesammelte Daten protokolliert, um das Debugging zu erleichtern
- Stellt sicher, dass die Sicherungseinstellungen für alle Server und Sicherungen vollständig sind
- Verwendet den Standardport 8200, wenn keiner angegeben ist
- 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- Die Oberfläche sollte
serverAlias || serverNamezu Anzeigezwecken verwenden - Unterstützt sowohl den JSON-Download als auch direkte API-Sammlungsmethoden
Sicherungen bereinigen - /api/backups/cleanup
-
Endpoint:
/api/backups/cleanup -
Methode: POST
-
Beschreibung: Löscht alte Sicherungsdaten basierend auf der Aufbewahrungsfrist. Dieser Endpunkt hilft dabei, die Datenbankgröße zu verwalten, indem veraltete Sicherungsdatensätze entfernt werden, während aktuelle und wichtige Daten erhalten bleiben.
-
Authentifizierung: Erfordert gültige Sitzung und 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ültige Aufbewahrungsfrist angegeben500: Serverfehler während der Bereinigung mit detaillierten Fehlerinformationen
- Hinweise:
- Der Bereinigungsvorgang ist unwiderruflich
- Sicherungsdaten werden dauerhaft aus der Datenbank gelöscht
- Geräte-Datensätze bleiben erhalten, auch wenn alle Sicherungen gelöscht werden
- Wenn „Alle Daten löschen“ ausgewählt ist, werden alle Geräte und Sicherungen entfernt und die Konfiguration wird zurückgesetzt
- Verbessertes Fehlermeldesystem 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
-
Endpoint:
/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 gültige Sitzung und 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: Das Löschen von Sicherungsaufträgen ist nur im Entwicklungsmodus verfügbar400: Server-ID und Sicherungsname sind erforderlich404: Keine Sicherungen zum Löschen 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-Sicherungs-Kombination werden dauerhaft gelöscht
- Gibt die Anzahl der gelöschten Sicherungen und Serverinformationen zurück
- Verwendet den Server-Alias zur Anzeige, falls verfügbar, andernfalls den Servernamen
Sicherungspläne synchronisieren - /api/backups/sync-schedule
-
Endpoint:
/api/backups/sync-schedule -
Methode: POST
-
Beschreibung: Synchronisiert Informationen zu Sicherungsplänen von einem Duplicati-Server. Dieser Endpunkt stellt eine Verbindung zum Server her, ruft Planungsinformationen für alle Sicherungen ab und aktualisiert die lokalen Sicherungseinstellungen mit Details wie Wiederholungsintervallen, erlaubten Wochentagen und geplanten Zeitpunkten.
-
Authentifizierung: Erfordert gültige Sitzung und CSRF-Token
-
Anforderungstext:
{"hostname": "duplicati-server.local","port": 8200,"password": "your-password","serverId": "optional-server-id"}
Oder nur mit serverId (verwendet gespeichertes 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 angegeben ist, oder Verbindung fehlgeschlagen404: Server nicht gefunden (wenn serverId angegeben ist) oder kein Passwort für Server gespeichert500: Serverfehler während der Synchronisierung des Zeitplans
- Hinweise:
- Der Endpunkt erkennt automatisch das optimale Verbindungsprotokoll (HTTPS → HTTPS mit selbstsigniertem Zertifikat → HTTP)
- Kann mit nur serverId aufgerufen werden, um gespeicherte Serveranmeldeinformationen zu verwenden
- Kann mit serverId und neuen Anmeldeinformationen aufgerufen werden, um Verbindungsdaten des Servers 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. „Daily“, „Weekly“, „Monthly“)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 über verarbeitete Sicherungen und aufgetretene Fehler zurück
- Protokolliert Audit-Ereignisse für erfolgreiche und fehlgeschlagene Synchronisierungsvorgänge
- Verwendet Standardport 8200, wenn nicht anders angegeben
Serververbindung testen - /api/servers/test-connection
-
Endpoint:
/api/servers/test-connection -
Methode: POST
-
Beschreibung: Testet die Verbindung zu einem Duplicati-Server, um sicherzustellen, dass er erreichbar ist.
-
Anfrage-Body:
{"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 Verbindung
- 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 Timeout-Konfiguration für den Verbindungstest
Server-URL abrufen - /api/servers/:serverId/server-url
-
Endpoint:
/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 die Server-URL für den spezifischen Server zurück
- Wird für die Verwaltung der Serververbindung verwendet
- Gibt einen leeren String zurück, wenn keine Server-URL festgelegt ist
Server-URL aktualisieren - /api/servers/:serverId/server-url
-
Endpoint:
/api/servers/:serverId/server-url -
Methode: PATCH
-
Beschreibung: Aktualisiert die Server-URL für einen bestimmten Server.
-
Authentifizierung: Erfordert gültige Sitzung und CSRF-Token
-
Parameter:
serverId: Die Serverkennung
-
Anforderungstext:
{"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-Werte für Server-URLs sind erlaubt
- Unterstützt sowohl HTTP als auch HTTPS-Protokolle
- Gibt aktualisierte Serverinformationen zurück
Server-Passwort abrufen - /api/servers/:serverId/password
-
Endpoint:
/api/servers/:serverId/password -
Methode: GET
-
Beschreibung: Ruft ein CSRF-Token für Server-Passwort-Operationen ab.
-
Authentifizierung: Gültige Sitzung erforderlich
-
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 ein CSRF-Token zurück, das bei Passwortaktualisierungen verwendet werden muss
- Die Sitzung muss gültig sein, um das Token zu generieren
Server-Passwort aktualisieren - /api/servers/:serverId/password
-
Endpoint:
/api/servers/:serverId/password -
Methode: PATCH
-
Beschreibung: Aktualisiert das Passwort für einen bestimmten Server.
-
Authentifizierung: Erfordert gültige Sitzung und CSRF-Token
-
Parameter:
serverId: Die Serverkennung
-
Anforderungstext:
{"password": "new-password"} -
Antwort:
{"message": "Password updated successfully","serverId": "server-id"} -
Fehlerantworten:
400: Passwort muss ein String sein401: Nicht autorisiert – Ungültige Sitzung oder CSRF-Token500: Passwortaktualisierung fehlgeschlagen
-
Hinweise:
- Das Passwort kann eine leere Zeichenkette sein, um das Passwort zu löschen
- Das Passwort wird sicher über das Geheimnisseverwaltungssystem gespeichert
Benutzerverwaltung
Benutzer auflisten - /api/users
-
Endpoint:
/api/users -
Methode: GET
-
Beschreibung: Listet alle Benutzer mit Seitennummerierung 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 zur Filterung nach Benutzername
-
Antwort:
{"users": [{"id": "user-id","username": "admin","isAdmin": true,"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 Administratorbenutzer zugänglich
- Unterstützt Seitennummerierung und Suchfilterung
- Gibt den Benutzerkontostatus einschließlich Sperrstatus zurück
Benutzer erstellen - /api/users
-
Endpoint:
/api/users -
Methode: POST
-
Beschreibung: Erstellt ein neues Benutzerkonto. Kann ein temporäres Passwort generieren oder ein vorgegebenes Passwort verwenden.
-
Authentifizierung: Administratorrechte, gültige Sitzung und CSRF-Token erforderlich
-
Anforderungstext:
{"username": "newuser","password": "optional-password","isAdmin": false,"requirePasswordChange": true} -
username: Erforderlich, muss 3–50 Zeichen lang sein, eindeutigpassword: Optional, falls nicht angegeben, wird ein sicheres temporäres Passwort generiertisAdmin: Optional, Standardwert falserequirePasswordChange: Optional, Standardwert true
-
Antwort:
{"user": {"id": "user-id","username": "newuser","isAdmin": false,"mustChangePassword": true},"temporaryPassword": "generated-password-123"} -
temporaryPasswordwird nur enthalten, wenn ein Passwort automatisch generiert wurde -
Fehlerantworten:
400: Ungültiges Benutzernamenformat, Verstoß gegen die Passwortrichtlinie oder Validierungsfehler401: Nicht autorisiert – Ungültige Sitzung oder CSRF-Token403: Verboten – Administratorrechte erforderlich409: Benutzername existiert bereits500: Interner Serverfehler
-
Hinweise:
- Nur für Administratorbenutzer zugänglich
- Benutzername ist nicht kasesensitiv und wird in Kleinbuchstaben gespeichert
- Falls kein Passwort angegeben wird, wird ein sicheres 12-stelliges Passwort generiert
- Generierte temporäre Passwörter werden nur einmal in der Antwort zurückgegeben
- Die Benutzererstellung wird im Audit-Log protokolliert
Benutzer aktualisieren - /api/users/:id
-
Endpoint:
/api/users/:id -
Methode: PATCH
-
Beschreibung: Aktualisiert Benutzerinformationen, einschließlich Benutzername, Administratorstatus, Passwortänderungspflicht und Passwortzurücksetzung.
-
Authentifizierung: Erfordert Administratorrechte, gültige Sitzung und CSRF-Token
-
Parameter:
id: Zu aktualisierende Benutzer-ID
-
Anforderungstext:
{"username": "updated-username","isAdmin": true,"requirePasswordChange": false,"resetPassword": true} -
Alle Felder sind optional
resetPassword: Wenn true, wird ein neues temporäres Passwort generiert undrequirePasswordChangeauf true gesetzt
-
Antwort (mit Passwortzurücksetzung):
{"user": {"id": "user-id","username": "updated-username","isAdmin": true,"mustChangePassword": true},"temporaryPassword": "new-temp-password-456"} -
Antwort (ohne Passwortzurücksetzung):
{"user": {"id": "user-id","username": "updated-username","isAdmin": true,"mustChangePassword": false}} -
Fehlerantworten:
400: Ungültige Eingabe oder Validierungsfehler401: Nicht autorisiert – Ungültige Sitzung oder CSRF-Token403: Zugriff verboten – Administratorrechte erforderlich404: Benutzer nicht gefunden409: Benutzername existiert bereits (bei Änderung des Benutzernamens)500: Interner Serverfehler
-
Hinweise:
- Nur für Benutzer mit Administratorrechten zugänglich
- Änderungen des Benutzernamens werden auf Eindeutigkeit überprüft
- Beim Zurücksetzen des Passworts wird ein sicheres temporäres 12-stelliges Passwort generiert
- Alle Änderungen werden im Audit-Log protokolliert
Benutzer löschen - /api/users/:id
-
Endpoint:
/api/users/:id -
Methode: DELETE
-
Beschreibung: Löscht ein Benutzerkonto. Verhindert das Löschen des eigenen Kontos oder des letzten Administrator-Kontos.
-
Authentifizierung: Erfordert Administratorrechte, gültige Sitzung und CSRF-Token
-
Parameter:
id: Zu löschende Benutzer-ID
-
Antwort:
{"success": true,"message": "User deleted successfully"} -
Fehlerantworten:
400: Das eigene Konto oder das letzte Admin-Konto kann nicht gelöscht werden401: Nicht autorisiert – Ungültige Sitzung oder CSRF-Token403: Zugriff verboten – Administratorrechte erforderlich404: Benutzer nicht gefunden500: Interner Serverfehler
-
Hinweise:
- Nur für Benutzer mit Administratorrechten zugänglich
- Das eigene Konto kann nicht gelöscht werden
- Das letzte Admin-Konto kann nicht gelöscht werden (mindestens ein Administrator muss erhalten bleiben)
- Die Löschung eines Benutzers wird im Audit-Log protokolliert
- Zugehörige Sitzungen werden automatisch gelöscht (Kaskade)
Audit-Log-Verwaltung
Audit-Logs auflisten - /api/audit-log
-
Endpoint:
/api/audit-log -
Methode: GET
-
Beschreibung: Ruft Audit-Log-Einträge mit Filterung, Seitennummerierung und Suchfunktion 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 offsetbasierte Paginierung (hat Vorrang vor Seite)limit(optional): Elemente pro Seite (Standard: 50)startDate(optional): Filtert Logs ab diesem Datum (ISO-Format)endDate(optional): Filtert Logs bis zu diesem Datum (ISO-Format)userId(optional): Filter nach Benutzer-IDusername(optional): Filter nach Benutzernameaction(optional): Filter nach Aktionsnamecategory(optional): Filter nach Kategorie (auth,user_management,config,backup,server)status(optional): Filter nach Status (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 offsetbasierte (offset) Paginierung - Das Feld
detailsenthält geparstes JSON mit zusätzlichem Kontext - Alle Abfragen des Audit-Logs werden protokolliert
- Unterstützt sowohl seitenbasierte (
Filterwerte für Audit-Log abrufen - /api/audit-log/filters
-
Endpoint:
/api/audit-log/filters -
Methode: GET
-
Beschreibung: Ruft verfügbare eindeutige Filterwerte für die Filterung von Audit-Logs ab. Gibt alle unterschiedlichen Aktionen, Kategorien und Status zurück, die in der Audit-Log-Datenbank vorhanden sind. Nützlich zur Befüllung von Filter-Dropdowns in der Benutzeroberfläche.
-
Authentifizierung: Erfordert gültige Sitzung und 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 mit eindeutigen Werten aus der Audit-Log-Datenbank zurück
- Die Werte sind alphabetisch sortiert
- Leere Arrays werden zurückgegeben, wenn keine Daten vorhanden sind oder ein Fehler auftritt
- Wird vom Audit-Protokollbetrachter verwendet, um Filterdropdowns dynamisch zu befüllen
Audit-Logs herunterladen - /api/audit-log/download
- Endpoint:
/api/audit-log/download - Methode: GET
- Beschreibung: Lädt Audit-Logs im CSV- oder JSON-Format mit optionaler Filterung herunter. Nützlich für externe Analyse und Berichterstattung.
- Authentifizierung: Gültige Sitzung und CSRF-Token erforderlich (angemeldeter Benutzer erforderlich)
- Abfrageparameter:
format(optional): Exportformat –csvoderjson(Standard:csv)startDate(optional): Filtert Logs ab diesem Datum (ISO-Format)endDate(optional): Filtert Logs bis zu diesem Datum (ISO-Format)userId(optional): Filter nach Benutzer-IDusername(optional): Filter nach Benutzernameaction(optional): Filter nach Aktionsnamecategory(optional): Filter nach Kategoriestatus(optional): Filter nach Status
- Antwort (CSV):
- Content-Type:
text/csv - Content-Disposition:
attachment; filename="audit-log-YYYY-MM-DD.csv" - CSV-Datei mit Überschriften: ID, Zeitstempel, Benutzer-ID, Benutzername, Aktion, Kategorie, Zieltyp, Ziel-ID, Status, IP-Adresse, User-Agent, Details, Fehlermeldung
- Content-Type:
- Antwort (JSON):
- Content-Type:
application/json - Content-Disposition:
attachment; filename="audit-log-YYYY-MM-DD.json" - JSON-Array mit Einträgen aus dem Audit-Log
- Content-Type:
- Fehlerantworten:
400: Keine Logs zum Exportieren vorhanden401: Nicht autorisiert – Ungültige Sitzung oder CSRF-Token500: Interner Serverfehler
- Hinweise:
- Exportlimit beträgt 10.000 Datensätze
- CSV-Format behandelt Sonderzeichen korrekt
- Das Feld „Details“ im CSV ist als JSON-String serialisiert
- Der Dateiname enthält das aktuelle Datum
Audit-Logs bereinigen - /api/audit-log/cleanup
-
Endpoint:
/api/audit-log/cleanup -
Methode: POST
-
Beschreibung: Löst manuell die Bereinigung alter Audit-Logs basierend auf der Aufbewahrungsfrist aus. Unterstützt den Trockenlauf-Modus, um eine Vorschau der zu löschenden Einträge anzuzeigen.
-
Authentifizierung: Administratorrechte, gültige Sitzung und CSRF-Token erforderlich
-
Anforderungstext:
{"retentionDays": 90,"dryRun": false} -
retentionDays(optional): Überschreibt die Aufbewahrungstage (30–365), andernfalls wird der konfigurierte Wert verwendetdryRun(optional): Wenn true, wird nur angezeigt, was gelöscht würde, ohne tatsächlich zu löschen
-
Response (Trockenlauf):
{"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 Beibehaltungstage (muss zwischen 30 und 365 liegen)401: Nicht autorisiert – Ungültige Sitzung oder CSRF-Token403: Zugriff verboten – Administratorrechte erforderlich500: Interner Serverfehler
-
Hinweise:
- Nur für Administratorbenutzer zugänglich
- Standardmäßige Beibehaltung beträgt 90 Tage, wenn nicht konfiguriert
- Der Bereinigungsvorgang wird im Audit-Log protokolliert
- Der Trockenlauf-Modus ist nützlich, um die Auswirkungen der Bereinigung vorab einzusehen
Audit-Protokoll-Beibehaltung abrufen - /api/audit-log/retention
-
Endpunkt:
/api/audit-log/retention -
Methode: GET
-
Beschreibung: Ruft die aktuelle Konfiguration für die Beibehaltung des Audit-Logs in Tagen ab.
-
Authentifizierung: Gültige Sitzung und CSRF-Token erforderlich (kein angemeldeter Benutzer erforderlich)
-
Antwort:
{"retentionDays": 90} -
Fehlerantworten:
500: Interner Serverfehler
-
Hinweise:
- Standardmäßige Beibehaltung beträgt 90 Tage, wenn nicht konfiguriert
- Kann ohne Authentifizierung abgerufen werden (schreibgeschützt)
Audit-Protokoll-Beibehaltung aktualisieren - /api/audit-log/retention
-
Endpunkt:
/api/audit-log/retention -
Methode: PATCH
-
Beschreibung: Aktualisiert die Beibehaltungsdauer des Audit-Logs in Tagen. Diese Einstellung legt fest, wie lange Audit-Logs vor der automatischen Bereinigung aufbewahrt werden.
-
Authentifizierung: Administratorrechte, gültige Sitzung und CSRF-Token erforderlich
-
Anforderungstext:
{"retentionDays": 120} -
retentionDays: Erforderlich, muss zwischen 30 und 365 Tagen liegen -
Response:
{"success": true,"retentionDays": 120} -
Fehlerantworten:
400: Ungültige Beibehaltungstage (muss zwischen 30 und 365 liegen)401: Nicht autorisiert – Ungültige Sitzung oder CSRF-Token403: Zugriff verboten – Administratorrechte erforderlich500: Interaler Serverfehler
-
Hinweise:
- Nur für Administrator-Benutzer zugänglich
- Konfigurationsänderungen werden im Audit-Log protokolliert
- Die Aufbewahrungsfrist wirkt sich auf automatische und manuelle Bereinigungsvorgänge aus
Database Management
Datenbank sichern - /api/database/backup
- Endpunkt:
/api/database/backup - Methode: GET
- Beschreibung: Erstellt eine Sicherung der Datenbank im binären Format (.db) oder im SQL-Format (.sql). Die Sicherungsdatei wird automatisch mit einem zeitgestempelten 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ärinhalt der Datei (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: Zugriff verboten – Administratorrechte erforderlich500: Erstellung des Datenbank-Backups fehlgeschlagen
- Hinweise:
- Nur für Administrator-Benutzer zugänglich
- Das binäre Format verwendet die Backup-Methode von SQLite zur Sicherstellung der Integrität
- Das SQL-Format erstellt einen Text-Dump aller Datenbankinhalte
- Der Zeitstempel im Dateinamen verwendet die lokale Zeitzone des Servers
- Der Backup-Vorgang wird im Audit-Log 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 Sicherungskopie und löscht alle Sitzungen nach der Wiederherstellung aus Sicherheitsgründen.
-
Authentifizierung: Erfordert Administratorrechte, gültige Sitzung und CSRF-Token
-
Anfrage-Body: FormData mit einem Dateifeld namens
database- Die Datei muss entweder
.db,.sqlite,.sqlite3(binäres Format) oder.sql(SQL-Format) sein - Maximale Dateigröße: 100 MB
- 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 angegeben, Dateigröße überschritten, ungültiges Dateiformat oder Datenbank-Integritätsprüfung fehlgeschlagen401: Nicht autorisiert – Ungültige Sitzung oder CSRF-Token403: Zugriff verboten – Administratorrechte erforderlich500: Wiederherstellung der Datenbank fehlgeschlagen (ursprüngliche Datenbank wird aus dem Sicherheits-Backup wiederhergestellt, falls die Wiederherstellung fehlschlägt)
-
Hinweise:
- Nur für Administrator-Benutzer zugänglich
- Erstellt automatisch ein Sicherheits-Backup vor der Wiederherstellung
- Unterstützt sowohl das binäre (.db) als auch das SQL-Format (.sql)
- Überprüft die Datenbankintegrität nach der Wiederherstellung
- Falls die Wiederherstellung fehlschlägt, wird automatisch aus dem Sicherheits-Backup 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 - Der Wiederherstellungsvorgang wird im Audit-Log protokolliert
- Für das SQL-Format wird der SQL-Inhalt vor der Ausführung überprüft
- Die Datenbankverbindung wird nach der Wiederherstellung neu initialisiert
- Alle Caches werden nach der Wiederherstellung ungültig gemacht
Backup-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 Kombination aus Server und Sicherung ab. Gibt eine Zuordnung für eine einfache Nachschlagefunktion zurück.
-
Authentifizierung: Erfordert gültige Sitzung und 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 letzten Backup-Zeitstempel fehlgeschlagen
-
Hinweise:
- Gibt sowohl eine Map (zur einfachen Suche nach
server_id:backup_name) als auch das rohe Array-Format zurück - Beinhaltet Cache-Control-Header, um Caching zu verhindern
- Nützlich zur Verfolgung der letzten Sicherungszeiten über alle Server-Sicherungs-Kombinationen hinweg
- Zeitstempel sind im ISO-Format
- Gibt sowohl eine Map (zur einfachen Suche nach
Verwaltung der Anwendungsprotokolle
Anwendungsprotokolle abrufen - /api/application-logs
-
Endpunkt:
/api/application-logs -
Methode: GET
-
Beschreibung: Ruft Einträge aus den Anwendungsprotokolldateien ab. Unterstützt das Lesen der aktuellen und rotierten Protokolldateien mit Tail-Funktionalität.
-
Authentifizierung: Erfordert Administratorrechte, gültige Sitzung und CSRF-Token
-
Abfrageparameter:
file(optional): Name der zu lesenden Protokolldatei –application.log,application.log.1,application.log.2, usw. Wenn nicht angegeben, wird eine Liste der verfügbaren Dateien zurückgegebentail(optional): Anzahl der zurückzugebenden Zeilen vom Ende der Datei (Standard: 1000, minimal: 1, maximal: 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 Dateiparameter):
{"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 zwischen 1 und 10000 liegen) oder ungültiges Format des Dateiparameters401: Nicht autorisiert – Ungültige Sitzung oder CSRF-Token403: Zugriff verboten – Administratorrechte erforderlich404: Protokolldatei nicht gefunden500: Lesen der Protokolldatei fehlgeschlagen
-
Hinweise:
- Nur für Administratorbenutzer 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 über eine Umgebungsvariable festgelegt (Standard:
application.log) - Gibt eine Liste der verfügbaren Protokolldateien zurück, wenn kein Dateiparameter angegeben ist
- Dateinamen werden validiert, um Verzeichnisdurchlaufangriffe zu verhindern
- Rotierte Dateien sind fortlaufend nummeriert (
.1,.2, usw.)
Anwendungsprotokolle exportieren - /api/application-logs/export
- Endpunkt:
/api/application-logs/export - Methode: GET
- Beschreibung: Exportiert Anwendungsprotokolleinträge im gefilterten Textformat. Unterstützt Filterung nach Protokollstufe und Suchbegriff.
- Authentifizierung: Erfordert Administratorrechte, gültige Sitzung und CSRF-Token
- Abfrageparameter:
file(erforderlich): Name der zu exportierenden Protokolldatei –application.log,application.log.1,application.log.2, usw.logLevels(optional): Kommagetrennte Liste der einzuschließenden Protokollstufen –INFO,WARN,ERROR(Standard:INFO,WARN,ERROR)search(optional): Suchbegriff zur Filterung der Protokollzeilen (nicht beachtungssensibel)
- Antwort:
- Content-Type:
text/plain - Content-Disposition:
attachment; filename="duplistatus-logs-YYYY-MM-DDTHH-MM-SS.txt" - Gefilterter Protokollinhalt als Nur-Text
- Content-Type:
- Fehlerantworten:
400: Dateiparameter ist erforderlich oder hat ein ungültiges Format401: Nicht autorisiert – Ungültige Sitzung oder CSRF-Token403: Zugriff verboten – Administratorrechte erforderlich500: Export der Protokolle fehlgeschlagen
- Hinweise:
- Nur für Administratorbenutzer zugänglich
- Exportiert gefilterte Protokolleinträge basierend auf Protokollstufe und Suchkriterien
- Unterstützt Filterung nach Protokollstufen:
INFO,WARN,ERROR - Die Filterung nach Suchbegriff erfolgt nicht beachtungssensibel
- Leere Zeilen werden automatisch herausgefiltert
- Der Name der Protokolldatei wird über eine Umgebungsvariable festgelegt (Standard:
application.log) - Dateinamen werden validiert, um Verzeichnisdurchlaufangriffe zu verhindern
- Der exportierten Datei wird ein Zeitstempel in den Dateinamen eingefügt
- Nützlich für externe Analyse und Fehlerbehebung