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-Deliverydeğerine göre yinelemeleri ayıklayın ve sıralamayı yükteki zamanlara göre yapın. - Örnekler yalnızca zarfın
eventvedataalanlarını gösterir; tam zarfta ayrıcawebhookId,tenantIdvecreatedAtbulunur.
Cihazlar
| Olay | Gönderilme zamanı |
|---|---|
device.created | Bir 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.updated | Ad, etiket, tür, profil, ağ geçidi işareti, ek bilgi veya durum değiştiğinde |
device.deleted | Bir cihaz silindiğinde (elle, serbest bırakma ile veya bir içe aktarmayı geri alarak) |
device.credentials_rotated | Kimlik bilgisi döndürüldüğünde, değiştirildiğinde, yenilendiğinde (X.509) veya iptal edildiğinde |
device.connected | Bir cihaz çevrimiçi oldu ve bekleme süresi boyunca çevrimiçi kaldı |
device.disconnected | Bir 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
| Olay | Gönderilme zamanı |
|---|---|
alarm.created | Bir 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.acknowledged | Bir operatör veya bir akış açık bir alarmı onayladığında. Alarm açık kalmaya devam eder. |
alarm.cleared | Bir 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.clearedBydeğeri"rule"veya{ "userId": "…" }olur;reasondeğericlear,manualveyaoriginator_deletedolur. Alarmı bir kişi kapattığındametadatadeğerinullolur.- 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
| Olay | Gönderilme zamanı |
|---|---|
rpc.completed | Bir komut SUCCESSFUL durumuyla sona erdiğinde (yanıt alındığında veya tek yönlü bir komut iletildiğinde) |
rpc.failed | Bir 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)
| Olay | Gönderilme zamanı |
|---|---|
ota.update.initiated | Bir cihaza kurulması için bir yazılım paketi verildiğinde |
ota.update.succeeded | Bir cihaz hedef sürümde çalıştığında |
ota.update.failed | Güncelleme başarısız olduğunda, zaman aşımına uğradığında veya geri alındığında |
ota.rollout.wave_completed | Bir dalga kapılarından geçtiğinde |
ota.rollout.paused | Bir kapı başarısız olduğunda veya bir kişi dağıtımı duraklattığında |
ota.rollout.resumed | Bir kişi dağıtıma devam ettirdiğinde |
ota.rollout.completed | Son dalga kapılarından geçtiğinde |
ota.rollout.aborted | Bir 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)
| Olay | Gönderilme zamanı |
|---|---|
iot.device.claimed | Lisanslı bir cihaz kuruluşunuza sahiplenildiğinde |
iot.device.released | Bir 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
| Olay | Gönderilme zamanı |
|---|---|
rules.mode_changed | Bir yer Manuel moda alındığında, Otomatik moda geri döndüğünde veya Manuel modu kendiliğinden sona erdiğinde |
rules.needs_attention | Adı 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.succeededveesim.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.

