Skip to content
Zurück zur Startseite

§ DOCUMENTATION

API-Referenz

REST-API-Endpunkte für die Execlave-Control-Plane.

§ 00

Basis-URL & Authentifizierung

Basis-URL: https://api.execlave.com# Alle Endpunkte unten sind unter /api/v1 versioniert # Zwei Authentifizierungsmethoden: # 1. API-Schlüssel (empfohlen für SDK/Automatisierung)curl -H "X-API-Key: exe_prod_your_key_here" ... # 2. Logto-JWT (vom Dashboard verwendet)curl -H "Authorization: Bearer <logto_jwt>" ...

Alle Endpunkte erfordern eine Authentifizierung. API-Schlüssel sind mit exe_prod_ (Produktion), exe_stg_ (Staging) oder exe_dev_ (Entwicklung) präfixiert. Erstellen Sie Schlüssel unter Einstellungen → API-Schlüssel.

Maschinenlesbare Spezifikation. Das vollständige OpenAPI-Dokument wird live bereitgestellt unter api-docs.json , mit einer durchsuchbaren Oberfläche unter /api-docs. Richten Sie einen Client-Generator auf das JSON, um ein typisiertes SDK für jede Sprache zu erzeugen.

§ 01

Antwortformat

Erfolg (einzelnes Element)

{ "data": { "id": "uuid", ... } }

Erfolg (Liste)

{ "data": [...], "meta": { "total": 42 } }

Fehler

{ "error": { "code": "VALIDATION_ERROR", "message": "...", "fields": { ... } } }
§ 02

Agenten

§ 03

Traces

§ 04

Richtlinien

§ 05

Zugriffsgewährungen

§ 06

Webhooks

§ 06.1

Webhook-Signaturen verifizieren

Jede ausgehende Zustellung wird mit HMAC-SHA256 unter Verwendung des Signing-Secrets Ihres Webhooks signiert. Das aktuelle Schema (v2) bindet einen Zeitstempel in die signierte Zeichenkette ein, um Replay-Angriffe zu verhindern; das Legacy-Schema v1 bleibt für laufende Zustellungen während eines Deploys unterstützt.

HeaderBeschreibung
X-Execlave-Signaturesha256=<hex> — HMAC der signierten Nutzlast.
X-Execlave-Signature-Versionv1 oder v2. Standard, wenn der Header fehlt: v1.
X-Execlave-TimestampUnix-Sekunden-Zeitstempel des Zeitpunkts, zu dem die Zustellung signiert wurde. Nur bei v2 gesendet. Empfänger sollten Zustellungen außerhalb eines ±5-Minuten-Fensters ablehnen.
X-Execlave-Idempotency-KeyStabil pro logischem Ereignis (deterministisch in Org/Ereignis/Body) — derselbe Wert über Wiederholungen hinweg. Verwenden Sie ihn zum Deduplizieren auf der Empfängerseite.

Verifizierung auf Empfängerseite (Node.js):

