Yeni: Yapay zekâ güvenlik duvarı her modülü izliyor ve her olayı sade bir dille açıklıyor. Nasıl çalıştığını görün

Webhook olay başvurusu

Cihazlar, bağlantılar, alarmlar, komutlar, yazılım güncellemeleri, temel hazırlık, kurallar ve akışlar dahil her IoT webhook olayı; ne zaman gönderildiği ve örnek yükü ile.

Bu sayfa, bir webhook’un abone olabileceği IoT olaylarını ve her birinin taşıdığı data alanını listeler. data etrafındaki zarf, başlıklar ve imza Webhooks bölümünde anlatılmıştır. Kuruluşunuza sunulan olay listesi GET /api/webhooks/events üzerinden de alınabilir.

Genel kurallar:

  • Yükler yalnızca kimlikleri ve güvenli alanları içerir. Bir cihaz kimlik bilgisi, belirteç, parola, sertifika veya indirme bağlantısı asla gönderilmez.
  • Zamanlar UTC saat diliminde ISO 8601 metni olarak gönderilir; alarm zamanları hariç, bunlar epoch’tan itibaren milisaniye cinsindendir.
  • Olaylar sıra dışı gelebilir ve nadiren iki kez gelebilir. X-Webhook-Delivery değerine göre yinelemeleri ayıklayın ve sıralamayı yükteki zamanlara göre yapın.
  • Örnekler yalnızca zarfın event ve data alanlarını gösterir; tam zarfta ayrıca webhookId, tenantId ve createdAt bulunur.

Cihazlar

OlayGönderilme zamanı
device.createdBir cihaz eklendiğinde: elle, bir içe aktarmayla, temel hazırlıkla (provisioning) veya sahiplenmeyle ya da bir ağ geçidinin alt cihazı olarak
device.updatedAd, etiket, tür, profil, ağ geçidi işareti, ek bilgi veya durum değiştiğinde
device.deletedBir cihaz silindiğinde (elle, serbest bırakma ile veya bir içe aktarmayı geri alarak)
device.credentials_rotatedKimlik bilgisi döndürüldüğünde, değiştirildiğinde, yenilendiğinde (X.509) veya iptal edildiğinde
device.connectedBir cihaz çevrimiçi oldu ve bekleme süresi boyunca çevrimiçi kaldı
device.disconnectedBir cihaz çevrimdışı oldu ve bekleme süresi boyunca çevrimdışı kaldı
{ "event": "device.created", "data": {
  "deviceId": "6f1c…", "name": "pump-station-04", "serial": null, "profileId": "a1b2…",
  "status": "ACTIVE", "isGateway": false, "createdAt": "2026-11-09T08:00:00.000Z" } }

Bir ağ geçidinin alt cihazı ayrıca gatewayDeviceId taşır.

{ "event": "device.updated", "data": {
  "deviceId": "6f1c…", "name": "pump-station-04", "serial": null, "profileId": "a1b2…",
  "status": "DISABLED", "isGateway": false, "changedFields": ["status"], "previousStatus": "ACTIVE",
  "updatedAt": "2026-11-09T08:10:00.000Z" } }

changedFields yalnızca alan adlarını listeler (sıralı: additionalInfo, isGateway, label, name, profileId, status, type), değerlerini asla değil. previousStatus yalnızca durum değiştiğinde bulunur. Bu alanlardan hiçbirini değiştirmeyen bir düzenleme hiçbir şey göndermez.

{ "event": "device.deleted", "data": {
  "deviceId": "6f1c…", "name": "pump-station-04", "serial": null, "profileId": "a1b2…",
  "credentialRevoked": true, "deletedAt": "2026-11-09T08:20:00.000Z" } }
{ "event": "device.credentials_rotated", "data": {
  "deviceId": "6f1c…", "name": "pump-station-04", "serial": null, "profileId": "a1b2…",
  "change": "rotated", "credentialType": "ACCESS_TOKEN", "previousType": "ACCESS_TOKEN",
  "changedAt": "2026-11-09T08:30:00.000Z" } }

change değeri rotated, replaced, renewed veya revoked olur; revoked sonrasında credentialType değeri null olur.

{ "event": "device.connected", "data": {
  "deviceId": "6f1c…", "name": "router-17", "profileId": "a1b2…", "transport": "mqtts",
  "connectedAt": "2026-11-03T10:00:00.000Z", "remoteIpPrefix": "203.0.113.0/24" } }
{ "event": "device.disconnected", "data": {
  "deviceId": "6f1c…", "name": "router-17", "profileId": "a1b2…", "reason": "timeout",
  "disconnectedAt": "2026-11-03T12:00:00.000Z", "lastSeenAt": "2026-11-03T11:59:40.000Z", "onlineSeconds": 7200 } }

