Pular para o conteúdo principal

Calendário

O Libre WebUI inclui um calendário pessoal. Cada usuário conectado tem suas próprias visões mensal e semanal com eventos únicos e recorrentes, e as automações agendadas projetam suas próximas ocorrências e histórico de execuções na mesma grade.

Eventos

Um evento tem título, notas opcionais, horário de início, horário de término opcional, indicador de dia inteiro e regra de recorrência opcional. Títulos e notas são criptografados em repouso com o mesmo envelope usado para chats e notas.

A recorrência usa o modelo compartilhado de acionadores:

TipoCamposSignificado
onceatUma única ocorrência
hourlyminute, startHour?, endHour?A cada hora dentro de uma janela
dailyhour, minuteTodos os dias em um horário local
weeklydayOfWeek, hour, minuteToda semana no dia escolhido
monthlydayOfMonth, hour, minuteTodo mês no dia escolhido
yearlymonth, dayOfMonth, hour, minuteTodo ano na data escolhida

Eventos recorrentes são armazenados uma vez. Consultas de intervalo os expandem no servidor; cada ocorrência projetada carrega um baseEventId que aponta ao evento original, de modo que editar a origem atualiza todas as ocorrências futuras. Um dayOfMonth além do fim do mês é ajustado ao último dia. Todos os cálculos usam o fuso horário local do servidor.

Calendários nomeados e compartilhamento

Além do escopo pessoal padrão, um usuário pode criar até 20 calendários nomeados, cada um com cor opcional. Eventos podem ter um calendarId; sem ele, ficam no escopo padrão privado.

Calendários nomeados usam o modelo comum de permissões: read permite ao destinatário ver calendário e eventos ao lado dos seus; write também permite criar e editar eventos. Eventos criados por colaboradores são armazenados na conta do proprietário do calendário, mantendo cotas, exclusão e arquivo portátil no escopo do proprietário. O acesso é reautorizado em cada solicitação; revogar uma permissão oculta o calendário na próxima leitura. Excluir um calendário devolve seus eventos ao escopo padrão do proprietário e remove suas permissões.

Lembretes

Um evento pode ter um deslocamento de lembrete (reminderMinutes, até 14 dias). O ciclo com concessão do agendador verifica lembretes vencidos e publica uma notificação calendar-reminder na caixa de entrada do proprietário. Um compare-and-set por ocorrência garante que nenhuma seja repetida, inclusive em eventos recorrentes.

Importação e exportação ICS

GET /api/calendar/export?calendarId= baixa um calendário (ou o escopo padrão) como arquivo RFC 5545 .ics: horários UTC, texto escapado, regras RRULE básicas mapeadas dos tipos nativos e blocos VALARM para lembretes. POST /api/calendar/import aceita um payload ICS (até 2 MB/1.000 eventos) em um calendário gravável. O importador trata horários UTC e flutuantes, valores DATE de dia inteiro e regras FREQ simples. Regras que não pode representar fielmente (INTERVAL, COUNT, UNTIL, EXDATE) importam o evento sem recorrência e são contadas como descartadas, em vez de se desviarem silenciosamente.

Acesso por modelos

Três ferramentas integradas dão aos modelos acesso ao calendário sob a identidade do usuário: list_calendar_events (somente leitura), create_calendar_event e delete_calendar_event (ambas com efeito colateral e, portanto, sujeitas ao fluxo padrão de aprovação).

API

Todos os endpoints exigem autenticação. Leituras incluem eventos próprios e calendários compartilhados; gravações exigem propriedade ou permissão de escrita no calendário.

MétodoCaminhoFinalidade
GET/api/calendar/events?from=&to=Eventos no intervalo, recorrência expandida
POST/api/calendar/eventsCriar evento
PUT/api/calendar/events/:eventIdAtualizar evento
DELETE/api/calendar/events/:eventIdExcluir evento
GET/api/calendar/calendarsCalendários nomeados próprios e compartilhados
POST/api/calendar/calendarsCriar calendário nomeado
PUT/api/calendar/calendars/:idRenomear ou alterar a cor
DELETE/api/calendar/calendars/:idExcluir calendário (eventos são desvinculados)
GET/api/calendar/exportExportação ICS
POST/api/calendar/importImportação ICS

As consultas usam limites from/to em milissegundos desde epoch e abrangem no máximo 13 meses por solicitação. Um usuário pode armazenar até 2000 eventos; títulos são limitados a 200 caracteres e notas a 10.000.