- Updated printer (socket) API endpoints to use the new data structure - Updated job API endpoints to match the current implementation - Added documentation for new endpoints: job status, abort, finish, and extend - Updated field names to match the camelCase convention used in the backend 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
11 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 (Steckdosen) zurück.
Erfolgsantwort:
[
{
"id": "uuid-string",
"name": "string",
"description": "string",
"status": 0, // 0 = available, 1 = busy
"latestJob": {
// Job-Objekt oder null, wenn kein aktiver Job
}
}
]
Drucker hinzufügen (Admin)
Endpunkt: POST /api/printers
Beschreibung: Fügt einen neuen Drucker hinzu.
Erforderliche Rechte: Admin
Request-Body:
{
"name": "string",
"description": "string",
"ipAddress": "string" // IP-Adresse der Tapo-Steckdose
}
Erfolgsantwort:
{
"id": "uuid-string",
"name": "string",
"description": "string",
"status": 0, // 0 = available, 1 = busy
"latestJob": null
}
Drucker abrufen
Endpunkt: GET /api/printers/{printerId}
Beschreibung: Gibt die Details eines bestimmten Druckers zurück.
Erfolgsantwort:
{
"id": "uuid-string",
"name": "string",
"description": "string",
"status": 0, // 0 = available, 1 = busy
"latestJob": {
// Job-Objekt oder null, wenn kein aktiver Job
}
}
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",
"description": "string",
"ipAddress": "string", // IP-Adresse der Tapo-Steckdose
"status": 0 // 0 = available, 1 = busy
}
Erfolgsantwort:
{
"id": "uuid-string",
"name": "string",
"description": "string",
"status": 0, // 0 = available, 1 = busy
"latestJob": {
// Job-Objekt oder null, wenn kein aktiver Job
}
}
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": "uuid-string",
"socketId": "uuid-string",
"userId": "uuid-string",
"startAt": "string (ISO 8601)",
"durationInMinutes": 60,
"comments": "string",
"aborted": false,
"abortReason": null,
"remainingMinutes": 30
}
]
Druckauftrag erstellen
Endpunkt: POST /api/jobs
Beschreibung: Erstellt einen neuen Druckauftrag.
Request-Body:
{
"printerId": "uuid-string",
"durationInMinutes": 60,
"comments": "string"
}
Erfolgsantwort:
{
"id": "uuid-string",
"socketId": "uuid-string",
"userId": "uuid-string",
"startAt": "string (ISO 8601)",
"durationInMinutes": 60,
"comments": "string",
"aborted": false,
"abortReason": null,
"remainingMinutes": 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": "uuid-string",
"socketId": "uuid-string",
"userId": "uuid-string",
"startAt": "string (ISO 8601)",
"durationInMinutes": 60,
"comments": "string",
"aborted": false,
"abortReason": null,
"remainingMinutes": 30
}
Fehlerantwort:
{
"message": "Nicht gefunden!"
}
Druckauftrag Kommentare aktualisieren
Endpunkt: PUT /api/jobs/{jobId}/comments
Beschreibung: Aktualisiert die Kommentare eines Druckauftrags.
Request-Body:
{
"comments": "string"
}
Erfolgsantwort:
{
"id": "uuid-string",
"socketId": "uuid-string",
"userId": "uuid-string",
"startAt": "string (ISO 8601)",
"durationInMinutes": 60,
"comments": "string",
"aborted": false,
"abortReason": null,
"remainingMinutes": 30
}
Druckauftrag abbrechen
Endpunkt: POST /api/jobs/{jobId}/abort
Beschreibung: Bricht einen laufenden Druckauftrag ab.
Request-Body:
{
"reason": "string" // Optional
}
Erfolgsantwort:
{
"id": "uuid-string",
"socketId": "uuid-string",
"userId": "uuid-string",
"startAt": "string (ISO 8601)",
"durationInMinutes": 60,
"comments": "string",
"aborted": true,
"abortReason": "string",
"remainingMinutes": 0
}
Druckauftrag vorzeitig beenden
Endpunkt: POST /api/jobs/{jobId}/finish
Beschreibung: Beendet einen laufenden Druckauftrag vorzeitig.
Erfolgsantwort:
{
"id": "uuid-string",
"socketId": "uuid-string",
"userId": "uuid-string",
"startAt": "string (ISO 8601)",
"durationInMinutes": 45, // Tatsächliche Dauer bis zum Beenden
"comments": "string",
"aborted": false,
"abortReason": null,
"remainingMinutes": 0
}
Druckauftrag verlängern
Endpunkt: POST /api/jobs/{jobId}/extend
Beschreibung: Verlängert die Laufzeit eines Druckauftrags.
Request-Body:
{
"minutes": 30, // Zusätzliche Minuten
"hours": 0 // Zusätzliche Stunden (optional)
}
Erfolgsantwort:
{
"id": "uuid-string",
"socketId": "uuid-string",
"userId": "uuid-string",
"startAt": "string (ISO 8601)",
"durationInMinutes": 90, // Aktualisierte Gesamtdauer
"comments": "string",
"aborted": false,
"abortReason": null,
"remainingMinutes": 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,
"job_status": "active", // active, completed
"socket_status": "busy" // busy, available
}
Status eines Druckauftrags abrufen
Endpunkt: GET /api/job/{jobId}/status
Beschreibung: Gibt detaillierte Statusinformationen zu einem Druckauftrag zurück.
Erfolgsantwort:
{
"job": {
"id": "uuid-string",
"socketId": "uuid-string",
"userId": "uuid-string",
"startAt": "string (ISO 8601)",
"durationInMinutes": 60,
"comments": "string",
"aborted": false,
"abortReason": null,
"remainingMinutes": 30
},
"status": "active", // active, completed, aborted
"socketStatus": "busy", // busy, available
"remainingMinutes": 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 |