Sari la conținutul principal

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:

TipCâmpuriSemnificație
onceatO singură apariție
hourlyminute, startHour?, endHour?În fiecare oră dintr-un interval
dailyhour, minuteÎn fiecare zi la o anumită oră
weeklydayOfWeek, hour, minuteÎn fiecare săptămână, într-o zi aleasă
monthlydayOfMonth, hour, minuteÎn fiecare lună, într-o zi aleasă
yearlymonth, 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ăCaleScop
GET/api/calendar/events?from=&to=Evenimente dintr-un interval, cu recurența extinsă
POST/api/calendar/eventsCreează un eveniment
PUT/api/calendar/events/:eventIdActualizează un eveniment
DELETE/api/calendar/events/:eventIdȘterge un eveniment
GET/api/calendar/calendarsCalendare denumite proprii și partajate
POST/api/calendar/calendarsCreează un calendar denumit
PUT/api/calendar/calendars/:idRedenumește sau recolorează un calendar
DELETE/api/calendar/calendars/:idȘterge un calendar (evenimentele se detașează)
GET/api/calendar/exportExport ICS
POST/api/calendar/importImport 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.