remoteIpPrefix, bir IPv4 adresinin /24’ü veya bir IPv6 adresinin /48’idir; asla tam adres değildir. reason değeri clean (cihaz bağlantıyı kesti), timeout (canlı tutma veya veri gönderme süresi doldu), kicked (sunucu bağlantıyı kapattı, örneğin kimlik bilgisi değişikliğinden sonra) veya quota (bir sınıra ulaştı) olur.

Bekleme süresi ve hacim. Bir bağlantı değişikliği yalnızca bekleme süresi boyunca sürdükten sonra gönderilir: Devices > ayarlar > Connection webhooks: hold time (seconds), varsayılan 30, 5 ile 3.600 arası. Bekleme süresi içinde kopup geri gelen bir cihaz hiçbir şey göndermez. Varsayılan olarak kuruluş başına dakikada en fazla 600 bağlantı olayı ve 600 cihaz değişikliği olayı gönderilir; o dakikanın geri kalanındaki olaylar atılır ve sahipleriniz ile yöneticileriniz bir bildirim alır. Cihazlara API üzerinden okumaya devam edilebilir.

Alarmlar

OlayGönderilme zamanı
alarm.createdBir alarm açıldığında (bir profil kuralı, bir akış bloğu veya bir operatör tarafından). Açık bir alarm yeniden tetiklendiğinde gönderilmez.
alarm.acknowledgedBir operatör veya bir akış açık bir alarmı onayladığında. Alarm açık kalmaya devam eder.
alarm.clearedBir alarm çözüldüğünde: kuralı veya akışı tarafından, bir operatör tarafından ya da cihazı silindiği için
{ "event": "alarm.created", "data": {
  "alarmId": "9a7e…", "type": "high_temperature", "severity": "CRITICAL",
  "originator": { "type": "DEVICE", "id": "6f1c…", "name": "cold-room-2" },
  "deviceId": "6f1c…", "profileId": "a1b2…", "url": "/admin/iot/alarms/9a7e…",
  "title": "Temperature too high", "startedAt": 1762678800000, "openedAt": 1762678800000,
  "details": { "temperature": 9.4 }, "backfilled": false, "metadata": { "topic": null } } }
{ "event": "alarm.acknowledged", "data": {
  "alarmId": "9a7e…", "type": "high_temperature", "severity": "CRITICAL", "originator": { "…": "…" },
  "deviceId": "6f1c…", "profileId": "a1b2…", "url": "/admin/iot/alarms/9a7e…",
  "ackBy": { "userId": "u-55…" }, "ackAt": 1762679100000 } }
{ "event": "alarm.cleared", "data": {
  "alarmId": "9a7e…", "type": "high_temperature", "severity": "CRITICAL", "originator": { "…": "…" },
  "deviceId": "6f1c…", "profileId": "a1b2…", "url": "/admin/iot/alarms/9a7e…",
  "clearedBy": "rule", "reason": "clear", "clearedAt": 1762680000000, "durationSeconds": 1200,
  "metadata": { "topic": null } } }
  • url, alarmın uygulamadaki sayfasıdır; önüne kendi sunucu adresinizi ve /tenant/<tenantId> ekleyin.
  • backfilled: true, geciken okumalar nedeniyle (örneğin bir ağ geçidinin tamponu yeniden oynatıldıktan sonra) açılmış bir alarmı işaretler. Bunlar için kimseye bildirim gönderilmez.
  • clearedBy değeri "rule" veya { "userId": "…" } olur; reason değeri clear, manual veya originator_deleted olur. Alarmı bir kişi kapattığında metadata değeri null olur.
  • Açık bir alarmın önem derecesi değiştirilirse webhook gönderilmez. Alarm webhook’ları sınırlandırılmaz; uç noktanızın hız sınırı yine de geçerlidir.

Komutlar

OlayGönderilme zamanı
rpc.completedBir komut SUCCESSFUL durumuyla sona erdiğinde (yanıt alındığında veya tek yönlü bir komut iletildiğinde)
rpc.failedBir komut FAILED, TIMEOUT (sonuç bilinmiyor) veya EXPIRED (cihaza hiç ulaşmadı) durumuyla sona erdiğinde
{ "event": "rpc.failed", "data": {
  "rpcId": "c0de…", "deviceId": "6f1c…", "method": "pump.start", "status": "TIMEOUT",
  "error": null, "source": "api", "completedAt": "2026-11-09T09:00:15.000Z" } }

Yanıt yükte yer almaz: GET /api/iot/rpc/{rpcId} ile okuyun. İptal edilen bir komut hiçbir şey göndermez.

Yazılım güncellemesi (Firmware)

