Neu: Die KI-Firewall überwacht jedes Modul und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

Alarms API

Alarme auflisten, lesen, bestätigen und beheben, ihren Verlauf und ihre Anzahlen abrufen, die Alarmregeln eines Profils ersetzen und Geräte per REST stummschalten.

Diese Routen ermöglichen es einem Ticketsystem, einer Betriebszentrale oder einem Skript, mit Alarmen zu arbeiten. Wie sich Alarme verhalten, wird unter Alarme und Mit Alarmen arbeiten erklärt. Die Pfade liegen unter https://<your host>/tenant/<tenantId>.

Routen

MethodePfadBerechtigungFunktion
GET/api/iot/alarmsiot_alarm.readAlarme auflisten
GET/api/iot/alarms/countsiot_alarm.readAnzahl offener und bestätigter Alarme nach Schweregrad
GET/api/iot/alarms/{alarmId}iot_alarm.readEin Alarm mit seinem Runbook
GET/api/iot/alarms/{alarmId}/eventsiot_alarm.readDer Verlauf des Alarms
POST/api/iot/alarms/{alarmId}/commentsiot_alarm.acknowledgeEine Notiz im Verlauf hinzufügen
POST/api/iot/alarms/acknowledgeiot_alarm.acknowledgeBis zu 100 Alarme bestätigen
POST/api/iot/alarms/resolveiot_alarm.resolveBis zu 100 Alarme manuell beheben
GET/api/iot/alarm-rules/{profileId}iot_alarm.readDie Alarmregeln eines Profils
PUT/api/iot/alarm-rules/{profileId}iot_alarm.rules.manageDie Alarmregeln eines Profils ersetzen
GET, POST, DELETE/api/iot/devices/{deviceId}/alarm-muteLesen: iot_alarm.read; ändern: iot_alarm.muteDie Stummschaltungen eines Geräts

Standardrollen: Lesen und Bestätigen sind Benutzerberechtigungen; Beheben, Stummschalten und Ändern der Regeln sind Administratorberechtigungen.

Alarme auflisten

GET /api/iot/alarms (Seiten ab 1). Unbekannte Parameter werden abgelehnt.

ParameterWerteStandard
statusactive (offen oder bestätigt), OPEN, ACKNOWLEDGED, RESOLVED, anyactive
severitykommagetrennte Liste aus CRITICAL, MAJOR, MINOR, WARNING, INFOalle
deviceId, profileIdeine UUID
searchbis zu 128 Zeichen
from, toISO 8601 mit Offset, auf den Zeitpunkt der Eröffnung bezogenfür RESOLVED und any: die letzten 7 Tage
sortseverity, title, device, status, opened, mit :asc oder :descneueste zuerst
page, pageSizeab 1; 1 bis 1001, 20

Eine Liste mit RESOLVED oder any erfordert immer einen Zeitraum von höchstens 92 Tagen: „An alarm history range may span at most 92 days.“

{
  "items": [
    {
      "alarmId": "9a7e…",
      "type": "high_temperature",
      "severity": "CRITICAL",
      "status": "OPEN",
      "originator": { "type": "DEVICE", "id": "6f1c…", "name": "cold-room-2" },
      "deviceId": "6f1c…",
      "deviceName": "cold-room-2",
      "profileId": "a1b2…",
      "ruleId": "3c4d…",
      "title": "Temperature too high",
      "details": { "temperature": 9.4 },
      "topic": null,
      "startTs": 1762678800000,
      "openedAt": 1762678800000,
      "acknowledgedAt": null,
      "acknowledgedBy": null,
      "resolvedAt": null,
      "resolvedBy": null,
      "resolveReason": null,
      "occurrences": 3,
      "flapping": false,
      "isAuto": true
    }
  ],
  "total": 1
}

Alarmzeiten sind Millisekunden seit der Epoche. resolveReason ist clear (seine Regel oder sein Ablauf hat ihn aufgehoben), manual (eine Person) oder originator_deleted (sein Gerät wurde gelöscht).

GET /api/iot/alarms/{alarmId} antwortet mit { "alarm": {...} } mit denselben Feldern sowie dem Runbook der Regel. Ein Alarm einer anderen Organisation ergibt 404.

Anzahlen

GET /api/iot/alarms/counts?deviceId={deviceId}
{ "open": 4, "acknowledged": 1, "bySeverity": { "CRITICAL": 1, "MAJOR": 2, "MINOR": 0, "WARNING": 2, "INFO": 0 } }

Nur Alarme, die nicht behoben sind, werden gezählt. Lassen Sie deviceId weg, um die gesamte Organisation zu erfassen.

Bestätigen und beheben

POST/tenant/{tenantId}/api/iot/alarms/acknowledge

Bestätigt 1 bis 100 Alarme mit einer optionalen Notiz (bis zu 2.000 Zeichen). Jeder Alarm wird einzeln behandelt; ein Alarm, der bereits bestätigt oder behoben ist oder nicht Ihnen gehört, wird mit ok: false gemeldet, nicht als Fehler.

Anfragetext application/json

{
    "alarmIds": [
        "9a7e…",
        "b81f…"
    ],
    "note": "Technician on the way, ticket INC-4411"
}

Beispiel curl

