Ir al contenido principal

Gestión de configuración

Obtener la configuración de correo electrónico - /api/configuration/email

  • Endpoint: /api/configuration/email

  • Método: GET

  • Descripción: Recupera la configuración actual de notificaciones por correo electrónico y si las notificaciones por correo están habilitadas/configuradas.

  • Autenticación: Requiere sesión válida y token CSRF

  • Respuesta (configurado):

    {
    "configured": true,
    "config": {
    "host": "smtp.example.com",
    "port": 465,
    "connectionType": "ssl",
    "username": "user@example.com",
    "mailto": "admin@example.com",
    "senderName": "duplistatus",
    "fromAddress": "user@example.com",
    "requireAuth": true,
    "hasPassword": true
    },
    "message": "Email is configured and ready to use."
    }
  • Respuesta (no configurado):

    {
    "configured": false,
    "config": null,
    "message": "Email is not configured. Please configure SMTP settings."
    }
  • Respuestas de error:

    • 400: La clave maestra no es válida - Todas las contraseñas y configuraciones cifradas deben reconfigurarse
    • 401: No autorizado - Sesión o token CSRF no válido
    • 500: No se pudo obtener la configuración de correo electrónico
  • Notas:

    • Devuelve la configuración sin la contraseña por motivos de seguridad
    • Incluye el campo hasPassword para indicar si se ha establecido la contraseña
    • Incluye los campos connectionType (plain|starttls|ssl), senderName, fromAddress y requireAuth
    • Indica si las notificaciones por correo están disponibles para uso en pruebas y producción
    • Maneja los errores de validación de la clave maestra de forma adecuada

Actualizar la configuración de correo electrónico - /api/configuration/email

  • Endpoint: /api/configuration/email

  • Método: POST

  • Descripción: Actualiza la configuración de notificaciones por correo electrónico SMTP.

  • Autenticación: Requiere sesión válida y token CSRF

  • Cuerpo de la solicitud:

    {
    "host": "smtp.example.com",
    "port": 465,
    "secure": true,
    "username": "user@example.com",
    "password": "password",
    "mailto": "admin@example.com"
    }
  • Respuesta:

    {
    "success": true,
    "message": "SMTP configuration saved successfully"
    }
  • Respuestas de error:

    • 400: Faltan campos obligatorios o número de puerto no válido
    • 401: No autorizado - Sesión o token CSRF no válido
    • 500: No se pudo guardar la configuración SMTP
  • Notas:

    • Todos los campos (host, puerto, nombre de usuario, contraseña, mailto) son obligatorios
    • El puerto debe ser un número válido entre 1 y 65535
    • El campo secure es booleano (true para SSL/TLS)
    • La contraseña se gestiona por separado mediante el punto de conexión de contraseña

Eliminar la configuración de correo electrónico - /api/configuration/email

  • Endpoint: /api/configuration/email

  • Método: DELETE

  • Descripción: Elimina la configuración de notificaciones por correo electrónico SMTP.

  • Autenticación: Requiere sesión válida y token CSRF

  • Respuesta:

    {
    "success": true,
    "message": "SMTP configuration deleted successfully"
    }
  • Respuestas de error:

    • 401: No autorizado - Sesión o token CSRF no válido
    • 404: No se encontró ninguna configuración SMTP para eliminar
    • 500: No se pudo eliminar la configuración SMTP
  • Notas:

    • Esta operación elimina permanentemente la configuración SMTP
    • Devuelve 404 si no existe ninguna configuración para eliminar

