API: Feeds de calendario
Cada miembro puede convertir una VISTA de tareas — una lista, o uno de los filtros inteligentes — en un feed iCalendar (RFC 5545) de sus tareas pendientes con fecha de vencimiento, representadas como eventos de día completo. Los feeds contienen solo títulos y fechas — nunca descripciones. Los feeds son por usuario Y por vista.
Una vista se direcciona así:
| Vista | Valor de view |
|---|---|
| una lista | list:{listId} |
| todas las tareas | all |
| asignadas a mí | assignedToMe |
| sin asignar | unassigned |
| vencidas | pastDue |
| vencen pronto (próximos 7 días) | dueSoon |
assignedToMe siempre se refiere al PROPIETARIO del feed; las ventanas de
pastDue/dueSoon se evalúan en el momento de la consulta contra el día
de calendario en UTC.
Generar (o rotar) un token de feed
Sección titulada «Generar (o rotar) un token de feed»POST /api/workspaces/{workspaceId}/calendar-feed{ "view": "assignedToMe", "name": "Assigned to me" }name es el nombre visible de la vista en el idioma del solicitante — se
guarda como instantánea para los feeds de filtro (los feeds de lista siempre
muestran el nombre actual de la lista). Devuelve 201:
{ "token": "tdmcal_…", "path": "/api/calendar/tdmcal_…" }El token (256 bits aleatorios, prefijo tdmcal_) se muestra exactamente una
vez — el servidor almacena solo su hash. Generarlo de nuevo para la misma
vista lo ROTA: el token anterior deja de funcionar de inmediato.
Estado del feed
Sección titulada «Estado del feed»GET /api/workspaces/{workspaceId}/calendar-feed?view={view}Devuelve { "active": true, "createdAt": "…" } — nunca el token en sí.
Revocar
Sección titulada «Revocar»DELETE /api/workspaces/{workspaceId}/calendar-feed?view={view}Devuelve 204; idempotente.
El feed público
Sección titulada «El feed público»GET /api/calendar/{token}Sin autenticación — el token es la credencial. Sirve text/calendar.
La autorización se vuelve a comprobar en cada consulta: si el miembro abandona
el espacio de trabajo, o se elimina la lista o la cuenta, el feed responde
404, igual que un token desconocido o rotado.
Descarga puntual
Sección titulada «Descarga puntual»GET /api/workspaces/{workspaceId}/calendar.ics?view={view}&name={name}Autenticada por sesión; devuelve el mismo documento iCalendar como adjunto
(name etiqueta las vistas de filtro). Es una instantánea — a diferencia
del feed, nunca se actualiza.
