API: Zadania
Obiekt zadania
Dział zatytułowany „Obiekt zadania”{ "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 przyjmuje wartości PENDING, IN_PROGRESS lub DONE (podzadania
pozostają binarne: PENDING/DONE). blockedReason jest niepusty, gdy
zadanie jest oznaczone jako zablokowane — czyści się automatycznie po
ukończeniu zadania.
priority, description, dueDate, listId i assignee mogą być null.
version rośnie przy każdej zmianie i chroni
blokowanie optymistyczne.
Gdy członek zostaje usunięty z obszaru roboczego, utworzone przez niego
zadania są przypisywane do zarezerwowanego „Nieaktywnego użytkownika”, a jego
przypisania są czyszczone. W tych zadaniach creator.inactive ma wartość
true — wyświetl ogólną etykietę zamiast nazwy zastępczej.
Lista zadań
Dział zatytułowany „Lista zadań”GET /api/workspaces/{workspaceId}/tasksZwraca wszystkie zadania obszaru roboczego jako tablicę obiektów zadań
(na razie bez paginacji). Filtruj po stronie klienta według status,
listId lub osoby przypisanej.
Tworzenie zadania
Dział zatytułowany „Tworzenie zadania”Żądanie może zawierać wygenerowane po stronie klienta id (UUIDv4/v7) —
wymagane, gdy wysyłany jest nagłówek X-Op-Id, aby powtórzenia i kolejne
operacje z kolejki mogły odwoływać się do zadania, zanim serwer w ogóle je
zobaczy.
POST /api/workspaces/{workspaceId}/tasks{ "title": "Buy paint", "description": "Matte white, 10l", "priority": "HIGH", "dueDate": "2026-08-01T00:00:00Z", "listId": "019f7488-…"}Wymagane jest tylko title. Zwraca 201 z { "id": "…" }.
Częściowa aktualizacja pól zadania
Dział zatytułowany „Częściowa aktualizacja pól zadania”PATCH /api/workspaces/{workspaceId}/tasks/{taskId}/fields{ "title": "New title", "dueDate": null }Aktualizacja z maską pól na potrzeby synchronizacji offline: zmieniają się
tylko pola obecne w treści; jawny null czyści pole. Pola dostępne do
zmiany: title, description, priority, dueDate, listId,
assigneeId, blockedReason (jawny null lub pusta wartość odblokowuje;
ignorowany dla zadań DONE). W odróżnieniu od PUT nie ma kontroli
version —
równoczesne zmiany tego samego pola rozstrzyga kolejność nadejścia:
wygrywa ostatni zapis. Zwraca 204. Błędy: 400 dla pustego tytułu,
404 dla nieznanego zadania.
Aktualizacja zadania
Dział zatytułowany „Aktualizacja zadania”PUT /api/workspaces/{workspaceId}/tasks/{taskId}Pełna aktualizacja — wyślij każde pole plus version, którą ostatnio
odczytałeś:
{ "title": "Buy paint", "description": null, "priority": "NORMAL", "dueDate": "2026-08-01T00:00:00Z", "listId": null, "assigneeId": "019f…", "version": 3}Zwraca 200. Nieaktualna version daje odpowiedź 409 — odczytaj
ponownie i spróbuj jeszcze raz. assigneeId musi być członkiem obszaru
roboczego; null usuwa przypisanie.
Zmiana statusu
Dział zatytułowany „Zmiana statusu”PATCH /api/workspaces/{workspaceId}/tasks/{taskId}{ "status": "IN_PROGRESS" }Przyjmuje PENDING, IN_PROGRESS lub DONE; ustawienie DONE czyści też
blockedReason. Zwraca 200. Ten skrót nie wymaga version.
Kopiowanie zadania
Dział zatytułowany „Kopiowanie zadania”POST /api/workspaces/{workspaceId}/tasks/{taskId}/copy{ "name": "Buy paint (copy)", "preserveCreator": false, "preserveAssignee": false, "includeSubtasks": true, "listId": null}Zwraca 201 z { "id": "…" }. Kopie pozostają w tym samym obszarze
roboczym; załączniki nigdy nie są kopiowane. Pominięte wartości logiczne
przyjmują domyślne wartości pokazane powyżej.
Przenoszenie zadania do innego obszaru roboczego
Dział zatytułowany „Przenoszenie zadania do innego obszaru roboczego”POST /api/workspaces/{workspaceId}/tasks/{taskId}/move{ "targetWorkspaceId": "019f…" }Zwraca 200. Musisz być członkiem obu obszarów roboczych. Przypisanie
osoby jest czyszczone, chyba że jest ona również członkiem docelowego
obszaru; przypisanie do listy jest czyszczone; załączniki przenoszą się
razem z zadaniem. Odpowiada 413, gdy limit przestrzeni docelowego
obszaru roboczego zostałby przekroczony.
Usuwanie zadania
Dział zatytułowany „Usuwanie zadania”DELETE /api/workspaces/{workspaceId}/tasks/{taskId}Zwraca 204. Usuwa zadanie razem z jego podzadaniami i odwołaniami do
załączników.
