Календар
Libre WebUI містить особистий календар. Кожен користувач отримує перегляди місяця й тижня з одноразовими та повторюваними подіями, а заплановані автоматизації показують майбутні запуски й історію в тій самій сітці.
Події
Подія має заголовок, необов’язкові нотатки, час початку, необов’язковий час завершення, прапорець усього дня та правило повторення. Заголовки й нотатки шифруються під час зберігання так само, як чати й нотатки.
Повторення використовує спільну модель тригерів:
| Тип | Поля | Значення |
|---|---|---|
once | at | Одне спрацювання |
hourly | minute, startHour?, endHour? | Щогодини у визначеному вікні |
daily | hour, minute | Щодня за місцевим часом |
weekly | dayOfWeek, hour, minute | Щотижня у вибраний день |
monthly | dayOfMonth, hour, minute | Щомісяця у вибраний день |
yearly | month, dayOfMonth, hour, minute | Щороку у вибрану дату |
Повторювані події зберігаються один раз. Запити діапазону розгортають їх на сервері: кожне спроєктоване спрацювання має baseEventId, що вказує на вихідну подію, тому її редагування змінює всі майбутні спрацювання. dayOfMonth після кінця місяця обмежується останнім днем. Усі обчислення використовують локальний часовий пояс сервера.
Іменовані календарі та спільний доступ
Крім типового особистого календаря, користувач може створити до 20 іменованих календарів із необов’язковим кольором. Події мають необов’язковий calendarId; без нього вони перебувають у типовій приватній області.
Календарі використовують спільну модель дозволів: read дає змогу бачити календар і події разом із власними, а write — також створювати та редагувати. Події співавтора зберігаються в обліковому записі власника календаря, тож квоти, видалення й переносний архів належать власнику. Доступ перевіряється за кожним запитом; відкликання приховує календар під час наступного читання. Видалення календаря переносить його події до типової області власника й видаляє дозволи.
Нагадування
Подія може мати зміщення нагадування (reminderMinutes, до 14 днів). Орендований такт планувальника автоматизацій знаходить належні нагадування й публікує calendar-reminder у скриньку власника; атомарне порівняння й установлення гарантує одне спрацювання кожного повторення.
Імпорт і експорт ICS
GET /api/calendar/export?calendarId= завантажує календар або типову область як файл RFC 5545 .ics: часові позначки UTC, екранований текст, базові RRULE та блоки VALARM. POST /api/calendar/import приймає ICS (до 2 MB / 1,000 подій) у календар із правом запису. Імпортер обробляє UTC і плаваючий час, значення цілого дня DATE та прості правила FREQ; правила, які неможливо точно представити (INTERVAL, COUNT, UNTIL, EXDATE), імпортуються без повторення та рахуються як відкинуті, а не непомітно зміщуються.
Доступ моделей
Три вбудовані інструменти чату надають моделі доступ від імені користувача: list_calendar_events лише читає, а create_calendar_event і delete_calendar_event мають побічні ефекти й потребують стандартного схвалення.
API
Усі кінцеві точки потребують автентифікації. Читання охоплює власні події та надані календарі; запис потребує права власності або дозволу write.
| Метод | Шлях | Призначення |
|---|---|---|
GET | /api/calendar/events?from=&to= | Події діапазону з розгорнутими повтореннями |
POST | /api/calendar/events | Створити подію |
PUT | /api/calendar/events/:eventId | Оновити подію |
DELETE | /api/calendar/events/:eventId | Видалити подію |
GET | /api/calendar/calendars | Власні й надані іменовані календарі |
POST | /api/calendar/calendars | Створити іменований календар |
PUT | /api/calendar/calendars/:id | Перейменувати або змінити колір |
DELETE | /api/calendar/calendars/:id | Видалити календар, від’єднавши події |
GET | /api/calendar/export | Експорт ICS |
POST | /api/calendar/import | Імпорт ICS |
Діапазон використовує from/to в мілісекундах епохи й охоплює не більше 13 місяців за запит. Користувач може зберігати до 2000 подій; заголовок обмежено 200 символами, нотатки — 10,000.