Kalendář
Libre WebUI obsahuje osobní kalendář. Každý přihlášený uživatel má vlastní měsíční a týdenní zobrazení s jednorázovými i opakujícími se událostmi. Plánované automatizace zobrazují nadcházející běhy a historii ve stejné mřížce.
Události
Událost má název, volitelné poznámky, čas začátku, volitelný konec, příznak celého dne a volitelné pravidlo opakování. Názvy a poznámky se při uložení šifrují stejným envelope jako chaty a poznámky.
Opakování používá sdílený model spouštěčů:
| Typ | Pole | Význam |
|---|---|---|
once | at | Jeden výskyt |
hourly | minute, startHour?, endHour? | Každou hodinu v intervalu |
daily | hour, minute | Každý den v určený čas |
weekly | dayOfWeek, hour, minute | Každý týden ve zvolený den |
monthly | dayOfMonth, hour, minute | Každý měsíc ve zvolený den |
yearly | month, dayOfMonth, hour, minute | Každý rok ve zvolené datum |
Opakující se události se ukládají jednou. Rozsahové dotazy je rozbalují na serveru. Každý vypočtený výskyt obsahuje baseEventId odkazující na zdroj, takže změna aktualizuje všechny budoucí výskyty. dayOfMonth za koncem měsíce se omezí na poslední den. Výpočty používají místní časové pásmo serveru.
Pojmenované kalendáře a sdílení
Vedle výchozího osobního rozsahu může uživatel vytvořit až 20 pojmenovaných kalendářů s volitelnou barvou. Události mají volitelné calendarId; bez něj zůstávají v soukromém výchozím rozsahu.
Pojmenované kalendáře se sdílejí společným modelem oprávnění: read umožní příjemci vidět kalendář a události vedle vlastních, zatímco write dovolí také vytváření a úpravy. Události spolupracovníka se ukládají pod účtem vlastníka kalendáře, takže kvóty, mazání a přenosný archiv zůstávají v rozsahu vlastníka. Přístup se znovu ověřuje při každém požadavku; odvolání oprávnění kalendář při příštím čtení skryje. Smazání přesune události do výchozího rozsahu vlastníka a odstraní oprávnění.
Připomenutí
Událost může mít posun připomenutí (reminderMinutes, až 14 dní). Pronajatý tick plánovače automatizací vyhledává splatná připomenutí a publikuje calendar-reminder do schránky vlastníka. Compare-and-set pro každý výskyt zaručuje, že se znovu nespustí, ani u opakování.
Import a export ICS
GET /api/calendar/export?calendarId= stáhne kalendář nebo výchozí rozsah jako soubor .ics RFC 5545 s časovými razítky UTC, escapovaným textem, základními RRULE a bloky VALARM. POST /api/calendar/import přijímá payload ICS do 2 MB/1 000 událostí do zapisovatelného rozsahu. Import zpracovává UTC, plovoucí časy, celodenní DATE a jednoduchá pravidla FREQ. Pravidla, která nelze věrně vyjádřit (INTERVAL, COUNT, UNTIL, EXDATE), se importují bez opakování a ve výsledku se počítají jako vynechaná.
Přístup modelu
Tři vestavěné nástroje chatu dávají modelům přístup ke kalendáři pod identitou volajícího: list_calendar_events je jen pro čtení, zatímco create_calendar_event a delete_calendar_event mají vedlejší účinky a procházejí běžným schvalovacím tokem.
API
Všechny endpointy vyžadují ověření. Čtení pokrývá vlastní události a kalendáře sdílené s uživatelem; zápis vyžaduje vlastnictví nebo oprávnění k zápisu.
| Metoda | Cesta | Účel |
|---|---|---|
GET | /api/calendar/events?from=&to= | Události v rozsahu, rozbalené opakování |
POST | /api/calendar/events | Vytvořit událost |
PUT | /api/calendar/events/:eventId | Aktualizovat událost |
DELETE | /api/calendar/events/:eventId | Smazat událost |
GET | /api/calendar/calendars | Vlastní a sdílené pojmenované kalendáře |
POST | /api/calendar/calendars | Vytvořit pojmenovaný kalendář |
PUT | /api/calendar/calendars/:id | Přejmenovat nebo změnit barvu |
DELETE | /api/calendar/calendars/:id | Smazat kalendář (události se odpojí) |
GET | /api/calendar/export | Export ICS |
POST | /api/calendar/import | Import ICS |
Rozsahové dotazy používají from/to v epochových milisekundách a pokrývají nejvýše 13 měsíců na požadavek. Uživatel může uložit až 2000 událostí; názvy mají limit 200 znaků a poznámky 10 000.