Start / Docs
Wie DiffMon bei Monitoring, Alerts, Sicherheit und API-Integration funktioniert.

API-Überblick

Nutzen Sie die öffentliche API, um Monitore, Snapshots und Webhooks programmgesteuert zu verwalten.

Alles, was im UI möglich ist, lässt sich auch über die öffentliche API automatisieren.

Authentifizierung

  • Bearer-Tokens, die im Dashboard erstellt werden.
  • Senden Sie bei jeder Anfrage Authorization: Bearer <token>.
  • Rate Limits gelten pro Organisation und pro Endpoint.

Häufige Endpunkte

  • POST /api/monitors zum Erstellen eines Monitors.
  • GET /api/monitors/{id}/diffs zum Abrufen der Änderungshistorie.
  • POST /api/webhooks/worker/run zum Auslösen von Test-Deliveries.
Shell
curl -H "Authorization: Bearer $TOKEN" \
  https://api.diffmon.example.com/api/monitors

Fehler

Fehler enthalten Request-IDs und machine-readable Codes, sodass Sie gezielt retryn oder sinnvolle Meldungen upstream ausgeben können.

Diff-Beispiele

Wenn DiffMon eine Änderung erkennt, enthält die Diff-Antwort Klassifikation, Schweregrad und Änderungsdetails pro Pfad. Diese Beispiele zeigen, was Sie beim Abfragen der API erwarten können.

API-Monitor — Schema-Änderung erkannt

Eine GET /api/monitors/{id}/diffs/{diffId}-Antwort für einen JSON-Endpoint, dessen Schema sich geändert hat:

Diff-Antwort — schema_change
JSON
{
  "id": "dif_01JX8M79YQ",
  "monitorId": "mon_api_prices",
  "classification": "schema_change",
  "schemaChanges": 2,
  "valueChanges": 1,
  "topSeverity": "critical",
  "diffFingerprint": "sha256:7a8c…",
  "changes": [
    {
      "path": "$.items[*].price",
      "category": "schema",
      "op": "replace",
      "severity": "critical",
      "detail": "number → string"
    },
    {
      "path": "$.items[*].currency",
      "category": "schema",
      "op": "add",
      "severity": "medium"
    },
    {
      "path": "$.generatedAt",
      "category": "value",
      "op": "replace",
      "severity": "info"
    }
  ],
  "requestId": "req_9f8bc",
  "status": 200,
  "latencyMs": 210,
  "createdAt": "2026-02-11T10:15:31Z"
}

Wichtige Felder: classification gibt den Gesamttyp der Änderung an, topSeverity ist der höchste Schweregrad über alle Änderungen hinweg, und jeder Eintrag in changes liefert Kontext auf Pfadebene. Siehe Smart Schema Validation für das vollständige Schweregradmodell.

Website-Monitor — DOM-Änderung erkannt

Eine GET /api/monitors/{id}/diffs/{diffId}-Antwort für einen Website-Monitor mit Browser Render:

Diff-Antwort — Website-Änderung
JSON
{
  "id": "dif_01JX8P0MW2",
  "monitorId": "mon_site_pricing",
  "classification": "content_change",
  "summary": {
    "additions": 1,
    "removals": 1,
    "modifications": 2
  },
  "changedTargets": [
    "#app .hero h1",
    "link[rel='canonical']"
  ],
  "diffFingerprint": "sha256:4bc1…",
  "requestId": "req_6p2ad",
  "status": 200,
  "latencyMs": 480,
  "browserRender": true,
  "waitStrategy": "networkidle",
  "selector": "#app",
  "createdAt": "2026-02-11T10:15:31Z"
}

Website-Diffs enthalten Render-Kontext (browserRender, waitStrategy, selector), damit Sie die genauen Bedingungen reproduzieren können, die die Änderung ausgelöst haben.

Webhook-Event-Envelope

Wenn Webhooks konfiguriert sind, liefert DiffMon ein diff.detected-Event mit denselben Änderungsdaten in einem signierten Envelope:

Webhook-Event — diff.detected
JSON
{
  "schemaVersion": "v1",
  "eventVersion": 1,
  "eventId": "evt_01JX8M7A2K",
  "eventType": "diff.detected",
  "occurredAt": "2026-02-11T10:15:31Z",
  "deliveredAt": "2026-02-11T10:15:32Z",
  "monitorId": "mon_api_prices",
  "diffId": "dif_01JX8M79YQ",
  "snapshotId": "snp_01JX8M6ZK0",
  "data": {
    "classification": "schema_change",
    "schemaChanges": 2,
    "valueChanges": 1,
    "changes": [
      {
        "path": "$.items[*].price",
        "category": "schema",
        "op": "replace",
        "severity": "critical"
      },
      {
        "path": "$.items[*].currency",
        "category": "schema",
        "op": "add",
        "severity": "medium"
      }
    ]
  }
}

Verwenden Sie eventId für Idempotenz und diffId, um den vollständigen Diff über die API abzurufen. Siehe Webhooks für HMAC-Verifizierung, Retry-Zeitplan und Event-Typen.

Browser Render per API

Für JavaScript-lastige URL-Monitore setzen Sie beim Erstellen oder Aktualisieren browserOptions.

  • Request-Feld: browserOptions
  • Persistiertes und zurückgegebenes Monitor-Feld: browserOptionsJson

Gültige Options-Formen, Beispiele und Fehlercodes finden Sie in den Browser Render Docs.

Policy Rules per API

Policy Rules werden über die Monitor-Einstellungen konfiguriert:

  • GET /api/monitors/{id}/settings liest policyRulesJson
  • PATCH /api/monitors/{id}/settings ersetzt mit policyRules den gesamten Rule-Set

Verwenden Sie rules: [], um Regeln zu leeren. Lassen Sie policyRules weg, wenn gespeicherte Regeln unverändert bleiben sollen. Das Regelschema und Verhalten beschreibt Policy rules.