Calendar
Libre WebUI include un calendar personal. Fiecare utilizator autentificat are propriile vizualizări lunare și săptămânale cu evenimente unice și recurente, iar automatizările programate proiectează în aceeași grilă aparițiile viitoare și istoricul execuțiilor.
Evenimente
Un eveniment are un titlu, note opționale, o oră de început, o oră de sfârșit opțională, un indicator pentru întreaga zi și o regulă de recurență opțională. Titlurile și notele sunt criptate în repaus cu același înveliș folosit pentru chaturi și notițe.
Recurența folosește modelul comun de declanșare:
| Tip | Câmpuri | Semnificație |
|---|---|---|
once | at | O singură apariție |
hourly | minute, startHour?, endHour? | În fiecare oră dintr-un interval |
daily | hour, minute | În fiecare zi la o anumită oră |
weekly | dayOfWeek, hour, minute | În fiecare săptămână, într-o zi aleasă |
monthly | dayOfMonth, hour, minute | În fiecare lună, într-o zi aleasă |
yearly | month, dayOfMonth, hour, minute | În fiecare an, la o dată aleasă |
Evenimentele recurente sunt stocate o singură dată. Interogările pe interval le extind pe server: fiecare apariție proiectată conține un baseEventId care indică evenimentul sursă, astfel încât editarea sursei actualizează toate aparițiile viitoare. Un dayOfMonth care depășește sfârșitul lunii este limitat la ultima zi a acesteia. Toate calculele de recurență folosesc fusul orar local al serverului.
Calendare denumite și partajare
Pe lângă domeniul personal implicit, un utilizator poate crea până la 20 de calendare denumite, fiecare cu o culoare de afișare opțională. Evenimentele au un calendarId opțional; cele fără această valoare rămân în domeniul implicit, care este privat.
Calendarele denumite sunt partajate prin modelul comun de permisiuni: o permisiune read îi permite destinatarului să vadă calendarul și evenimentele sale alături de cele proprii, iar o permisiune write îi permite în plus să creeze și să editeze evenimente. Evenimentele create de un colaborator sunt stocate în contul proprietarului calendarului, astfel încât cotele, ștergerea și arhiva portabilă rămân în domeniul proprietarului. Accesul este reautorizat la fiecare cerere; revocarea unei permisiuni ascunde calendarul la următoarea citire. Ștergerea unui calendar detașează evenimentele înapoi în domeniul implicit al proprietarului și îi elimină permisiunile.
Mementouri
Un eveniment poate include un decalaj pentru memento (reminderMinutes, până la 14 zile). Ciclul închiriat al planificatorului de automatizări găsește mementourile scadente și publică o notificare calendar-reminder în căsuța proprietarului evenimentului; o operație de comparare și setare pentru fiecare apariție garantează că aceasta nu se declanșează din nou, inclusiv pentru evenimente recurente.
Import și export ICS
GET /api/calendar/export?calendarId= descarcă un calendar (sau domeniul implicit) ca fișier RFC 5545 .ics: marcaje temporale UTC, text escap-at, reguli RRULE de bază mapate din tipurile native de recurență și blocuri VALARM pentru mementouri. POST /api/calendar/import acceptă un conținut ICS (până la 2 MB / 1,000 de evenimente) într-un domeniu de calendar cu drept de scriere. Importatorul gestionează ore UTC și flotante, valori DATE pentru întreaga zi și reguli FREQ simple; pentru regulile pe care nu le poate reprezenta fidel (INTERVAL, COUNT, UNTIL, EXDATE), importă evenimentul fără recurență și le numără în răspuns ca reguli eliminate, în loc să introducă discrepanțe în tăcere.
Accesul modelelor
Trei instrumente de chat integrate oferă modelelor acces la calendar sub identitatea utilizatorului care le apelează: list_calendar_events (numai citire), create_calendar_event și delete_calendar_event (ambele au efecte secundare și trec, prin urmare, prin fluxul standard de aprobare a instrumentelor).
API
Toate endpoint-urile necesită autentificare. Citirea evenimentelor acoperă evenimentele proprii ale apelantului și calendarele partajate cu acesta; scrierea necesită calitatea de proprietar sau o permisiune de scriere pentru calendarul țintă.
| Metodă | Cale | Scop |
|---|---|---|
GET | /api/calendar/events?from=&to= | Evenimente dintr-un interval, cu recurența extinsă |
POST | /api/calendar/events | Creează un eveniment |
PUT | /api/calendar/events/:eventId | Actualizează un eveniment |
DELETE | /api/calendar/events/:eventId | Șterge un eveniment |
GET | /api/calendar/calendars | Calendare denumite proprii și partajate |
POST | /api/calendar/calendars | Creează un calendar denumit |
PUT | /api/calendar/calendars/:id | Redenumește sau recolorează un calendar |
DELETE | /api/calendar/calendars/:id | Șterge un calendar (evenimentele se detașează) |
GET | /api/calendar/export | Export ICS |
POST | /api/calendar/import | Import ICS |
Interogările pe interval acceptă limite from/to în milisecunde de la epoch și acoperă cel mult 13 luni per cerere. Un utilizator poate stoca până la 2000 de evenimente; titlurile sunt limitate la 200 de caractere, iar notele la 10,000.