OlayGönderilme zamanı
ota.update.initiatedBir cihaza kurulması için bir yazılım paketi verildiğinde
ota.update.succeededBir cihaz hedef sürümde çalıştığında
ota.update.failedGüncelleme başarısız olduğunda, zaman aşımına uğradığında veya geri alındığında
ota.rollout.wave_completedBir dalga kapılarından geçtiğinde
ota.rollout.pausedBir kapı başarısız olduğunda veya bir kişi dağıtımı duraklattığında
ota.rollout.resumedBir kişi dağıtıma devam ettirdiğinde
ota.rollout.completedSon dalga kapılarından geçtiğinde
ota.rollout.abortedBir kişi dağıtımı iptal ettiğinde, atanması kaldırıldığında veya yenisiyle değiştirildiğinde ya da paketi iptal edildiğinde
{ "event": "ota.update.failed", "data": {
  "deviceId": "6f1c…", "packageId": "f00d…", "title": "router-fw", "version": "2.5.0", "fromVersion": "2.4.1",
  "state": "FAILED", "attempts": 1, "at": "2026-11-09T10:00:00.000Z", "stage": "verify", "error": "…" } }

stage değeri download, verify, update veya rollback olur; error cihazın kodu veya bir zaman aşımıdır.

{ "event": "ota.rollout.paused", "data": {
  "rolloutId": "r-12…", "assignmentId": "as-3…", "packageId": "f00d…", "status": "PAUSED", "wave": 2, "waves": 3,
  "at": "2026-11-09T11:00:00.000Z", "reason": "failure_gate", "failures": 4, "failurePct": 6.7, "successPct": 88.3 } }

Dağıtım yükleri rolloutId, assignmentId, packageId, status, wave (1 tabanlı), waves ve at alanlarını taşır; ayrıca: updated, failures, successPct (dalga tamamlandığında); reason ve sayımlar (duraklatıldığında; reason değeri failure_gate, success_gate, no_result (hiçbir cihaz tamamlanmadı) veya manual olur); pausedReason (devam ettirildiğinde); updated (tamamlandığında); reason (iptal edildiğinde).

Temel hazırlık (Provisioning)

OlayGönderilme zamanı
iot.device.claimedLisanslı bir cihaz kuruluşunuza sahiplenildiğinde
iot.device.releasedBir cihaz fabrika havuzuna geri döndüğünde: kind OWNER (siz serbest bıraktınız), FORCED (platform desteği) veya DEVICE (cihazın kendi sayfasından)
{ "event": "iot.device.claimed", "data": {
  "deviceId": "6f1c…", "serial": "RT-0017", "model": "…", "claimedAt": "2026-11-09T07:00:00.000Z", "claimedByUserId": "u-55…" } }
{ "event": "iot.device.released", "data": {
  "deviceId": "6f1c…", "serial": "RT-0017", "model": "…", "kind": "OWNER", "releasedAt": "2026-11-09T07:30:00.000Z" } }

Kurallar

OlayGönderilme zamanı
rules.mode_changedBir yer Manuel moda alındığında, Otomatik moda geri döndüğünde veya Manuel modu kendiliğinden sona erdiğinde
rules.needs_attentionAdı geçen bir cihaz veya yer ortadan kalktığı için bir kural kapatıldığında
{ "event": "rules.mode_changed", "data": {
  "placeType": "asset", "placeId": "77aa…", "placeName": "Greenhouse 2", "mode": "manual", "change": "manual",
  "actorId": "u-55…", "until": 1762700000000, "reason": "Harvest" } }

change değeri manual, auto veya expired olur; Manuel mod kendiliğinden sona erdiğinde actorId değeri null olur. Otomatik moda geçiş ayrıca applyNow ve rearmed alanlarını taşır.

{ "event": "rules.needs_attention", "data": {
  "ruleId": "ru-9…", "name": "Close vents at night", "reason": "…",
  "home": { "type": "asset", "id": "77aa…" } } }

Akışlar

automation.message yalnızca bir akışın Webhook bloğu tarafından ve yalnızca bloğun adını verdiği tek uç noktaya gönderilir (bu uç nokta “Automation message” olayına abone olmalıdır). topic, payload, originator, flowId, flowVersion, nodeId, actor ve bloğun listelediği metadata anahtarlarını taşır; ayrıca X-Idempotency-Key ile birlikte gelir. Bkz. Action blocks.

Diğer olaylar

  • esim.operation.succeeded ve esim.operation.failed, geliştirme aşamasında olan eSIM yönetimine aittir.
  • API anahtarı olayları (api_key.created, api_key.updated, api_key.rotated, api_key.deleted, api_key.expired) ve kuruluş olayları (üyeler, davetler, abonelik) da sunulur. Bunların yükleri bu sayfada kapsanmaz.