Actualizar la contraseña de correo electrónico - /api/configuration/email/password

  • Endpoint: /api/configuration/email/password

  • Método: PATCH

  • Descripción: Actualiza la contraseña de correo electrónico para la autenticación SMTP.

  • Autenticación: Requiere sesión válida y token CSRF

  • Cuerpo de la solicitud:

    {
    "password": "new-password",
    "config": {
    "host": "smtp.example.com",
    "port": 465,
    "secure": true,
    "username": "user@example.com",
    "mailto": "admin@example.com"
    }
    }
  • Respuesta:

    {
    "message": "Email password updated successfully"
    }
  • Respuestas de error:

    • 400: La contraseña debe ser una cadena o faltan campos de configuración obligatorios
    • 401: No autorizado - Sesión o token CSRF no válido
    • 500: No se pudo actualizar la contraseña de correo electrónico
  • Notas:

    • La contraseña puede ser una cadena vacía para borrarla
    • Si no existe ninguna configuración SMTP, crea una mínima a partir de la configuración proporcionada
    • El parámetro config es obligatorio cuando no existe una configuración SMTP existente
    • La contraseña se almacena de forma segura mediante cifrado

Obtener el token CSRF de contraseña de correo electrónico - /api/configuration/email/password

  • Endpoint: /api/configuration/email/password

  • Método: GET

  • Descripción: Recupera un token CSRF para operaciones relacionadas con la contraseña de correo electrónico.

  • Autenticación: Requiere sesión válida

  • Respuesta:

    {
    "csrfToken": "csrf-token-string"
    }
  • Respuestas de error:

    • 401: Sesión inválida o expirada
    • 500: Error al generar el token CSRF
  • Notas:

    • Devuelve el token CSRF para usarlo en operaciones de actualización de contraseña
    • La sesión debe ser válida para generar el token

Obtener la configuración unificada - /api/configuration/unified

  • Endpoint: /api/configuration/unified

  • Método: GET

  • Descripción: Recupera un objeto de configuración unificada que contiene todos los datos de configuración, incluyendo ajustes de cron, frecuencia de notificaciones y servidores con copias de seguridad.

  • Autenticación: Requiere sesión válida y token CSRF

  • Respuesta:

    {
    "ntfy": {
    "url": "https://ntfy.sh",
    "topic": "duplistatus-notifications",
    "accessToken": ""
    },
    "templates": {
    "language": "en-GB",
    "success": {
    "title": "✅ {status} - {backup_name} @ {server_name}",
    "message": "Backup {backup_name} on {server_name} completed with status '{status}' at {backup_date} in {duration}.",
    "priority": "default",
    "tags": "duplicati, duplistatus, success"
    },
    "warning": {
    "title": "⚠️ {status} - {backup_name} @ {server_name}",
    "message": "Backup {backup_name} on {server_name} completed with status '{status}' at {backup_date}.",
    "priority": "high",
    "tags": "duplicati, duplistatus, warning, error"
    },
    "overdueBackup": {
    "title": "🕑 Overdue - {backup_name} @ {server_name}",
    "message": "The backup {backup_name} is overdue on {server_name}.",
    "priority": "default",
    "tags": "duplicati, duplistatus, overdue"
    }
    },
    "email": {
    "host": "smtp.example.com",
    "port": 465,
    "connectionType": "ssl",
    "username": "user@example.com",
    "mailto": "admin@example.com",
    "senderName": "duplistatus",
    "fromAddress": "user@example.com",
    "requireAuth": true,
    "hasPassword": true
    },
    "overdue_tolerance": "2h",
    "backup_settings": {
    "server1:backup1": {
    "notificationEvent": "all",
    "expectedInterval": 24,
    "overdueBackupCheckEnabled": true,
    "intervalUnit": "hours",
    "expectedBackupDate": "2025-02-07T00:00:00.000Z",
    "lastBackupDate": "2025-02-06T00:00:00.000Z"
    }
    },
    "serverAddresses": [
    {
    "id": "server1",
    "name": "Server 1",
    "server_url": "http://localhost:8200"
    }
    ],
    "cronConfig": {
    "cronExpression": "*/20 * * * *",
    "enabled": true
    },
    "notificationFrequency": "every_day",
    "serversWithBackups": [
    {
    "id": "server1",
    "name": "Server 1",
    "backupName": "backup1",
    "server_url": "http://localhost:8200",
    "alias": "My Server",
    "note": "Primary backup server",
    "hasPassword": true,
    "expectedBackupDate": "2025-02-07T00:00:00.000Z",
    "lastBackupDate": "2025-02-06T00:00:00.000Z"
    }
    ]
    }
  • Respuestas de error:

    • 500: Error del servidor al obtener la configuración unificada
  • Notas:

    • Devuelve todos los datos de configuración en una sola respuesta
    • Incluye configuración de cron, frecuencia de notificaciones y servidores con copias de seguridad
    • La configuración de correo electrónico incluye el campo hasPassword pero no la contraseña real
    • Obtiene todos los datos en paralelo para un mejor rendimiento

