Aller au contenu principal

Calendrier

Libre WebUI comprend un calendrier personnel. Chaque personne connectée dispose de ses propres vues mensuelle et hebdomadaire avec des événements ponctuels et récurrents. Les automatisations planifiées y projettent également leurs prochaines occurrences et leur historique d’exécution.

Événements

Un événement possède un titre, des notes facultatives, une heure de début, une heure de fin facultative, un indicateur de journée entière et une règle de récurrence facultative. Les titres et les notes sont chiffrés au repos avec la même enveloppe que les discussions et les notes.

La récurrence utilise le modèle de déclenchement commun :

TypeChampsSignification
onceatUne occurrence unique
hourlyminute, startHour?, endHour?Toutes les heures dans une plage donnée
dailyhour, minuteTous les jours à une heure locale donnée
weeklydayOfWeek, hour, minuteToutes les semaines un jour choisi
monthlydayOfMonth, hour, minuteTous les mois un jour choisi
yearlymonth, dayOfMonth, hour, minuteTous les ans à une date choisie

Les événements récurrents ne sont stockés qu’une fois. Les requêtes de plage les développent côté serveur : chaque occurrence projetée comporte un baseEventId qui renvoie à son événement source. Modifier la source actualise ainsi toutes les occurrences futures. Si un dayOfMonth dépasse la fin d’un mois, il est ramené au dernier jour de ce mois. Tous les calculs de récurrence utilisent le fuseau horaire local du serveur.

Calendriers nommés et partage

Au-delà du périmètre personnel par défaut, une personne peut créer jusqu’à 20 calendriers nommés, chacun pouvant avoir une couleur d’affichage. Les événements comportent un calendarId facultatif ; ceux qui n’en ont pas appartiennent au périmètre par défaut, qui reste privé.

Les calendriers nommés sont partagés au moyen du modèle d’autorisation commun : une autorisation read permet à la personne destinataire d’afficher le calendrier et ses événements avec les siens, tandis qu’une autorisation write lui permet en plus d’y créer et de modifier des événements. Les événements créés par une personne collaboratrice sont stockés sous le compte du propriétaire du calendrier. Les quotas, la suppression et l’archive portable restent donc rattachés à ce propriétaire. L’accès est de nouveau autorisé à chaque requête ; révoquer une autorisation masque le calendrier dès la lecture suivante. Supprimer un calendrier rattache ses événements au périmètre par défaut de son propriétaire et supprime ses autorisations.

Rappels

Un événement peut comporter un délai de rappel (reminderMinutes, jusqu’à 14 jours). À chaque cycle avec bail, le planificateur d’automatisations recherche les rappels arrivés à échéance et publie une notification calendar-reminder dans la boîte de réception du propriétaire de l’événement. Une opération de comparaison et échange propre à chaque occurrence garantit qu’elle ne se déclenche jamais une deuxième fois, y compris pour les événements récurrents.

Importation et exportation ICS

GET /api/calendar/export?calendarId= télécharge un calendrier (ou le périmètre par défaut) sous forme de fichier .ics RFC 5545 : horodatages UTC, texte échappé, règles RRULE de base correspondant aux types de récurrence natifs et blocs VALARM pour les rappels. POST /api/calendar/import accepte une charge utile ICS (jusqu’à 2 MB / 1,000 événements) dans un périmètre de calendrier accessible en écriture. L’outil d’importation gère les heures UTC et flottantes, les valeurs DATE pour les journées entières ainsi que les règles FREQ simples. Lorsqu’une règle ne peut pas être représentée fidèlement (INTERVAL, COUNT, UNTIL, EXDATE), l’événement est importé sans récurrence et la réponse la compte comme règle abandonnée au lieu de la laisser dériver silencieusement.

Accès des modèles

Trois outils de discussion intégrés donnent aux modèles accès au calendrier sous l’identité de la personne qui les appelle : list_calendar_events (lecture seule), create_calendar_event et delete_calendar_event (ces deux derniers produisent des effets et sont donc soumis au flux standard d’approbation des outils).

API

Tous les points de terminaison nécessitent une authentification. La lecture des événements couvre ceux de l’appelant ainsi que les calendriers partagés avec lui ; l’écriture exige la propriété du calendrier cible ou une autorisation d’écriture.

MéthodeCheminRôle
GET/api/calendar/events?from=&to=Événements d’une plage, récurrence développée
POST/api/calendar/eventsCréer un événement
PUT/api/calendar/events/:eventIdMettre à jour un événement
DELETE/api/calendar/events/:eventIdSupprimer un événement
GET/api/calendar/calendarsCalendriers nommés personnels et partagés
POST/api/calendar/calendarsCréer un calendrier nommé
PUT/api/calendar/calendars/:idRenommer ou recolorer un calendrier
DELETE/api/calendar/calendars/:idSupprimer un calendrier (événements dissociés)
GET/api/calendar/exportExportation ICS
POST/api/calendar/importImportation ICS

Les requêtes de plage utilisent des limites from/to en millisecondes depuis l’époque Unix et couvrent au maximum 13 mois par requête. Une personne peut stocker jusqu’à 2000 événements ; les titres sont limités à 200 caractères et les notes à 10,000.