Zum Inhalt springen

API: Kommentare

Kommentare sind Diskussionsstränge an einer Aufgabe. Jedes Mitglied des Arbeitsbereichs kann sie lesen und schreiben; Emoji-Reaktionen gelten pro Nutzer und pro Emoji.

GET /api/workspaces/{workspaceId}/tasks/{taskId}/comments

Liefert die Kommentare der Aufgabe, neueste zuerst:

[
{
"id": "019f8a12-…",
"body": "Looks good — ship it.",
"author": {
"userId": "019f7488-…",
"firstName": "Ada",
"lastName": "Lovelace",
"avatarUrl": "/api/avatars/019f7488-…?v=…",
"inactive": false
},
"createdAt": "2026-07-22T09:50:16Z",
"reactions": [
{ "emoji": "👍", "count": 2, "mine": true }
]
}
]

reactions ist pro Emoji aggregiert; mine ist true, wenn der aufrufende Nutzer mit diesem Emoji reagiert hat. author.inactive kennzeichnet Inhalte, deren Autor sein Konto gelöscht hat — Clients zeigen eine lokalisierte Bezeichnung „Inaktiver Nutzer“ an.

POST /api/workspaces/{workspaceId}/tasks/{taskId}/comments
{ "body": "Looks good — ship it." }

Liefert 201 mit { "id": "…" }. Der Text darf nicht leer sein und ist auf 2000 Zeichen begrenzt (sonst 400).

DELETE /api/workspaces/{workspaceId}/tasks/{taskId}/comments/{commentId}

Liefert 204. Nur der Autor des Kommentars und der Eigentümer des Arbeitsbereichs dürfen löschen (sonst 403).

PUT /api/workspaces/{workspaceId}/tasks/{taskId}/comments/{commentId}/reactions/{emoji}
DELETE /api/workspaces/{workspaceId}/tasks/{taskId}/comments/{commentId}/reactions/{emoji}

PUT setzt die Reaktion des aufrufenden Nutzers, DELETE entfernt sie; beide sind idempotent und liefern 204. Das Pfadsegment {emoji} ist das URL-codierte Emoji selbst. Unterstützte Reaktionen: 👍 ❤️ 😄 🎉 👀 🚀 — alles andere beantwortet der Server mit 400.