Saltar al contenido principal

Calendario

Libre WebUI incluye un calendario personal. Cada usuario que inicia sesión dispone de sus propias vistas mensual y semanal con eventos puntuales y periódicos; las automatizaciones programadas también proyectan en la misma cuadrícula sus próximas ejecuciones y su historial.

Eventos

Un evento tiene título, notas opcionales, hora de inicio, hora de finalización opcional, indicador de día completo y regla de periodicidad opcional. Los títulos y notas se cifran en reposo con la misma envoltura que los chats y las notas.

La periodicidad utiliza el modelo de activación compartido:

TipoCamposSignificado
onceatUna única ejecución
hourlyminute, startHour?, endHour?Cada hora dentro de un intervalo
dailyhour, minuteCada día a una hora local determinada
weeklydayOfWeek, hour, minuteCada semana en un día elegido
monthlydayOfMonth, hour, minuteCada mes en un día elegido
yearlymonth, dayOfMonth, hour, minuteCada año en una fecha elegida

Los eventos periódicos se almacenan una sola vez. Las consultas de intervalo los expanden en el servidor: cada ejecución proyectada incluye un baseEventId que apunta al evento original, de modo que modificarlo actualiza todas las ejecuciones futuras. Un dayOfMonth posterior al final del mes se ajusta al último día. Todos los cálculos utilizan la zona horaria local del servidor.

Calendarios con nombre y uso compartido

Además del ámbito personal predeterminado, un usuario puede crear hasta 20 calendarios con nombre, cada uno con un color de visualización opcional. Los eventos incluyen un calendarId opcional; los que no lo tienen pertenecen al ámbito predeterminado, que sigue siendo privado.

Los calendarios se comparten mediante el modelo común de permisos: read permite al destinatario ver el calendario y sus eventos junto a los suyos, y write también le permite crear y editar. Los eventos creados por un colaborador se almacenan en la cuenta del propietario del calendario, por lo que las cuotas, la eliminación y el archivo portátil siguen ligados al propietario. El acceso se vuelve a autorizar en cada solicitud; revocar un permiso oculta el calendario en la siguiente lectura. Al eliminar un calendario, sus eventos vuelven al ámbito predeterminado del propietario y se quitan los permisos.

Recordatorios

Un evento puede incluir un desfase de recordatorio (reminderMinutes, hasta 14 días). El ciclo con arrendamiento del programador recorre los recordatorios vencidos y publica una notificación calendar-reminder en el buzón del propietario. Una operación de comparación y asignación por ejecución garantiza que nunca se vuelva a activar, incluso en eventos periódicos.

Importación y exportación de ICS

GET /api/calendar/export?calendarId= descarga un calendario (o el ámbito predeterminado) como archivo .ics RFC 5545: marcas UTC, texto escapado, reglas RRULE básicas asignadas a los tipos nativos y bloques VALARM para recordatorios. POST /api/calendar/import acepta una carga ICS (hasta 2 MB / 1,000 eventos) en un calendario escribible. El importador admite horas UTC y flotantes, valores DATE de día completo y reglas FREQ sencillas. Las reglas que no puede representar fielmente (INTERVAL, COUNT, UNTIL, EXDATE) importan el evento sin periodicidad y se contabilizan como descartadas en lugar de desviarse silenciosamente.

Acceso de los modelos

Tres herramientas de chat integradas dan acceso al calendario bajo la identidad del usuario que las invoca: list_calendar_events (solo lectura), create_calendar_event y delete_calendar_event (ambas con efectos secundarios y sujetas al flujo normal de aprobación).

API

Todos los endpoints exigen autenticación. Las lecturas incluyen los eventos propios y los calendarios compartidos; las escrituras requieren propiedad o permiso de escritura en el calendario de destino.

MétodoRutaFinalidad
GET/api/calendar/events?from=&to=Eventos de un intervalo, periodicidad expandida
POST/api/calendar/eventsCrear un evento
PUT/api/calendar/events/:eventIdActualizar un evento
DELETE/api/calendar/events/:eventIdEliminar un evento
GET/api/calendar/calendarsCalendarios propios y compartidos
POST/api/calendar/calendarsCrear un calendario con nombre
PUT/api/calendar/calendars/:idCambiar nombre o color
DELETE/api/calendar/calendars/:idEliminar calendario (los eventos se desvinculan)
GET/api/calendar/exportExportación ICS
POST/api/calendar/importImportación ICS

Las consultas de intervalo reciben límites from/to en milisegundos desde la época Unix y abarcan como máximo 13 meses por solicitud. Un usuario puede almacenar hasta 2000 eventos; los títulos tienen un límite de 200 caracteres y las notas de 10,000.