# API Dokumentation - Aufgabenplaner ## Authentifizierung Alle API-Endpunkte erfordern eine authentifizierte Session über NextAuth. ## Tasks API ### GET /api/tasks Gibt alle Tasks zurück, basierend auf Berechtigungen. **Berechtigung:** - Bearbeiter: Nur eigene Tasks (assigneeId === userId) - Pfleger+: Alle Tasks **Query Parameter:** - `status` (optional): Filtert nach TaskStatus (UNERLEDIGT, IN_BEARBEITUNG, ERLEDIGT) **Response:** `200 OK` ```json [ { "id": "string", "wo": "string", "was": "string", "bisWann": "datetime", "status": "TaskStatus", "beauftragtAm": "datetime?", "firmaBeauftragt": "string?", "createdAt": "datetime", "updatedAt": "datetime", "creator": { "id": "string", "name": "string", "email": "string" }, "assignee": { "id": "string", "name": "string", "email": "string" }, "comments": [...], "files": [...] } ] ``` ### POST /api/tasks Erstellt eine neue Task. **Berechtigung:** Pfleger+ **Request Body:** ```json { "wo": "string", "was": "string", "bisWann": "datetime", "assigneeId": "string", "beauftragtAm": "datetime?" (optional), "firmaBeauftragt": "string?" (optional) } ``` **Response:** `201 Created` --- ### GET /api/tasks/[id] Gibt eine einzelne Task zurück. **Berechtigung:** - User muss Task sehen dürfen (Bearbeiter: nur eigene, andere: alle) **Response:** `200 OK` ### PATCH /api/tasks/[id] Aktualisiert eine Task. **Berechtigung:** - Bearbeiter: Nur Status ihrer eigenen Tasks - Pfleger+: Alle Felder aller Tasks **Request Body (Bearbeiter):** ```json { "status": "TaskStatus" } ``` **Request Body (Pfleger+):** ```json { "wo": "string?" (optional), "was": "string?" (optional), "bisWann": "datetime?" (optional), "status": "TaskStatus?" (optional), "assigneeId": "string?" (optional), "beauftragtAm": "datetime?" (optional), "firmaBeauftragt": "string?" (optional) } ``` **Response:** `200 OK` ### DELETE /api/tasks/[id] Löscht eine Task. **Berechtigung:** Vorgesetzter+ **Response:** `200 OK` --- ## Comments API ### GET /api/tasks/[id]/comments Gibt alle Kommentare einer Task zurück. **Berechtigung:** User muss Task sehen dürfen **Response:** `200 OK` ```json [ { "id": "string", "content": "string", "createdAt": "datetime", "author": { "id": "string", "name": "string", "email": "string" } } ] ``` ### POST /api/tasks/[id]/comments Erstellt einen Kommentar für eine Task. **Berechtigung:** User muss Task sehen dürfen **Request Body:** ```json { "content": "string" } ``` **Response:** `201 Created` --- ## Files API ### GET /api/tasks/[id]/files Gibt alle Dateien einer Task zurück. **Berechtigung:** User muss Task sehen dürfen **Response:** `200 OK` ```json [ { "id": "string", "name": "string", "path": "string", "mimeType": "string", "size": number, "createdAt": "datetime" } ] ``` ### POST /api/tasks/[id]/files Lädt eine Datei für eine Task hoch. **Berechtigung:** User muss Task bearbeiten dürfen (Pfleger+) **Request:** `multipart/form-data` - `file`: File (max 10MB) **Erlaubte Dateitypen:** - PDF (.pdf) - JPEG/JPG (.jpg, .jpeg) - PNG (.png) - Word (.docx) - Excel (.xlsx) **Response:** `201 Created` ### DELETE /api/tasks/[id]/files/[fileId] Löscht eine Datei. **Berechtigung:** User muss Task bearbeiten dürfen (Pfleger+) **Response:** `200 OK` --- ## HTTP Status Codes - `200 OK`: Erfolgreiche Anfrage - `201 Created`: Ressource wurde erstellt - `400 Bad Request`: Validierungsfehler - `401 Unauthorized`: Nicht authentifiziert - `403 Forbidden`: Keine Berechtigung - `404 Not Found`: Ressource nicht gefunden - `500 Internal Server Error`: Serverfehler ## Berechtigungen ### Rollenmatrix | Aktion | BEARBEITER | PFLEGER | VORGESETZTER | ADMIN | |--------|-----------|---------|--------------|-------| | Eigene Tasks sehen | ✅ | ✅ | ✅ | ✅ | | Alle Tasks sehen | ❌ | ✅ | ✅ | ✅ | | Task erstellen | ❌ | ✅ | ✅ | ✅ | | Task bearbeiten | Status eigener Tasks | ✅ | ✅ | ✅ | | Task löschen | ❌ | ❌ | ✅ | ✅ | | Kommentar hinzufügen | Eigene Tasks | ✅ | ✅ | ✅ | | Datei hochladen | ❌ | ✅ | ✅ | ✅ | | Datei löschen | ❌ | ✅ | ✅ | ✅ |