Obtener la configuración de NTFY - /api/configuration/ntfy

  • Endpoint: /api/configuration/ntfy

  • Método: GET

  • Descripción: Recupera la configuración actual de NTFY.

  • Autenticación: Requiere sesión válida y token CSRF

  • Respuesta:

    {
    "ntfy": {
    "url": "https://ntfy.sh",
    "topic": "duplistatus-notifications",
    "accessToken": "optional-access-token"
    }
    }
  • Respuestas de error:

    • 401: No autorizado - Sesión o token CSRF inválido
    • 500: No se pudo obtener la configuración de NTFY
  • Notas:

    • Devuelve la configuración actual de NTFY
    • Se utiliza para la gestión del sistema de notificaciones
    • Requiere autenticación para acceder a los datos de configuración

Obtener la configuración de notificaciones - /api/configuration/notifications

  • Endpoint: /api/configuration/notifications

  • Método: GET

  • Descripción: Recupera la configuración actual de frecuencia de notificaciones.

  • Autenticación: Requiere sesión válida y token CSRF

  • Respuesta:

    {
    "value": "every_day"
    }
  • Respuestas de error:

    • 401: No autorizado - Sesión o token CSRF inválido
    • 500: No se pudo obtener la configuración
  • Notas:

    • Recupera la configuración actual de frecuencia de notificaciones
    • Se utiliza para la gestión de notificaciones de copia de seguridad retrasada
    • Devuelve uno de: "onetime", "every_day", "every_week", "every_month"

Actualizar la configuración de notificaciones - /api/configuration/notifications

  • Endpoint: /api/configuration/notifications

  • Método: POST

  • Descripción: Actualiza la configuración de notificaciones (ajustes de NTFY o frecuencia de notificaciones).

  • Autenticación: Requiere sesión válida y token CSRF

  • Cuerpo de la solicitud: Para la configuración de NTFY:

    {
    "ntfy": {
    "enabled": true,
    "url": "https://ntfy.sh",
    "topic": "duplistatus-notifications",
    "accessToken": "optional-access-token"
    }
    }

Para la frecuencia de notificación:

{
"value": "every_week"
}
  • Respuesta: Para la configuración de NTFY:

    {
    "message": "Notification config updated successfully",
    "ntfy": {
    "enabled": true,
    "url": "https://ntfy.sh",
    "topic": "duplistatus-notifications",
    "accessToken": "optional-access-token"
    }
    }

Para la frecuencia de notificación:

{
"value": "every_week"
}
  • Valores disponibles: "onetime", "every_day", "every_week", "every_month"
  • Respuestas de error:
    • 401: No autorizado - Sesión o token CSRF inválido
    • 400: La configuración de NTFY es obligatoria o el valor es inválido
    • 500: Error del servidor al actualizar la configuración de notificaciones
  • Notas:
    • Admite actualizaciones tanto de la configuración de NTFY como de la frecuencia de notificaciones
    • Solo actualiza la configuración de NTFY cuando se proporciona el campo ntfy
    • Actualiza la frecuencia de notificación cuando se proporciona el campo value
    • Genera un tema predeterminado si no se proporciona ninguno
    • Mantiene la configuración existente
    • Usa el campo accessToken en lugar de campos separados de nombre de usuario/contraseña
    • Valida el valor de frecuencia de notificación contra las opciones permitidas
    • Afecta la frecuencia con la que se envían las notificaciones retrasadas

