API

Alles, was das Dashboard zeigt, auch als JSON – mit eigenen Schlüsseln und Rechten.

Die API liefert dieselben Daten wie das Dashboard. Sie ist gedacht für eigene Auswertungen, Statusseiten, Automatisierung und Anbindung an vorhandene Werkzeuge.

Anmeldung #

Erzeuge einen Schlüssel unter Einstellungen → API. Übergib ihn als Bearer-Token:

curl -H "Authorization: Bearer n64_dein_schluessel" \
     https://app.node64.de/api/v1/me

Der Schlüssel wird einmal angezeigt. Wir speichern nur seinen Hash.

Rechte #

Jeder Schlüssel bekommt genau die Rechte, die du auswählst:

RechtErlaubt
account:readKonto- und Nutzerdaten lesen
devices:readGeräte, Gruppen und Uploads lesen
devices:writeGeräte bearbeiten, Gruppen anlegen, Geräte löschen
findings:readBefunde lesen
alerts:readAlarme und Regeln lesen

Ein Schlüssel für eine Statusseite braucht findings:read – mehr nicht.

Endpunkte #

MethodePfadZweck
GET/api/v1/meKonto, Nutzer, Tarif
GET/api/v1/devicesalle Geräte
GET/api/v1/devices/{id}ein Gerät mit Details
PATCH/api/v1/devices/{id}Gerät ändern (Name, Gruppe, Rolle)
DELETE/api/v1/devices/{id}Gerät entfernen
GET/api/v1/groupsGerätegruppen
POST/api/v1/groupsGruppe anlegen
GET/api/v1/findingsBefunde, filterbar
GET/api/v1/uploadsUpload-Historie
GET/api/v1/alertsausgelöste Alarme
GET/api/v1/openapi.jsondie Spezifikation

Beispiele #

Alle offenen Befunde ab „hoch":

curl -H "Authorization: Bearer $KEY" \
     "https://app.node64.de/api/v1/findings?severity=high&status=open"

Wann jedes Gerät zuletzt gemeldet hat:

curl -s -H "Authorization: Bearer $KEY" \
     https://app.node64.de/api/v1/devices | jq '.data[] | {name, last_seen_at, agent_version}'

Einen Score gibt es nicht – auch nicht in der API. Warum, steht unter Befunde verstehen.

Antwortformat #

{
  "data": [ ... ],
  "meta": { "count": 12 }
}

Fehler kommen mit passendem Statuscode und einem Körper:

{ "error": "forbidden", "message": "Missing scope: findings:read" }

Grenzen #

  • Nur lesen und verwalten, nicht steuern. Es gibt keinen Endpunkt, der etwas auf einem Gerät ausführt – aus demselben Grund, aus dem der Agent keinen Kommandokanal hat.
  • Rate-Limit je Schlüssel. Wer in eine Grenze läuft, bekommt 429 und wartet kurz.
  • Versioniert. /api/v1/ bleibt stabil; Änderungen, die etwas brechen, bekommen /api/v2/.

OpenAPI #

Die vollständige Spezifikation liegt unter /api/v1/openapi.json und lässt sich in jeden API-Client importieren.

Etwas unklar?

Wenn hier etwas fehlt oder unverständlich ist, sag uns Bescheid – die Seite wächst mit den Fragen.

Frage stellen