2025-03-12 10:31:30 +01:00

9.0 KiB

MYP Backend API-Dokumentation

Dieses Dokument beschreibt detailliert die API-Endpunkte des MYP (Manage Your Printer) Backend-Systems.

Basis-URL

Die Basis-URL für alle API-Anfragen ist: http://localhost:5000 (Entwicklungsumgebung) oder die URL, unter der die Anwendung gehostet wird.

Authentifizierung

Die meisten Endpunkte erfordern eine Authentifizierung. Diese erfolgt über Cookies/Sessions, die bei der Anmeldung erstellt werden. Die Session wird für 7 Tage gespeichert.

Benutzerregistrierung

Endpunkt: POST /auth/register

Beschreibung: Registriert einen neuen Benutzer im System.

Request-Body:

{
  "username": "string", // Erforderlich
  "password": "string", // Erforderlich
  "displayName": "string", // Optional (Standard: username)
  "email": "string" // Optional
}

Erfolgsantwort:

{
  "message": "Registrierung erfolgreich!",
  "user": {
    "id": "string",
    "username": "string",
    "displayName": "string",
    "email": "string",
    "role": "string"
  }
}

Fehlerantwort:

{
  "message": "Benutzername bereits vergeben!"
}

Benutzeranmeldung

Endpunkt: POST /auth/login

Beschreibung: Meldet einen Benutzer an und erstellt eine Session.

Request-Body:

{
  "username": "string", // Erforderlich
  "password": "string" // Erforderlich
}

Erfolgsantwort:

{
  "message": "Anmeldung erfolgreich!",
  "user": {
    "id": "string",
    "username": "string",
    "displayName": "string",
    "email": "string",
    "role": "string"
  }
}

Fehlerantwort:

{
  "message": "Ungültiger Benutzername oder Passwort!"
}

Initialer Administrator

Endpunkt: POST /api/create-initial-admin

Beschreibung: Erstellt einen initialen Admin-Benutzer, falls noch keiner existiert.

Request-Body:

{
  "username": "string", // Erforderlich
  "password": "string", // Erforderlich
  "displayName": "string", // Optional (Standard: username)
  "email": "string" // Optional
}

Erfolgsantwort:

{
  "message": "Administrator wurde erfolgreich erstellt!",
  "user": {
    "id": "string",
    "username": "string",
    "displayName": "string",
    "email": "string",
    "role": "string"
  }
}

Fehlerantwort:

{
  "message": "Es existiert bereits ein Administrator!"
}

Benutzer-Endpunkte

Alle Benutzer abrufen (Admin)

Endpunkt: GET /api/users

Beschreibung: Gibt eine Liste aller Benutzer zurück.

Erforderliche Rechte: Admin

Erfolgsantwort:

[
  {
    "id": 1,
    "username": "string",
    "email": "string",
    "role": "string"
  }
]

Benutzer abrufen (Admin)

Endpunkt: GET /api/users/{userId}

Beschreibung: Gibt die Details eines bestimmten Benutzers zurück.

Erforderliche Rechte: Admin

Erfolgsantwort:

{
  "id": 1,
  "username": "string",
  "email": "string",
  "role": "string"
}

Fehlerantwort:

{
  "message": "Nicht gefunden!"
}

Benutzer aktualisieren (Admin)

Endpunkt: PUT /api/users/{userId}

Beschreibung: Aktualisiert die Daten eines Benutzers.

Erforderliche Rechte: Admin

Request-Body:

{
  "username": "string",
  "email": "string",
  "password": "string",
  "role": "string"
}

Erfolgsantwort:

{
  "id": 1,
  "username": "string",
  "email": "string",
  "role": "string"
}

Fehlerantwort:

{
  "message": "Benutzername bereits vergeben!"
}

Benutzer löschen (Admin)

Endpunkt: DELETE /api/users/{userId}

Beschreibung: Löscht einen Benutzer.

Erforderliche Rechte: Admin

Erfolgsantwort:

{
  "message": "Benutzer gelöscht!"
}

Drucker-Endpunkte

Alle Drucker abrufen

Endpunkt: GET /api/printers

Beschreibung: Gibt eine Liste aller Drucker zurück.

Erfolgsantwort:

[
  {
    "id": 1,
    "name": "string",
    "location": "string",
    "type": "string",
    "status": "string",
    "description": "string"
  }
]

Drucker hinzufügen (Admin)

Endpunkt: POST /api/printers

Beschreibung: Fügt einen neuen Drucker hinzu.

Erforderliche Rechte: Admin

Request-Body:

{
  "name": "string",
  "location": "string",
  "type": "string",
  "description": "string"
}

Erfolgsantwort:

{
  "id": 1,
  "name": "string",
  "location": "string",
  "type": "string",
  "status": "available",
  "description": "string"
}

Drucker abrufen

Endpunkt: GET /api/printers/{printerId}

Beschreibung: Gibt die Details eines bestimmten Druckers zurück.

Erfolgsantwort:

