taskmanager/API_DOCUMENTATION.md
2025-11-12 17:16:01 +01:00

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 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 ❌ ✅ ✅ ✅