const crypto = require('crypto'); function verify(headers, rawBody, secret) {  const ts = headers['x-execlave-timestamp'];  const sig = headers['x-execlave-signature'].replace('sha256=', '');  const ver = headers['x-execlave-signature-version'] ?? 'v1';   const signedPayload = ver === 'v2' ? `${ts}.${rawBody}` : rawBody;  const expected = crypto.createHmac('sha256', secret)    .update(signedPayload)    .digest('hex');   // Vergleich in konstanter Zeit  const a = Buffer.from(expected, 'hex');  const b = Buffer.from(sig, 'hex');  if (a.length !== b.length || !crypto.timingSafeEqual(a, b)) {    throw new Error('Invalid webhook signature');  }   // v2: ein gleitendes Replay-Fenster erzwingen (±5 Minuten empfohlen)  if (ver === 'v2') {    const now = Math.floor(Date.now() / 1000);    if (Math.abs(now - parseInt(ts, 10)) > 300) {      throw new Error('Webhook timestamp outside replay window');    }  }} // Idempotenz: über X-Execlave-Idempotency-Key deduplizieren (stabil über Wiederholungen).// Schlüssel mit kurzer TTL (z. B. 24 Std.) persistieren und Duplikate ablehnen.

Wichtig: Verifizieren Sie gegen die rohen Anfrage-Bytes, nicht gegen ein neu serialisiertes JSON-Objekt — jede Änderung an Leerzeichen oder Schlüsselreihenfolge bricht den HMAC-Vergleich.

§ 07

Vorfälle (Incidents)

§ 07.1

Statusübergänge & Nebenwirkungen

Ein Wechsel auf resolved, closed oder false_positive setzt die Auflösungs-Zeitstempel, aus denen time_to_resolution_seconds berechnet wird, hängt einen status_change-Eintrag an die Zeitleiste an und benachrichtigt die zugewiesene Person. Wird ein Vorfall mit agentId angelegt, löst das zusätzlich ein trace.error-Webhook-Ereignis aus. Jedes Anlegen und Ändern wird im manipulationssicheren Audit-Log festgehalten.

§ 08

Alarme (Alerts)

§ 08.1

Regel-Lebenszyklus & Triage-Endpunkte

EndpunktRolleFunktion
GET /alerts/rules/:idviewerEine einzelne Regel abrufen.
PATCH /alerts/rules/:id/toggledeveloperRegel aktivieren oder deaktivieren, ohne vollständiges Update — der übliche Weg, eine laute Regel stillzulegen.
DELETE /alerts/rules/:idadminRegel löschen. Die Auslöse-Historie bleibt erhalten.
POST /alerts/firedeveloperAlarm manuell auslösen — nützlich, um das Benachrichtigungs-Routing end-to-end zu testen.
PATCH /alerts/history/:id/acknowledgedeveloperEinen auslösenden Alarm als bestätigt markieren; setzt acknowledgedAt / acknowledgedBy.
PATCH /alerts/history/:id/resolvedeveloperAlarm auflösen und resolvedAt setzen.
PATCH /alerts/history/:id/snoozedeveloperErneute Benachrichtigung unterdrücken, bis snoozedUntil abgelaufen ist.
§ 09

Anomalie-Erkennung & Prognose

Benötigt den Processing-Dienst

Diese Endpunkte werden vom Python-Processing-Dienst bedient. Prüfen Sie zuerst GET /api/v1/anomaly/health — er meldet available, die gemessene latencyMs, die database-Konnektivität und bei Störung einen reason. Ist der Dienst nicht verfügbar, können die Endpunkte für Erkennung, RCA und Prognose keine Ergebnisse liefern.

§ 09.1

Weitere Anomalie-Endpunkte

EndpunktRolleFunktion
GET /anomaly/configsviewerErkennungs-Konfigurationen auflisten. GET /configs/:id ruft eine ab; DELETE /configs/:id (admin) entfernt sie.
GET /anomaly/eventsviewerErkannte Anomalie-Ereignisse auflisten.
PATCH /anomaly/events/:id/acknowledgedeveloperEin Anomalie-Ereignis bestätigen.
GET /anomaly/baselinesviewerDie gelernten Metrik-Baselines einsehen, gegen die bewertet wird.
POST /anomaly/baselines/rebuildadminBaselines neu aufbauen. Body: agentId (optional), metrics[] (Standard: alle drei), lookbackHours (1–720, Standard 168).
POST /anomaly/rcadeveloperUrsachenanalyse für einen Vorfall ausführen. Body: incidentId (Pflicht-UUID), windowHours (1–48, Standard 4).
GET /anomaly/rca/:incidentIdviewerEin zuvor berechnetes RCA-Ergebnis abrufen.
GET /anomaly/forecast/historyviewerFrühere Prognoseläufe auflisten.
§ 10

Rate-Limits

RoutengruppeLimitFenster
Control Plane (Agenten, Richtlinien usw.)100 Anfragenpro Minute
Trace-Aufnahme (POST /traces/ingest)1.000 Anfragenpro Minute
Richtliniendurchsetzung (POST /policies/enforce)10.000 Anfragenpro Minute

Limits gelten pro Organisation. Der Durchsetzungs-Bucket ist für den Hot-Path-Verkehr der SDKs dimensioniert und kann pro Deployment über ENFORCEMENT_RATE_LIMIT_PER_MINUTE angepasst werden. Bei einer Ratenbegrenzung gibt die API 429 Too Many Requests mit einem Retry-After-Header zurück. Der Frontend-API-Client und die SDKs handhaben Wiederholungen automatisch mit exponentiellem Backoff.

API-Referenz — Execlave Docs