{
  "id": 1,
  "name": "string",
  "location": "string",
  "type": "string",
  "status": "string",
  "description": "string"
}

Fehlerantwort:

{
  "message": "Nicht gefunden!"
}

Drucker aktualisieren (Admin)

Endpunkt: PUT /api/printers/{printerId}

Beschreibung: Aktualisiert die Daten eines Druckers.

Erforderliche Rechte: Admin

Request-Body:

{
  "name": "string",
  "location": "string",
  "type": "string",
  "status": "string",
  "description": "string"
}

Erfolgsantwort:

{
  "id": 1,
  "name": "string",
  "location": "string",
  "type": "string",
  "status": "string",
  "description": "string"
}

Drucker löschen (Admin)

Endpunkt: DELETE /api/printers/{printerId}

Beschreibung: Löscht einen Drucker.

Erforderliche Rechte: Admin

Erfolgsantwort:

{
  "message": "Drucker gelöscht!"
}

Druckauftrags-Endpunkte

Alle Druckaufträge abrufen

Endpunkt: GET /api/jobs

Beschreibung: Gibt eine Liste aller Druckaufträge zurück (für Admins) oder der eigenen Druckaufträge (für Benutzer).

Erfolgsantwort:

[
  {
    "id": 1,
    "title": "string",
    "start_time": "string (ISO 8601)",
    "end_time": "string (ISO 8601)",
    "duration": 60,
    "status": "string",
    "comments": "string",
    "user_id": 1,
    "printer_id": 1,
    "remaining_time": 30
  }
]

Druckauftrag erstellen

Endpunkt: POST /api/jobs

Beschreibung: Erstellt einen neuen Druckauftrag.

Request-Body:

{
  "title": "string",
  "duration": 60,
  "printer_id": 1,
  "comments": "string"
}

Erfolgsantwort:

{
  "id": 1,
  "title": "string",
  "start_time": "string (ISO 8601)",
  "end_time": "string (ISO 8601)",
  "duration": 60,
  "status": "active",
  "comments": "string",
  "user_id": 1,
  "printer_id": 1,
  "remaining_time": 60
}

Fehlerantwort:

{
  "message": "Drucker ist nicht verfügbar!"
}

Druckauftrag abrufen

Endpunkt: GET /api/jobs/{jobId}

Beschreibung: Gibt die Details eines bestimmten Druckauftrags zurück.

Erfolgsantwort:

{
  "id": 1,
  "title": "string",
  "start_time": "string (ISO 8601)",
  "end_time": "string (ISO 8601)",
  "duration": 60,
  "status": "string",
  "comments": "string",
  "user_id": 1,
  "printer_id": 1,
  "remaining_time": 30
}

Fehlerantwort:

{
  "message": "Nicht gefunden!"
}

Druckauftrag aktualisieren

Endpunkt: PUT /api/jobs/{jobId}

Beschreibung: Aktualisiert die Daten eines Druckauftrags.

Request-Body:

{
  "status": "string",
  "comments": "string",
  "duration": 30
}

Erfolgsantwort:

{
  "id": 1,
  "title": "string",
  "start_time": "string (ISO 8601)",
  "end_time": "string (ISO 8601)",
  "duration": 90,
  "status": "string",
  "comments": "string",
  "user_id": 1,
  "printer_id": 1,
  "remaining_time": 60
}

Druckauftrag löschen

Endpunkt: DELETE /api/jobs/{jobId}

Beschreibung: Löscht einen Druckauftrag.

Erfolgsantwort:

{
  "message": "Druckauftrag gelöscht!"
}

Verbleibende Zeit eines Druckauftrags abrufen

Endpunkt: GET /api/job/{jobId}/remaining-time

Beschreibung: Gibt die verbleibende Zeit eines aktiven Druckauftrags in Minuten zurück.

Erfolgsantwort:

{
  "remaining_minutes": 30
}

Statistik-Endpunkte

Systemstatistiken abrufen (Admin)

Endpunkt: GET /api/stats

Beschreibung: Gibt Statistiken zu Druckern, Aufträgen und Benutzern zurück.

Erforderliche Rechte: Admin

Erfolgsantwort:

{
  "printers": {
    "total": 10,
    "available": 5,
    "utilization_rate": 0.5
  },
  "jobs": {
    "total": 100,
    "active": 5,
    "completed": 90,
    "avg_duration": 120
  },
  "users": {
    "total": 50
  }
}

Test-Endpunkt

API-Test

Endpunkt: GET /api/test

Beschreibung: Testet, ob die API funktioniert.

Erfolgsantwort:

{
  "message": "MYP Backend API funktioniert!"
}

Fehlercodes

Statuscode Beschreibung
200 OK - Anfrage erfolgreich
201 Created - Ressource erstellt
400 Bad Request - Ungültige Anfrage
401 Unauthorized - Authentifizierung erforderlich
403 Forbidden - Unzureichende Rechte
404 Not Found - Ressource nicht gefunden
500 Internal Server Error - Serverfehler