Bu rotalar bir bilet sistemi, bir operasyon merkezi veya bir betiğin alarmlarla çalışmasını sağlar. Alarmların nasıl davrandığı Alarmlar ve Alarmlarla çalışmak sayfalarında anlatılmıştır. Yollar https://<your host>/tenant/<tenantId> altındadır.
Rotalar
| Yöntem | Yol | İzin | İşlevi |
|---|---|---|---|
| GET | /api/iot/alarms | iot_alarm.read | Alarmları listele |
| GET | /api/iot/alarms/counts | iot_alarm.read | Önem derecesine göre açık ve onaylanmış sayıları |
| GET | /api/iot/alarms/{alarmId} | iot_alarm.read | Tek bir alarm ve çalışma kılavuzu |
| GET | /api/iot/alarms/{alarmId}/events | iot_alarm.read | Alarmın zaman çizelgesi |
| POST | /api/iot/alarms/{alarmId}/comments | iot_alarm.acknowledge | Zaman çizelgesine not ekle |
| POST | /api/iot/alarms/acknowledge | iot_alarm.acknowledge | En fazla 100 alarmı onayla |
| POST | /api/iot/alarms/resolve | iot_alarm.resolve | En fazla 100 alarmı elle çöz |
| GET | /api/iot/alarm-rules/{profileId} | iot_alarm.read | Bir profilin alarm kuralları |
| PUT | /api/iot/alarm-rules/{profileId} | iot_alarm.rules.manage | Bir profilin alarm kurallarını değiştir |
| GET, POST, DELETE | /api/iot/devices/{deviceId}/alarm-mute | okuma: iot_alarm.read; değişiklik: iot_alarm.mute | Bir cihazın sessizleştirmeleri |
Varsayılan roller: okuma ve onaylama Kullanıcı izinleridir; çözme, sessizleştirme ve kuralları değiştirme Yönetici izinleridir.
Alarmları listele
GET /api/iot/alarms (sayfalar 1’den başlar). Bilinmeyen parametreler reddedilir.
| Parametre | Değerler | Varsayılan |
|---|---|---|
status | active (açık veya onaylanmış), OPEN, ACKNOWLEDGED, RESOLVED, any | active |
severity | virgülle ayrılmış CRITICAL, MAJOR, MINOR, WARNING, INFO listesi | tümü |
deviceId, profileId | bir UUID | |
search | en fazla 128 karakter | |
from, to | saat dilimi ofsetli ISO 8601, açılış zamanına göre | RESOLVED ve any için: son 7 gün |
sort | severity, title, device, status, opened; :asc veya :desc ile | önce en yeni |
page, pageSize | 1’den başlar; 1 ile 100 arası | 1, 20 |
Bir RESOLVED veya any listesi her zaman bir zaman aralığı okur; en fazla 92 gün: “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
}
Alarm zamanları epoch’tan itibaren milisaniye cinsindendir. resolveReason değerleri: clear (kuralı veya akışı temizledi), manual (bir kişi), originator_deleted (cihazı silindi).
GET /api/iot/alarms/{alarmId} aynı alanlarla birlikte kuralın çalışma kılavuzunu da içeren { "alarm": {...} } yanıtını verir. Başka bir kuruluşa ait bir alarm 404 döner.
Sayımlar
GET /api/iot/alarms/counts?deviceId={deviceId}
{ "open": 4, "acknowledged": 1, "bySeverity": { "CRITICAL": 1, "MAJOR": 2, "MINOR": 0, "WARNING": 2, "INFO": 0 } }
Yalnızca çözülmemiş alarmlar sayılır. Tüm kuruluş için deviceId parametresini bırakın.
Onaylama ve çözme
POST/tenant/{tenantId}/api/iot/alarms/acknowledge
1 ile 100 alarmı, isteğe bağlı tek bir notla (en fazla 2.000 karakter) onaylayın. Her alarm ayrı işlenir; zaten onaylanmış, çözülmüş veya size ait olmayan bir alarm hata olarak değil, ok: false ile bildirilir.
İstek gövdesi application/json
{
"alarmIds": [
"9a7e…",
"b81f…"
],
"note": "Technician on the way, ticket INC-4411"
}
Örnek 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"}'
Yanıtlar
200OK
{
"results": [
{
"alarmId": "9a7e…",
"ok": true
},
{
"alarmId": "b81f…",
"ok": false,
"reason": "not_active"
}
]
}
POST /api/iot/alarms/resolve aynı gövdeyi alır ve aynı biçimde yanıt verir. Çözülmüş bir alarm kesindir; durum hâlâ geçerliyse kural yeni bir alarm açar. Bir CRITICAL alarmın elle çözülmesi denetim günlüğüne yazılır.
Durumu değiştirmeden not ekleyin:
POST /api/iot/alarms/{alarmId}/comments
{ "text": "Spare part ordered" }
Yanıt 201 { "ok": true } şeklindedir. Notlar zaman çizelgesinde görünür (GET .../events).
Alarm kuralları
GET /api/iot/alarm-rules/{profileId} { "rules": [...] } yanıtını verir. PUT profilin tüm kural kümesini değiştirir: bıraktığınız kurallar silinir ve açık alarmları çözülür.
{
"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" }
}
]
}
Şemanın kuralları:
| Alan | Kural |
|---|---|
| Profil başına kural | en fazla 50; her type bir kez |
type | harfler, rakamlar, _ . : -, en fazla 128; device_offline hareketsizlik kuralıdır |
condition | bir karşılaştırma { key, op, value }, op değeri >, >=, <, <=, ==, != değerlerinden biri, ya da { "all": [...] } / { "any": [...] }; en fazla 16 karşılaştırma ve 4 düzey |
value | bir sayı, metin, mantıksal değer veya cihazın özniteliğiyle karşılaştırmak için { "attribute": "<name>" } |
clear | isteğe bağlı; yoksa hiçbir önem koşulu sağlanmadığında alarm temizlenir |
debounce | mode count (örnek sayısı) veya duration (cihaz zamanında saniye); raise ve clear 1 ile 86.400 arası |
dampening | maxTransitions 2 ile 100, windowSec 10 ile 86.400, holdSec 1 ile 86.400 arası |
notify.recipients | 1 ile 20 arası; { kind: "user", userId }, { kind: "role", role: "OWNER" \| "ADMIN" \| "USER" }, { kind: "email", email } |
notify.repeatEverySec | 60 ile 604.800 arası |
inactivity.afterSec | 10 ile 604.800 arası |
Koşul anahtarları profilin anahtarlarına göre denetlenir. Her alanın tam anlamı Cihaz profillerindeki alarm kuralları ve Alarm koşulları başvuru kılavuzu sayfalarında yer alır.
Sessizleştirmeler
| Çağrı | İşlevi |
|---|---|
GET /api/iot/devices/{deviceId}/alarm-mute | { "mutes": [...] } |
{ "ruleId": null, "until": "2026-11-12T18:00:00+03:00", "reason": "Compressor service" } ile POST | Cihazın tüm alarmlarını (ya da ruleId ile tek bir kuralı) bir zamana kadar sessizleştirir; 201 { "mute": {...} } |
DELETE ?muteId=… | Tek bir sessizleştirmeyi kaldırır; muteId yoksa cihazın tüm sessizleştirmeleri: { "lifted": n } |
Bir sessizleştirme gelecekte bitmeli ve en fazla 90 gün sürmelidir. Sessizleştirme sırasında alarmlar yine kaydedilir; kimseye bildirim gönderilmez. Bkz. Bakım için cihaz sessizleştirme.
Hatalar
| Durum | Mesaj |
|---|---|
| 400 | Zaman aralığı başlangıcından önce bitiyor. / Bir alarm geçmişi aralığı en fazla 92 gün olabilir. / Bir sessizleştirme gelecekte bitmelidir. / Bir sessizleştirme en fazla 90 gün sürebilir. |
| 400 | issues ile birlikte Validation error: şemayı bozan bir kural kümesi veya profilde bulunmayan bir koşul anahtarı |
| 404 | Alarm bulunamadı. / Cihaz bulunamadı. / Cihaz profili bulunamadı. |
Yoklama yerine olaylar
Değişiklikleri anında öğrenmek için bir webhook’u alarm.created, alarm.acknowledged ve alarm.cleared olaylarına abone edin. Yük içerikleri Webhook olay başvurusunda yer alır.

