API: Kalender-Feeds
Jedes Mitglied kann eine Aufgaben-ANSICHT — eine Liste oder einen der Schnellfilter — in einen iCalendar-Feed (RFC 5545) ihrer offenen Aufgaben mit Fälligkeitsdatum verwandeln, dargestellt als ganztägige Termine. Feeds enthalten nur Titel und Termine — nie Beschreibungen. Feeds gelten pro Nutzer UND pro Ansicht.
Eine Ansicht wird so adressiert:
| Ansicht | view-Wert |
|---|---|
| eine Liste | list:{listId} |
| alle Aufgaben | all |
| mir zugewiesen | assignedToMe |
| nicht zugewiesen | unassigned |
| überfällig | pastDue |
| bald fällig (nächste 7 Tage) | dueSoon |
assignedToMe meint immer den BESITZER des Feeds; die Zeitfenster von
pastDue/dueSoon werden beim Abruf gegen den UTC-Kalendertag
ausgewertet.
Ein Feed-Token erzeugen (oder rotieren)
Abschnitt betitelt „Ein Feed-Token erzeugen (oder rotieren)“POST /api/workspaces/{workspaceId}/calendar-feed{ "view": "assignedToMe", "name": "Assigned to me" }name ist der Anzeigename der Ansicht in der Sprache des Aufrufers — für
Filter-Feeds wird er als Schnappschuss gespeichert (Listen-Feeds rendern
immer den aktuellen Listennamen). Liefert 201:
{ "token": "tdmcal_…", "path": "/api/calendar/tdmcal_…" }Das Token (256 Bit Zufall, Präfix tdmcal_) wird genau einmal angezeigt —
der Server speichert nur seinen Hash. Erneutes Erzeugen für dieselbe
Ansicht ROTIERT: das vorherige Token funktioniert sofort nicht mehr.
Feed-Status
Abschnitt betitelt „Feed-Status“GET /api/workspaces/{workspaceId}/calendar-feed?view={view}Liefert { "active": true, "createdAt": "…" } — nie das Token selbst.
Widerrufen
Abschnitt betitelt „Widerrufen“DELETE /api/workspaces/{workspaceId}/calendar-feed?view={view}Liefert 204; idempotent.
Der öffentliche Feed
Abschnitt betitelt „Der öffentliche Feed“GET /api/calendar/{token}Ohne Authentifizierung — das Token ist der Berechtigungsnachweis. Liefert
text/calendar. Die Autorisierung wird bei jedem Abruf neu geprüft:
verlässt das Mitglied den Arbeitsbereich oder wird die Liste oder das Konto
gelöscht, antwortet der Feed mit 404, genau wie bei einem unbekannten
oder rotierten Token.
Einmaliger Download
Abschnitt betitelt „Einmaliger Download“GET /api/workspaces/{workspaceId}/calendar.ics?view={view}&name={name}Session-authentifiziert; liefert dasselbe iCalendar-Dokument als Anhang
(name beschriftet Filter-Ansichten). Ein Schnappschuss — anders als der
Feed aktualisiert er sich nie.
