API : Tâches
L’objet tâche
Section intitulée « L’objet tâche »{ "id": "019f74a1-…", "workspaceId": "019f7464-…", "title": "Buy paint", "description": "Matte white, 10l", "priority": "HIGH", "status": "PENDING", "blockedReason": null, "dueDate": "2026-08-01T00:00:00Z", "listId": "019f7488-…", "creator": { "userId": "019f…", "firstName": "Greta", "lastName": "Lengl", "avatarUrl": null, "inactive": false }, "assignee": null, "version": 3, "subtasks": [ { "id": "019f…", "title": "Compare prices", "status": "DONE" } ], "attachments": [ { "id": "019f…", "fileName": "color-sample.jpg", "mediaType": "image/jpeg", "sizeBytes": 182734 } ], "createdAt": "2026-07-18T09:30:00Z"}status vaut PENDING, IN_PROGRESS ou DONE (les sous-tâches restent
binaires : PENDING/DONE). blockedReason est non-null lorsque la tâche
est signalée comme bloquée — il est effacé automatiquement lorsque la tâche
est terminée.
priority, description, dueDate, listId et assignee sont
nullables. version s’incrémente à chaque modification et sert au
verrouillage optimiste.
Lorsqu’un membre est retiré d’un espace de travail, les tâches qu’il a
créées sont réattribuées à un « Utilisateur inactif » réservé et ses
assignations sont effacées. Sur ces tâches, creator.inactive vaut true —
affiche un libellé générique plutôt que le nom fictif.
Lister les tâches
Section intitulée « Lister les tâches »GET /api/workspaces/{workspaceId}/tasksRenvoie toutes les tâches de l’espace de travail sous forme de tableau
d’objets tâche (pas encore de pagination). Filtre côté client par
status, listId ou personne assignée.
Créer une tâche
Section intitulée « Créer une tâche »La requête peut porter un id généré côté client (UUIDv4/v7) —
obligatoire lorsqu’un en-tête X-Op-Id est envoyé, pour que les rejeux et
les opérations suivantes en file d’attente puissent référencer la tâche
avant même que le serveur ne l’ait vue.
POST /api/workspaces/{workspaceId}/tasks{ "title": "Buy paint", "description": "Matte white, 10l", "priority": "HIGH", "dueDate": "2026-08-01T00:00:00Z", "listId": "019f7488-…"}Seul title est obligatoire. Renvoie 201 avec { "id": "…" }.
Patcher les champs d’une tâche
Section intitulée « Patcher les champs d’une tâche »PATCH /api/workspaces/{workspaceId}/tasks/{taskId}/fields{ "title": "New title", "dueDate": null }Mise à jour par masque de champs pour la synchronisation hors ligne :
seuls les champs présents dans le corps changent ; un null explicite
vide le champ. Champs patchables : title, description, priority,
dueDate, listId, assigneeId,
blockedReason (un null explicite ou une valeur vide débloque ; ignoré
sur les tâches DONE). Contrairement au PUT, il n’y a pas de
contrôle de version — les modifications concurrentes du même champ se
résolvent selon le principe « dernier écrivain gagnant », dans l’ordre
d’arrivée. Renvoie 204. Erreurs : 400 pour un titre vide, 404 pour
une tâche inconnue.
Mettre à jour une tâche
Section intitulée « Mettre à jour une tâche »PUT /api/workspaces/{workspaceId}/tasks/{taskId}Mise à jour complète — envoie tous les champs plus la version que tu as
lue en dernier :
{ "title": "Buy paint", "description": null, "priority": "NORMAL", "dueDate": "2026-08-01T00:00:00Z", "listId": null, "assigneeId": "019f…", "version": 3}Renvoie 200. Une version obsolète répond 409 — relis puis réessaie.
assigneeId doit être un membre de l’espace de travail ; null retire
l’assignation.
Changer le statut
Section intitulée « Changer le statut »PATCH /api/workspaces/{workspaceId}/tasks/{taskId}{ "status": "IN_PROGRESS" }Accepte PENDING, IN_PROGRESS ou DONE ; passer à DONE efface aussi
blockedReason. Renvoie 200. Ce raccourci ne requiert pas de version.
Copier une tâche
Section intitulée « Copier une tâche »POST /api/workspaces/{workspaceId}/tasks/{taskId}/copy{ "name": "Buy paint (copy)", "preserveCreator": false, "preserveAssignee": false, "includeSubtasks": true, "listId": null}Renvoie 201 avec { "id": "…" }. Les copies restent dans le même espace
de travail ; les pièces jointes ne sont jamais copiées. Les booléens omis
prennent les valeurs par défaut indiquées.
Déplacer une tâche vers un autre espace de travail
Section intitulée « Déplacer une tâche vers un autre espace de travail »POST /api/workspaces/{workspaceId}/tasks/{taskId}/move{ "targetWorkspaceId": "019f…" }Renvoie 200. Tu dois être membre des deux espaces de travail. La personne
assignée est retirée sauf si elle est aussi membre de l’espace cible ;
l’affectation à une liste est retirée ; les pièces jointes suivent la
tâche. Répond 413 si la limite de stockage de l’espace de travail cible
serait dépassée.
Supprimer une tâche
Section intitulée « Supprimer une tâche »DELETE /api/workspaces/{workspaceId}/tasks/{taskId}Renvoie 204. Supprime la tâche avec ses sous-tâches et ses références de
pièces jointes.
