カレンダー
Libre WebUI には個人カレンダーが含まれます。サインインした利用者はそれぞれ、単発イベントと繰り返しイベントに対応する月表示と週表示を利用できます。スケジュールされた自動化の今後の実行予定と実行履歴も同じグリッドに表示されます。
イベント
イベントには、タイトル、任意のメモ、開始時刻、任意の終了時刻、終日フラグ、任意の繰り返し規則があります。タイトルとメモは、チャットやノートと同じエンベロープで保存時に暗号化されます。
繰り返しには共通のトリガーモデルを使用します。
| 種類 | フィールド | 意味 |
|---|---|---|
once | at | 1 回だけ実行 |
hourly | minute, startHour?, endHour? | 指定時間帯の毎時 |
daily | hour, minute | 毎日、指定した時計時刻 |
weekly | dayOfWeek, hour, minute | 毎週、選択した曜日 |
monthly | dayOfMonth, hour, minute | 毎月、選択した日 |
yearly | month, dayOfMonth, hour, minute | 毎年、選択した日付 |
繰り返しイベントは 1 件だけ保存されます。範囲クエリではサーバー側で各回を展開し、投影された各イベントには元イベントを指す baseEventId が設定されます。そのため、元イベントを編集すると将来のすべての回が更新されます。dayOfMonth が月末を超える場合は、その月の最終日に丸められます。すべての繰り返し計算にはサーバーのローカルタイムゾーンを使用します。
名前付きカレンダーと共有
既定の個人スコープに加えて、利用者は任意の表示色を持つ名前付きカレンダーを最大 20 個作成できます。イベントには任意の calendarId があり、指定されていないイベントは非公開の既定スコープに保存されます。
名前付きカレンダーは共通の権限モデルで共有されます。read 権限を付与された相手は、自分のカレンダーと並べてそのカレンダーとイベントを表示できます。write 権限があれば、さらにイベントを作成・編集できます。共同編集者が作成したイベントはカレンダー所有者のアカウントに保存されるため、クォータ、削除、ポータブルアーカイブは所有者のスコープに従います。アクセスはリクエストごとに再認可され、権限を取り消すと次の読み取りからカレンダーが非表示になります。カレンダーを削除すると、そのイベントは所有者の既定スコープに戻され、権限は削除されます。
リマインダー
イベントにはリマインダーのオフセット(reminderMinutes、最大 14 日)を設定できます。自動化スケジューラーのリース付き Tick が期限を迎えたリマインダーを走査し、イベント所有者の受信箱へ calendar-reminder 通知を発行します。各回に対する compare-and-set により、繰り返しイベントを含め、同じ回が再通知されることはありません。
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)は、時間を黙ってずらすのではなく、繰り返しなしでイベントを取り込み、破棄した規則としてレスポンスに件数を示します。
モデルからのアクセス
3 つの組み込みチャットツールが、呼び出した利用者の ID でモデルにカレンダーアクセスを提供します。list_calendar_events は読み取り専用で、create_calendar_event と delete_calendar_event は副作用を伴うため、標準のツール承認フローの対象です。
API
すべてのエンドポイントで認証が必要です。イベントの読み取り対象は、呼び出し元自身のイベントと共有されたカレンダーです。書き込みには、対象カレンダーの所有権または書き込み権限が必要です。
| メソッド | パス | 目的 |
|---|---|---|
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 境界はエポックミリ秒で、1 リクエストの期間は最大 13 か月です。利用者は最大 2000 件のイベントを保存でき、タイトルは 200 文字、メモは 10,000 文字までです。