4.1 KiB
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
[
{
"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:
{
"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):
{
"status": "TaskStatus"
}
Request Body (Pfleger+):
{
"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
[
{
"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:
{
"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
[
{
"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 Anfrage201 Created: Ressource wurde erstellt400 Bad Request: Validierungsfehler401 Unauthorized: Nicht authentifiziert403 Forbidden: Keine Berechtigung404 Not Found: Ressource nicht gefunden500 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 | ❌ | ✅ | ✅ | ✅ |