Aller au contenu

API : Flux de calendrier

Chaque membre peut transformer une VUE de tâches — une liste, ou l’un des filtres intelligents — en flux iCalendar (RFC 5545) de ses tâches en attente avec date d’échéance, rendues comme événements « journée entière ». Les flux ne contiennent que les titres et les dates — jamais les descriptions. Les flux sont par utilisateur ET par vue.

Une vue est adressée ainsi :

Vue Valeur view
une liste list:{listId}
toutes les tâches all
assignées à moi assignedToMe
non assignées unassigned
en retard pastDue
échéance proche (7 prochains jours) dueSoon

assignedToMe désigne toujours le PROPRIÉTAIRE du flux ; les fenêtres de pastDue/dueSoon sont évaluées au moment de la récupération, par rapport au jour calendaire UTC.

POST /api/workspaces/{workspaceId}/calendar-feed
{ "view": "assignedToMe", "name": "Assigned to me" }

name est le nom d’affichage de la vue dans la langue de l’appelant — figé au moment de la création pour les flux de filtres (les flux de listes affichent toujours le nom actuel de la liste). Renvoie 201 :

{ "token": "tdmcal_…", "path": "/api/calendar/tdmcal_…" }

Le jeton (256 bits aléatoires, préfixe tdmcal_) n’est affiché qu’une seule fois — le serveur ne stocke que son hachage. Créer à nouveau pour la même vue RÉGÉNÈRE : le jeton précédent cesse de fonctionner immédiatement.

GET /api/workspaces/{workspaceId}/calendar-feed?view={view}

Renvoie { "active": true, "createdAt": "…" } — jamais le jeton lui-même.

DELETE /api/workspaces/{workspaceId}/calendar-feed?view={view}

Renvoie 204 ; idempotent.

GET /api/calendar/{token}

Non authentifié — le jeton est l’identifiant. Sert du text/calendar. L’autorisation est revérifiée à chaque récupération : si le membre quitte l’espace de travail, ou si la liste ou le compte est supprimé, le flux répond 404, exactement comme pour un jeton inconnu ou régénéré.

GET /api/workspaces/{workspaceId}/calendar.ics?view={view}&name={name}

Authentifié par session ; renvoie le même document iCalendar en pièce jointe (name étiquette les vues de filtres). Un instantané — contrairement au flux, il ne se met jamais à jour.