Actualizar la configuración de copias de seguridad - /api/configuration/backup-settings

  • Endpoint: /api/configuration/backup-settings

  • Método: POST

  • Descripción: Actualiza la configuración de notificaciones de copia de seguridad para servidores/copias de seguridad específicos.

  • Autenticación: Requiere sesión válida y token CSRF

  • Cuerpo de la solicitud:

    {
    "backupSettings": {
    "Server Name:Backup Name": {
    "notificationEvent": "all",
    "expectedInterval": 24,
    "overdueBackupCheckEnabled": true,
    "intervalUnit": "hours"
    }
    }
    }
  • Respuesta:

    {
    "message": "Backup settings updated successfully"
    }
  • Respuestas de error:

    • 401: No autorizado - Sesión o token CSRF inválido
    • 400: backupSettings es obligatorio
    • 500: Error del servidor al actualizar la configuración de copias de seguridad
  • Notas:

    • Actualiza la configuración de notificaciones de copia de seguridad para servidores/copias de seguridad específicos
    • Limpia las notificaciones de copia de seguridad retrasada para copias deshabilitadas
    • Borra las notificaciones cuando cambian los ajustes de tiempo de espera

Actualizar plantillas de notificación - /api/configuration/templates

  • Endpoint: /api/configuration/templates

  • Método: POST

  • Descripción: Actualiza las plantillas de notificación.

  • Autenticación: Requiere sesión válida y token CSRF

  • Cuerpo de la solicitud:

    {
    "templates": {
    "success": {
    "title": "✅ {status} - {backup_name} @ {server_name}",
    "message": "Backup {backup_name} on {server_name} completed with status '{status}' at {backup_date} in {duration}.",
    "priority": "default",
    "tags": "duplicati, duplistatus, success"
    }
    }
    }
  • Respuesta:

    {
    "message": "Notification templates updated successfully"
    }
  • Respuestas de error:

    • 401: No autorizado - Sesión o token CSRF inválido
    • 400: Las plantillas son obligatorias
    • 500: Error del servidor al actualizar las plantillas de notificaciones
  • Notas:

    • Actualiza las plantillas de notificaciones para diferentes estados de copia de seguridad
    • Mantiene la configuración existente
    • Las plantillas admiten sustitución de variables

Obtener la tolerancia de retraso - /api/configuration/overdue-tolerance

  • Endpoint: /api/configuration/overdue-tolerance

  • Método: GET

  • Descripción: Recupera la configuración actual de tolerancia de retraso.

  • Respuesta:

    {
    "overdue_tolerance": "2h"
    }
  • Respuestas de error:

    • 500: Error al obtener la tolerancia de retraso
  • Notas:

    • Devuelve la configuración actual de tolerancia de retraso
    • Se utiliza para mostrar la configuración actual

Actualizar la tolerancia de retraso - /api/configuration/overdue-tolerance

  • Endpoint: /api/configuration/overdue-tolerance

  • Método: POST

  • Descripción: Actualiza la configuración de tolerancia de retraso.

  • Autenticación: Requiere sesión válida y token CSRF

  • Cuerpo de la solicitud:

    {
    "overdue_tolerance": "2h"
    }
  • Respuesta:

    {
    "message": "Overdue tolerance updated successfully"
    }
  • Respuestas de error:

    • 401: No autorizado - Sesión o token CSRF inválido
    • 400: Se requiere overdue_tolerance
    • 500: Error del servidor al actualizar la tolerancia de retraso
  • Notas:

    • Actualiza la configuración de tolerancia de copias de seguridad vencidas (acepta formato de cadena como "1h", "2h", etc.; predeterminada para nuevas instalaciones es 2h)
    • Afecta cuándo se consideran vencidas las copias de seguridad
    • Utilizada por el verificador de copias de seguridad vencidas