curl -X POST 'https://<your-host>/tenant/{tenantId}/api/iot/alarms/acknowledge' \
  -H 'Content-Type: application/json' \
  -d '{"alarmIds":["9a7e…","b81f…"],"note":"Technician on the way, ticket INC-4411"}'

Antworten

200OK
{
    "results": [
        {
            "alarmId": "9a7e…",
            "ok": true
        },
        {
            "alarmId": "b81f…",
            "ok": false,
            "reason": "not_active"
        }
    ]
}

POST /api/iot/alarms/resolve nimmt denselben Anfragetext entgegen und antwortet genauso. Ein behobener Alarm ist endgültig; ist die Bedingung weiterhin erfüllt, öffnet die Regel einen neuen Alarm. Das manuelle Beheben eines CRITICAL-Alarms wird im Audit-Log protokolliert.

Eine Notiz hinzufügen, ohne den Status zu ändern:

POST /api/iot/alarms/{alarmId}/comments
{ "text": "Spare part ordered" }

Die Antwort lautet 201 { "ok": true }. Notizen erscheinen im Verlauf (GET .../events).

Alarmregeln

GET /api/iot/alarm-rules/{profileId} antwortet mit { "rules": [...] }. PUT ersetzt den gesamten Regelsatz des Profils: Regeln, die Sie weglassen, werden gelöscht, und ihre offenen Alarme werden behoben.

{
  "rules": [
    {
      "type": "high_temperature",
      "title": "Temperature too high",
      "severities": [
        { "severity": "CRITICAL", "condition": { "key": "temperature", "op": ">", "value": { "attribute": "maxTempThreshold" } } },
        { "severity": "WARNING", "condition": { "key": "temperature", "op": ">", "value": 6 } }
      ],
      "debounce": { "mode": "duration", "raise": 300, "clear": 120 },
      "hysteresis": 0.5,
      "notify": { "recipients": [{ "kind": "role", "role": "ADMIN" }], "minSeverity": "WARNING", "repeatEverySec": 3600 },
      "runbook": "Check the door seal, then the compressor."
    },
    {
      "type": "device_offline",
      "title": "Sensor offline",
      "inactivity": { "afterSec": 900, "severity": "WARNING" }
    }
  ]
}

Regeln des Schemas:

FeldRegel
Regeln pro Profilhöchstens 50; jeder type einmal
typeBuchstaben, Ziffern, _ . : -, bis zu 128; device_offline ist die Regel für Inaktivität
conditionein Vergleich { key, op, value } mit op aus >, >=, <, <=, ==, != oder { "all": [...] } / { "any": [...] }; höchstens 16 Vergleiche und 4 Ebenen
valueeine Zahl, ein Text, ein Wahrheitswert oder { "attribute": "<name>" } für den Vergleich mit dem Attribut des Geräts
clearoptional; ohne diesen Eintrag wird der Alarm aufgehoben, sobald keine Schweregradbedingung mehr zutrifft
debouncemode count (Messwerte) oder duration (Sekunden der Gerätezeit); raise und clear 1 bis 86.400
dampeningmaxTransitions 2 bis 100, windowSec 10 bis 86.400, holdSec 1 bis 86.400
notify.recipients1 bis 20 aus { kind: "user", userId }, { kind: "role", role: "OWNER" \| "ADMIN" \| "USER" }, { kind: "email", email }
notify.repeatEverySec60 bis 604.800
inactivity.afterSec10 bis 604.800

Bedingungsschlüssel werden gegen die Schlüssel des Profils geprüft. Die vollständige Bedeutung jedes Feldes steht unter Alarmregeln auf Geräteprofilen und Referenz der Alarmbedingungen.

Stummschaltungen

AufrufFunktion
GET /api/iot/devices/{deviceId}/alarm-mute{ "mutes": [...] }
POST mit { "ruleId": null, "until": "2026-11-12T18:00:00+03:00", "reason": "Compressor service" }Stummschaltet jeden Alarm des Geräts (oder eine Regel mit ruleId) bis zu einem Zeitpunkt; 201 { "mute": {...} }
DELETE ?muteId=…Hebt eine Stummschaltung auf; ohne muteId alle Stummschaltungen des Geräts: { "lifted": n }

Eine Stummschaltung muss in der Zukunft enden und höchstens 90 Tage dauern. Alarme werden auch während der Stummschaltung aufgezeichnet; niemand wird benachrichtigt. Siehe Gerät für Wartung stummschalten.

Fehler

StatusMeldung
400Der Zeitraum endet vor seinem Beginn. / Ein Alarmverlauf darf höchstens 92 Tage umfassen. / Eine Stummschaltung muss in der Zukunft enden. / Eine Stummschaltung darf höchstens 90 Tage dauern.
400Validation error mit issues: ein Regelsatz, der das Schema verletzt, oder ein Bedingungsschlüssel, den das Profil nicht hat
404Alarm nicht gefunden. / Gerät nicht gefunden. / Geräteprofil nicht gefunden.

Ereignisse statt Abfragen

Abonnieren Sie einen Webhook für alarm.created, alarm.acknowledged und alarm.cleared, um Änderungen sofort zu erfahren. Die Nutzdaten stehen in der Referenz der Webhook-Ereignisse.