API: Aufgaben
Das Aufgaben-Objekt
Abschnitt betitelt „Das Aufgaben-Objekt“{ "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 ist PENDING, IN_PROGRESS oder DONE (Unteraufgaben bleiben
binär: PENDING/DONE). blockedReason ist ungleich null, wenn die
Aufgabe als blockiert markiert ist — es wird automatisch geleert, sobald die
Aufgabe abgeschlossen wird. priority, description, dueDate, listId
und assignee können null sein. version zählt bei jeder Änderung hoch
und sichert das Optimistic Locking ab.
Wenn ein Mitglied aus einem Arbeitsbereich entfernt wird, werden die von ihm
erstellten Aufgaben einem reservierten „Inaktiver Nutzer“ neu zugeordnet und
ihre Zuweisungen aufgehoben. Bei diesen Aufgaben ist creator.inactive gleich
true — zeige eine allgemeine Bezeichnung an statt des Platzhalter-Namens.
Aufgaben auflisten
Abschnitt betitelt „Aufgaben auflisten“GET /api/workspaces/{workspaceId}/tasksLiefert alle Aufgaben des Arbeitsbereichs als Array von Aufgaben-Objekten
(noch keine Paginierung). Filtere clientseitig nach status, listId oder
der zugewiesenen Person.
Eine Aufgabe erstellen
Abschnitt betitelt „Eine Aufgabe erstellen“Die Anfrage darf eine clientseitig generierte id (UUIDv4/v7) enthalten —
erforderlich, wenn ein X-Op-Id-Header gesendet wird, damit Wiederholungen
und gepufferte Folge-Operationen die Aufgabe referenzieren können, bevor
der Server sie je gesehen hat.
POST /api/workspaces/{workspaceId}/tasks{ "title": "Buy paint", "description": "Matte white, 10l", "priority": "HIGH", "dueDate": "2026-08-01T00:00:00Z", "listId": "019f7488-…"}Nur title ist erforderlich. Liefert 201 mit { "id": "…" }.
Aufgabenfelder patchen
Abschnitt betitelt „Aufgabenfelder patchen“PATCH /api/workspaces/{workspaceId}/tasks/{taskId}/fields{ "title": "New title", "dueDate": null }Feldmaskiertes Update für die Offline-Synchronisierung: Nur die im Body
vorhandenen Felder ändern sich; ein explizites null leert ein Feld.
Patchbar: title, description, priority, dueDate, listId,
assigneeId, blockedReason (ein explizites null oder ein leerer Wert
hebt die Blockierung auf; bei DONE-Aufgaben ignoriert). Anders als beim
PUT gibt es keine version-Prüfung —
konkurrierende Änderungen am selben Feld werden in Ankunftsreihenfolge
aufgelöst, der letzte Schreiber gewinnt. Liefert 204. Fehler: 400 bei
leerem Titel, 404 bei unbekannter Aufgabe.
Eine Aufgabe aktualisieren
Abschnitt betitelt „Eine Aufgabe aktualisieren“PUT /api/workspaces/{workspaceId}/tasks/{taskId}Vollständiges Update — sende jedes Feld plus die zuletzt gelesene
version:
{ "title": "Buy paint", "description": null, "priority": "NORMAL", "dueDate": "2026-08-01T00:00:00Z", "listId": null, "assigneeId": "019f…", "version": 3}Liefert 200. Eine veraltete version wird mit 409 beantwortet — erneut
lesen und wiederholen. assigneeId muss ein Mitglied des Arbeitsbereichs
sein; null hebt die Zuweisung auf.
Den Status ändern
Abschnitt betitelt „Den Status ändern“PATCH /api/workspaces/{workspaceId}/tasks/{taskId}{ "status": "IN_PROGRESS" }Akzeptiert PENDING, IN_PROGRESS oder DONE; das Setzen auf DONE leert
zudem blockedReason. Liefert 200. Diese Abkürzung braucht keine
version.
Eine Aufgabe kopieren
Abschnitt betitelt „Eine Aufgabe kopieren“POST /api/workspaces/{workspaceId}/tasks/{taskId}/copy{ "name": "Buy paint (copy)", "preserveCreator": false, "preserveAssignee": false, "includeSubtasks": true, "listId": null}Liefert 201 mit { "id": "…" }. Kopien bleiben im selben
Arbeitsbereich; Anhänge werden nie mitkopiert. Weggelassene Booleans haben
die gezeigten Standardwerte.
Eine Aufgabe in einen anderen Arbeitsbereich verschieben
Abschnitt betitelt „Eine Aufgabe in einen anderen Arbeitsbereich verschieben“POST /api/workspaces/{workspaceId}/tasks/{taskId}/move{ "targetWorkspaceId": "019f…" }Liefert 200. Du musst Mitglied beider Arbeitsbereiche sein. Die
Zuweisung wird entfernt, außer die zugewiesene Person ist auch Mitglied des
Ziels; die Listenzuordnung wird entfernt; Anhänge wandern mit der Aufgabe
mit. Antwortet mit 413, wenn das Speicherlimit des Ziel-Arbeitsbereichs
überschritten würde.
Eine Aufgabe löschen
Abschnitt betitelt „Eine Aufgabe löschen“DELETE /api/workspaces/{workspaceId}/tasks/{taskId}Liefert 204. Löscht die Aufgabe mitsamt ihren Unteraufgaben und
Anhang-Referenzen.
