Skip to content

REST-API-Referenz

Der Manager stellt eine einzige REST-API unter /api bereit. Die SPA in web/ ruft sie auf; Sie können sie direkt mit einem beliebigen HTTP-Client aufrufen. Es gibt kein GraphQL, kein gRPC für Anwendungsverkehr (gRPC wird nur für den geminio-Tunnel verwendet, intern im Manager).

Diese Seite ist ein Routen-Katalog, keine handgeschriebene Swagger-Spezifikation. Source of truth: cmd/ongrid/main.go (die chi.Router-Mounts) und internal/manager/server/*/http.go (die per-BC-Handler). Klicken Sie sich zum Handler durch für die genauen Request-/Response-Struct-Felder.

Konventionen

  • Basispfad: jede Route hat das Präfix /api. Also wird GET /v1/edges unter https://<manager>/api/v1/edges erreicht.
  • Versionierung: alle Routen liegen unter /v1/. Es gibt kein /v2/. Rückwärtsinkompatible Änderungen werden hinter Feature-Flags oder neuen Routen ausgeliefert.
  • Auth: Bearer-JWT in Authorization: Bearer .... Öffentliche Routen (Login, Refresh, Register, IM-Webhooks, Prometheus' auth_request-Probe) überspringen die Middleware. Aufgelistet in der Tabelle „Öffentlich" unten.
  • Rollen: admin, user, viewer. Schreibrouten erfordern admin (oder die entsprechende Casbin-Aktion wie edge:* / write); Leserouten akzeptieren jede authentifizierte Rolle. viewer darf chatten, aber der Toolbag des Agenten wird auf ClassSafe gefiltert. Siehe ADR-022 Drei-Rollen-RBAC.
  • Fehler: JSON {"error":"code","message":"human text"}. Codes sind stabile Enums (not_found, invalid_argument, unauthorized, forbidden, conflict).
  • Content-Type: jeder Request und jede Response ist application/json, sofern nicht explizit anders vermerkt (gestreamter Chat ist SSE, Log-/Trace-Ingest ist OTLP-Protobuf oder Loki-JSON).

Öffentliche Routen (keine Auth)

MethodePfadZweck
GET/healthzLiveness-Probe
GET/readyzReadiness-Probe
GET/internal/auth/dataplane-verifynginx-auth_request-Probe für Log-/Trace-Ingest
POST/api/v1/auth/loginE-Mail+Passwort gegen JWT eintauschen
POST/api/v1/auth/refreshRefresh-Token gegen frisches Access-Token eintauschen
POST/api/v1/auth/registerSelbstregistrierung (per Config gesteuert)
GET/api/v1/prometheus/authnginx-auth_request-Probe für das Grafana-Embed
POST/api/v1/im/feishu/eventseingehender Feishu/Lark-Callback; Webhook-Signatur ist die Auth

Authentifizierte Routen

iam (Benutzer, Orgs, Sessions)

MethodePfadRolleQuelle
GET/v1/versionbeliebigcmd/ongrid/main.go (inline)
GET/v1/mebeliebiginternal/iam/server/http.go
GET/v1/selfbeliebiginternal/iam/server/http.go
GET/v1/usersbeliebigBenutzer auflisten
POST/v1/usersadminBenutzer erstellen
PATCH/v1/users/{id}adminBenutzer aktualisieren (Name, E-Mail)
PATCH/v1/users/{id}/passwordself oder adminPasswort rotieren
PATCH/v1/users/{id}/roleadminRolle ändern (admin/user/viewer)
DELETE/v1/users/{id}adminBenutzer entfernen
GET/v1/orgsbeliebigOrgs auflisten
POST/v1/orgsadminOrg erstellen
PATCH/v1/orgs/{id}adminOrg aktualisieren
DELETE/v1/orgs/{id}adminOrg entfernen
GET/v1/orgs/{id}/membersbeliebigMitglieder auflisten
POST/v1/orgs/{id}/membersadminMitglied hinzufügen
PATCH/v1/orgs/{id}/members/{user_id}adminMitgliederrolle ändern
DELETE/v1/orgs/{id}/members/{user_id}adminMitglied entfernen

edge (der tunnelverbundene Agent)

MethodePfadRolleBeschreibung
POST/v1/edgesedge:*edge erstellen, gibt Access- und Secret-Key aus
GET/v1/edgesbeliebigedges auflisten
GET/v1/edges/{id}beliebigedge-Detail abrufen
DELETE/v1/edges/{id}edge:*edge löschen
POST/v1/edges/{id}/rotate-secretedge:*Secret-Key rotieren
POST/v1/edges/{id}/upgradeedge:*Remote-Agent-Upgrade mit expliziter URL+sha256 auslösen
POST/v1/edges/{id}/upgrade-packageedge:*Ein-Klick-Bundle-Upgrade (ADR-024)
GET/v1/edges/{id}/processesbeliebigschreibgeschützte Prozessliste (on-demand RPC)
GET/v1/edges/{id}/pluginsbeliebigkonfigurierte + live Plugins der edge auflisten (mit Health)
PUT/v1/edges/{id}/plugins/{name}edge:pluginPlugin aktivieren/deaktivieren + tunen
GET/v1/integrations/plugin-countsbeliebigglobale Plugin-Aktivierungs-/Deaktivierungs-Zählungen (für Homepage-Kachel)

device (Host-Entität, entkoppelt vom Tunnel-Zustand)

MethodePfadRolleBeschreibung
GET/v1/devicesbeliebigHost-Geräte auflisten
GET/v1/devices/{id}beliebigGeräte-Detail abrufen
PATCH/v1/devices/{id}device:*Anzeigename, Tags aktualisieren
DELETE/v1/devices/{id}device:*Gerät entfernen
PATCH/v1/devices/{id}/rolesdevice:*Rollen zuweisen (db, web, cache...)
GET/v1/devices/{id}/edgesbeliebigedges, die dieses Gerät derzeit repräsentieren
GET/v1/devices/{device_id}/shellwebshelleinen WebSSH-Stream öffnen (Websocket-Upgrade)

topology (typisierte CMDB)

MethodePfadRolleBeschreibung
GET/v1/topology/node-typesbeliebigNode-Type-Schemas auflisten
POST/v1/topology/node-typestopology:*Node-Type erstellen
GET/v1/topology/node-types/{name}beliebigeinen Node-Type abrufen
DELETE/v1/topology/node-types/{name}topology:*Node-Type entfernen
GET/v1/topology/nodesbeliebigKnoten auflisten (filterbar nach Typ, Tag)
POST/v1/topology/nodestopology:*Knoten erstellen
GET/v1/topology/nodes/{id}beliebigKnoten abrufen
PATCH/v1/topology/nodes/{id}topology:*Knoten aktualisieren
DELETE/v1/topology/nodes/{id}topology:*Knoten entfernen
GET/v1/topology/relation-typesbeliebigRelation-Type-Schemas auflisten
POST/v1/topology/relation-typestopology:*Relation-Type erstellen
GET/v1/topology/relation-types/{name}beliebigeinen Relation-Type abrufen
DELETE/v1/topology/relation-types/{name}topology:*Relation-Type entfernen
GET/v1/topology/relationsbeliebigKanten (Relationen) auflisten
POST/v1/topology/relationstopology:*Relation erstellen
GET/v1/topology/relations/{id}beliebigRelation abrufen
PATCH/v1/topology/relations/{id}topology:*Relation aktualisieren
DELETE/v1/topology/relations/{id}topology:*Relation entfernen

alert (Regeln, Incidents, Kanäle)

MethodePfadRolleBeschreibung
GET/v1/alert-rulesbeliebigRegeln auflisten
POST/v1/alert-rulesalert:*Regel erstellen
GET/v1/alert-rules/{id}beliebigRegel abrufen
PUT/v1/alert-rules/{id}alert:*Regel ersetzen
DELETE/v1/alert-rules/{id}alert:*Regel entfernen
POST/v1/alert-rules/{id}/enabledalert:*enabled-Flag umschalten
POST/v1/alert-rules/previewalert:*Dry-Run einer Regeldefinition gegen aktuelle Daten
GET/v1/alerts/incidentsbeliebigIncidents auflisten (Filter: status, severity, scope)
GET/v1/alerts/incidents/{id}beliebigIncident abrufen
GET/v1/alerts/incidents/{id}/eventsbeliebigEvent-Timeline
POST/v1/alerts/incidents/{id}/ackbeliebigbestätigen
POST/v1/alerts/incidents/{id}/resolvebeliebigals aufgelöst markieren
POST/v1/alerts/incidents/{id}/silencebeliebigfür N Stunden stummschalten
GET/v1/alerts/incidents/{id}/investigationbeliebigKI-generierten Investigation-Bericht abrufen
POST/v1/alerts/incidents/{id}/investigationbeliebigInvestigation auslösen oder erneut ausführen
GET/v1/alerts/runtime-infobeliebigEvaluator-Takt + Stats des letzten Zyklus
GET/v1/notification-channelsbeliebigKanäle auflisten
POST/v1/notification-channelschannel:*Kanal erstellen
GET/v1/notification-channels/{id}beliebigKanal abrufen
PUT/v1/notification-channels/{id}channel:*Kanal ersetzen
DELETE/v1/notification-channels/{id}channel:*Kanal entfernen
POST/v1/notification-channels/{id}/testchannel:*synthetische Benachrichtigung senden

Siehe Alarmregel-Schema für die JSON-Form einer Regel.

aiops (Chat, Agenten, Modelle)

MethodePfadRolleBeschreibung
GET/v1/agentsbeliebigAgent-Personas auflisten
GET/v1/agents/{name}beliebigPersona-Detail abrufen
DELETE/v1/agents/{name}agent:*eine eingebaute / Disk-Persona löschen (selten; meist nur custom löschbar)
POST/v1/agents/customagent:*benutzerdefinierte Persona erstellen
PATCH/v1/agents/custom/{name}agent:*Benutzer-Persona aktualisieren
DELETE/v1/agents/custom/{name}agent:*Benutzer-Persona löschen
GET/v1/chat/sessionsbeliebigSessions auflisten
POST/v1/chat/sessionsbeliebigSession erstellen
PATCH/v1/chat/sessions/{id}beliebigSession umbenennen / taggen
DELETE/v1/chat/sessions/{id}beliebigSession löschen
GET/v1/chat/sessions/{id}/messagesbeliebigNachrichtenverlauf
POST/v1/chat/sessions/{id}/messagesbeliebigNachricht senden (nicht-streamend, gibt finale Antwort zurück)
POST/v1/chat/sessions/{id}/messages/streambeliebigNachricht senden (SSE-Stream von Token- + Tool-Call-Events)
GET/v1/aiops/modelsbeliebigverfügbare Provider + Modelle (gesteuert durch konfigurierte API-Keys)
POST/v1/aiops/query-translatebeliebigLLM-gestützte PromQL- / LogQL- / TraceQL-Komposition
GET/v1/aiops/mentions/searchbeliebigAutovervollständigung für @edge-, @device-, @dashboard-Mentions
GET/v1/usage/todaybeliebigToken-Nutzung für den aktuellen UTC-Tag

Siehe Agent-Persona-Format für die Markdown-Frontmatter-Form.

knowledge (RAG, Vault, Repos, Uploads)

MethodePfadRolleBeschreibung
GET/v1/knowledge/docsbeliebigDokumente auflisten (Baum)
POST/v1/knowledge/docsknowledge:*Dokument erstellen
GET/v1/knowledge/docs/{id}beliebigDokument abrufen
PATCH/v1/knowledge/docs/{id}knowledge:*Dokumentkörper bearbeiten
PATCH/v1/knowledge/docs/{id}/moveknowledge:*an einen anderen Pfad verschieben
DELETE/v1/knowledge/docs/{id}knowledge:*Dokument entfernen
GET/v1/knowledge/pathsbeliebigPfadknoten auflisten (für den Baum)
GET/v1/knowledge/reposbeliebigGit-Repos auflisten
POST/v1/knowledge/reposknowledge:*Repo registrieren
DELETE/v1/knowledge/repos/{id}knowledge:*Repo entfernen
POST/v1/knowledge/repos/{id}/syncknowledge:*Re-Sync auslösen
POST/v1/knowledge/uploadknowledge:*.md / .txt / .pdf / .docx hochladen (geparst via docextract)
GET/v1/knowledge/searchbeliebigRAG-Abfrage (gibt Chunks + Scores zurück)
POST/v1/knowledge/vault/syncknowledge:*eingebauten Vault von GitHub erneut ziehen
GET/v1/knowledge/ssh-identitiesknowledge:*SSH-Keys für Git-Auth auflisten
POST/v1/knowledge/ssh-identitiesknowledge:*bestehenden SSH-Key registrieren
POST/v1/knowledge/ssh-identities/generateknowledge:*neues Keypair generieren (Private Key verlässt nie den Server)
PATCH/v1/knowledge/ssh-identities/{id}knowledge:*Identität bearbeiten (Name, Kommentar)
DELETE/v1/knowledge/ssh-identities/{id}knowledge:*Identität entfernen

skill (Toolbag-Introspection)

MethodePfadRolleBeschreibung
GET/v1/skillsbeliebigSkills auflisten (manager-scope + edge-scope)
GET/v1/skills/{key}beliebigSkill-Detail abrufen (Schema, Beschreibung, Scope, Klasse)
POST/v1/skills/{key}/executeskill:*direkte Skill-Ausführung (Test / Debugging)

Siehe Skill-Manifest für die On-Disk-skill.json-Form.

logs / traces (schreibgeschützte Proxies)

MethodePfadRolleBeschreibung
GET/v1/logs/query_rangebeliebiggepproxytes LogQL query_range
GET/v1/logs/labelsbeliebiggepproxyte Label-Namen
GET/v1/logs/labels/{name}/valuesbeliebiggepproxyte Label-Werte
GET/v1/traces/searchbeliebiggepproxytes TraceQL /api/search
GET/v1/traces/{trace_id}beliebigein Trace nach ID
GET/v1/traces/tags/{tag}/valuesbeliebiggepproxytes /api/search/tag/.../values

monitor (Dashboards / Panels)

MethodePfadRolleBeschreibung
GET/v1/monitor/panelsbeliebigPanels auflisten
POST/v1/monitor/panelsmonitor:*Panel erstellen
PATCH/v1/monitor/panels/{id}monitor:*Panel bearbeiten
DELETE/v1/monitor/panels/{id}monitor:*Panel entfernen
GET/v1/observability/dashboards/{uid}beliebigrender-bereites Grafana-Dashboard-JSON

metric (pro-Edge-Metrik-Snapshot)

MethodePfadRolleBeschreibung
GET/v1/edges/{id}/metricsbeliebigletzter Closed-Set-Host-Metrik-Snapshot

prometheus (admin)

MethodePfadRolleBeschreibung
POST/v1/prometheus/launchadmindas eingebettete Prometheus (neu) starten
POST/v1/prometheus/query_rangebeliebigLLM-tool-orientiertes query_range (gibt normalisierte Matrix zurück)

imbridge (Chat-Oberflächen — Slack / Telegram / Lark / DingTalk / WeCom)

MethodePfadRolleBeschreibung
GET/v1/im/appsbeliebigverbundene IM-Apps auflisten
POST/v1/im/appsim:*IM-App registrieren
GET/v1/im/apps/{id}beliebigApp abrufen
PUT/v1/im/apps/{id}im:*App aktualisieren
DELETE/v1/im/apps/{id}im:*App entfernen
POST/v1/im/apps/{id}/revealadminmaskierte Secrets aufdecken

marketplace (Skill-Packs)

MethodePfadRolleBeschreibung
GET/v1/marketplace/registriesbeliebigkonfigurierte Registries auflisten
GET/v1/marketplace/installedbeliebiginstallierte Packs auflisten
POST/v1/marketplace/installmarketplace:*Pack aus einer Registry installieren
DELETE/v1/marketplace/installed/{pack_id}marketplace:*Pack deinstallieren

setting (Systemeinstellungen: Integrationen, Defaults, Secrets)

MethodePfadRolleBeschreibung
GET/v1/system-settingsbeliebigsichtbare Einstellungen auflisten
PUT/v1/system-settings/{category}/{key}adminEinstellung upserten
DELETE/v1/system-settings/{category}/{key}adminEinstellung entfernen
GET/v1/system-settings/{category}/{key}/revealadminmaskiertes Secret aufdecken

integration (Konnektivitätstests)

MethodePfadRolleBeschreibung
POST/v1/integrations/grafana/syncadminDashboards + Datasources synchronisieren
POST/v1/integrations/grafana/testadminGrafana-Verbindung testen
POST/v1/integrations/llm/invalidateadmingecachten LLM-Client invalidieren (erzwingt Neu-Lesen der API-Keys)
POST/v1/integrations/loki/testadminLoki-Verbindung testen
POST/v1/integrations/prom/testadminPrometheus-Verbindung testen
POST/v1/integrations/tempo/testadminTempo-Verbindung testen
POST/v1/integrations/websearch/testadminSearXNG / Web-Search-Backend testen

webshell (interaktive Shell über den Tunnel)

MethodePfadRolleBeschreibung
GET/v1/devices/{device_id}/shellwebshellWebSocket-upgegradeten SSH-Stream öffnen
GET/v1/webshell/sessionsbeliebigaktive Sessions auflisten
DELETE/v1/webshell/sessions/{id}webshelleine Session beenden

audit (Admin-Log)

MethodePfadRolleBeschreibung
GET/v1/admin/audit-logsadminmandantenweite Audit-Spur (HLD-010)

Pagination

List-Endpunkte verwenden opake Cursor:

text
GET /v1/edges?limit=50&cursor=eyJpZCI6MTAwMH0

Die Antwort trägt {"items":[...], "next_cursor":"...", "total":...}. next_cursor ist auf der letzten Seite leer.

Rate Limits

Im Open-Source-Build gibt es keine globalen Rate Limits. Das LLM-Budget-Gate (ONGRID_LLM_DAILY_TOKEN_LIMIT) begrenzt den Chat-Traffic — jeder andere Endpunkt hängt von dem ab, was Sie vor den Manager stellen (nginx, Ihr eigenes Gateway).

Versionierung

GET /v1/version gibt {"manager_version":"vX.Y.Z"} zurück. Die SPA liest dies und markiert Edges, deren Agent-Version vom Manager abdriftet. Verwenden Sie es für Upgrade-Tooling.

Siehe auch