- Authentifizierung & Session-Management (REST)Zuständig für die Sicherheit, User-Logins und Maschine-zu-Maschine (M2M) Kommunikation.MethodeEndpunktBeschreibungPOST/api/v1/auth/loginKlassischer Login via E-Mail/Passwort (gibt JWT zurück).POST/api/v1/auth/sso/samlInitiiert den Enterprise Single Sign-On (z. B. Azure AD).POST/api/v1/auth/refreshErneuert ein ablaufendes Access-Token mithilfe des Refresh-Tokens.POST/api/v1/auth/mfa/verifyÜberprüft den TOTP/MFA-Code bei 2-Faktor-Authentifizierung.2. Mandanten & Standorte (REST)Orientiert an NinjaOne. Ein Mandant (Organization) repräsentiert einen eurer Kunden oder eine interne Abteilung.MethodeEndpunktBeschreibungGET/api/v1/organizationsListet alle Mandanten auf (gefiltert nach RBAC-Rolle des Nutzers).POST/api/v1/organizationsLegt einen neuen Mandanten an.GET/api/v1/organizations/{org_id}/locationsRuft alle physischen Standorte eines Mandanten ab.GET/api/v1/organizations/{org_id}/policiesZeigt die zugewiesenen Richtlinien (Patch-Pläne, Alerts) des Mandanten.3. Agenten & Geräteverwaltung (REST & WebSockets)Hier verschmilzt die Inventarisierung von NinjaOne mit der Verbindungslogik von MeshCentral.MethodeEndpunktBeschreibungPOST/api/v1/agents/enrollEin neues Gerät registriert sich initial (benötigt einen Enroll-Key) und erhält ein Zertifikat.GET/ws/v1/agent/connect[WebSocket] Der Agent verbindet sich dauerhaft mit dem Server (Heartbeat, Command-Listener).GET/api/v1/devicesListet Geräte auf (mit Filtern wie ?status=online&os=windows).GET/api/v1/devices/{device_id}Ruft alle Metadaten eines spezifischen Geräts ab.GET/api/v1/devices/{device_id}/inventoryLiefert Hardware- (CPU, RAM, Disks) und Software-Listen.4. Live-Aktionen & Remote Control (WebSockets via Router)Dies ist das Herzstück à la MeshCentral. Das Vue.js-Frontend baut eine WebSocket-Verbindung zum Server auf, der die Pakete direkt an den WebSocket des Agenten durchreicht (Tunneling).MethodeEndpunktBeschreibungGET/ws/v1/tunnel/{device_id}/kvm[WebSocket] Überträgt den Bildschirm (Desktop) und leitet Maus-/Tastatureingaben weiter.GET/ws/v1/tunnel/{device_id}/terminal[WebSocket] Interaktive Remote-Shell (PowerShell / Bash) in Echtzeit.GET/ws/v1/tunnel/{device_id}/fs[WebSocket] Live-Durchsuchen des Dateisystems und Datei-Transfer in Chunks.POST/api/v1/devices/{device_id}/actions/powerSendet Wake-on-LAN, Neustart- oder Shutdown-Befehle.5. Automatisierung, Skripte & Patching (REST)Fokus auf asynchrone Jobs. NinjaOne ist hier Vorbild: Du sendest einen Job, das System arbeitet ihn ab.MethodeEndpunktBeschreibungPOST/api/v1/scriptsLädt ein neues PowerShell/Bash/Python-Skript in die globale Bibliothek hoch.POST/api/v1/devices/{device_id}/jobs/scriptWeist dem Agenten an, ein Skript auszuführen (Job wird in eine Queue gelegt).GET/api/v1/jobs/{job_id}/outputRuft den Standard-Output (stdout/stderr) eines ausgeführten Skripts ab.POST/api/v1/devices/{device_id}/patching/scanZwingt den Agenten, sofort nach OS- oder Third-Party-Updates zu suchen.POST/api/v1/devices/{device_id}/patching/installStartet die Installation genehmigter Patches.6. Monitoring & Alerting (REST)Die Verarbeitung von Schwellenwerten und Fehlalarmen.MethodeEndpunktBeschreibungGET/api/v1/alerts/activeListet alle aktuell getriggerten Alarme auf (z.B. "Festplatte voll", "Server offline").POST/api/v1/alerts/{alert_id}/acknowledgeQuittiert einen Alarm durch einen Techniker (verhindert weitere Benachrichtigungen).GET/api/v1/devices/{device_id}/metrics/historicalZeitreihen-Daten (CPU/RAM-Verlauf der letzten 30 Tage) für Graphen im UI.7. Audit & Administration (REST)Pflicht für Enterprise-Kunden, um Compliance (z. B. ISO 27001, SOC2) zu gewährleisten.MethodeEndpunktBeschreibungGET/api/v1/audit/logsUnveränderliches Protokoll (Wer hat was wann auf welchem Gerät gemacht?).GET/api/v1/usersVerwaltung von Technikern und Kunden-Admins (RBAC-Zuweisung).PUT/api/v1/system/settingsGlobale RMM-Konfiguration (E-Mail-SMTP, Branding, Webhook-URLs).Architektur-Hinweis für das Rust-BackendUm diese Struktur in Axum sauber zu implementieren, trennt ihr die REST-Logik von der WebSocket-Logik:Axum-Router (REST): Prüft das JWT, fragt die PostgreSQL-Datenbank (via sqlx) ab und liefert JSON an Vue.js.State-Manager (Redis/Memory): Wenn ein REST-Call (z. B. actions/power) einen Befehl erfordert, legt Axum eine Nachricht in einen Redis-Channel oder einen Tokio-Channel.WebSocket-Handler: Lauscht auf diese Channels und drückt die Befehle sofort über die stehende ws://-Verbindung an den jeweiligen Rust-Agenten durch.