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

REST API temelleri

Yollar, JSON kuralları, sayfalama, sıralama ve filtrelerle listeler, eşzamanlılık denetimleri, zamanlar ve kimlikler – her Hermetry REST rotasının uyduğu kurallar.

Bu sayfa, yönetim REST API’sinin izlediği kuralları açıklar. Rotaların kendisi, sayfanın sonunda bağlantısı verilen başvuru sayfalarında alanlarına göre listelenmiştir.

Yollar

Her yönetim yolu kuruluşunuzla sınırlandırılmıştır:

https://<your host>/tenant/<tenantId>/api/<resource>

Başvuru sayfalarında yollar /api/... ile başlayacak şekilde yazılır; önüne /tenant/<tenantId> eklenir. Örneğin /api/iot/devices, https://<your host>/tenant/<tenantId>/api/iot/devices anlamına gelir.

Her çağrıda Authorization: Bearer <API key> gönderin. Bkz. Kimlik doğrulama.

İstekler

  • Gövdeler JSON’dur: Content-Type: application/json gönderin. Tek istisna, multipart/form-data olan yazılım yüklemesidir.
  • Çoğu gövde katıdır: rotanın tanımadığı bir alan 400 ile reddedilir, sessizce yok sayılmaz. Doğru görünen bir alan için 400 aldığınızda yazımı kontrol edin.
  • PATCH yalnızca gönderdiğiniz alanları değiştirir. PUT bütünü değiştirir (bir profilin alarm kuralları, bir yerleşim veya bir ayar bölümü).
  • Alan boş değer kabul ediyorsa, null olarak ayarlanan alan temizlenir.
  • Kimlikler UUID’dir (6f1c0a2e-…). Yolda hatalı biçimli bir kimlik genellikle 400 veya 404 döner.

Yanıtlar

  • Yanıtlar JSON’dur. Tek bir kayıt, adıyla sarılmış gelir: { "device": {...} }, { "alarm": {...} }.
  • Bir liste, dizi ve toplam sayı olarak gelir. Dizinin adı rotaya göre değişir: { "devices": [...], "total": 42 }, { "items": [...], "total": 7 } veya { "data": [...], "total": 3 }. Her başvuru sayfası adı gösterir.
  • Bir gizli anahtar içeren yanıt (yeni bir cihaz belirteci, yeni bir API anahtarı, bir webhook imzalama sırrı) Cache-Control: no-store ile gönderilir ve sır yalnızca burada görünür.

Zamanlar

İki biçim kullanılır. Her başvuru sayfası hangisinin kullanıldığını belirtir.

BiçimNeredeÖrnek
ISO 8601 metni, UTCKayıt alanları (createdAt, lastActivityAt), çoğu filtre, webhook yükleri"2026-11-05T10:00:00.000Z"
1 Ocak 1970’ten itibaren geçen milisaniye, UTCTelemetri (ts, from, to), alarm zamanları (startTs, openedAt)1762336800000

createdFrom=2026-10-01&createdTo=2026-10-15 biçimindeki tarih aralığı filtreleri, UTC’de tam günleri alır, YYYY-MM-DD biçiminde, her iki gün de dahildir.

Listeler

Listeler sunucuda sayfalanır. İki sayfa stili vardır:

Stilpage başlangıcıKullanan (örnekler)
1 tabanlı1Cihazlar, cihaz profilleri, alarmlar, siteler ve varlıklar, API anahtarları, webhook’lar ve teslimatları
0 tabanlı0LoRaWAN ağ geçitleri ve cihazları, page ile bir cihazın komut geçmişi, cihaz ayar işleri ve temel çizgileri, MCP bağlı uygulamaları

Başvuru sayfaları her listenin tabanını verir. Ortak parametreler:

ParametreAnlamıSınırlar
pageSayfa numarasılisteye bağlı olarak 10.000 veya 100.000’e kadar
pageSizeSayfa başına satırvarsayılan 20, en fazla 100 (bazı listeler belirtildiği gibi 200 veya 500’e izin verir)
searchSerbest metin, ad ve benzeri alanlarda eşleştiriliren fazla 128 veya 200 karakter
sortfield:asc veya field:desc, en fazla üç, virgülle ayrılmışyalnızca rotanın listelediği alanlar; diğerleri 400
filtersRotaya göre adlandırılmışaşağıya bakın

Birkaç 0 tabanlı liste, eski istemciler için pageSize yerine limit ve search yerine q de kabul eder.

Sıralama

GET /api/iot/devices?sort=lastSeen:desc
GET /api/iot/lorawan/gateways?sort=status:asc,name:asc

Bilinmeyen bir alan 400 ile reddedilir, örneğin “Cannot sort by “x”. Sortable fields: name, connection, lastSeen, createdAt.” 0 tabanlı listelerde eşitlikler kimliğe göre çözülür, böylece sayfalama kararlı olur.

Filtreler

TürBiçimÖrnek
Bir kümeden birivirgülle ayrılmış listestatus=OPEN,ACKNOWLEDGED
Kimliklervirgülle ayrılmış UUID listesi, en fazla 100deviceId=…,…
Bayraktrue veya falseonline=true
Gün aralığı<name>From, <name>TocreatedFrom=2026-11-01
Sayı aralığı<name>Min, <name>Maxrotanın sunduğu yerlerde

Bir parametreyi boş göndermek yerine çıkarın: çoğu liste boş parametreyi yok sayar, ancak bazıları reddeder.

Tüm sayfaları okumak

// Node.js 18+: read every device, 100 at a time (a 1-based list)
const base = `https://${host}/tenant/${tenant}/api/iot/devices`;
const all = [];
for (let page = 1; ; page++) {
  const res = await fetch(`${base}?page=${page}&pageSize=100&sort=createdAt:asc`, {
    headers: { Authorization: `Bearer ${key}` },
  });
  if (res.status === 429) { await new Promise((r) => setTimeout(r, Number(res.headers.get('Retry-After') ?? 60) * 1000)); page--; continue; }
  const { devices, total } = await res.json();
  all.push(...devices);
  if (all.length >= total || devices.length === 0) break;
}

Başkalarının değiştirdiği bir listede sayfalama yaparken, değişmeyen bir alana (createdAt) göre sıralayın.

Başkaları tarafından yapılan değişiklikler

Bazı yazma işlemleri, kaydı okuduğunuzdan beri değişmediğini denetler:

NeredeNasılÇakışmada
Cihaz profilleriProfilin version değerini PATCH gövdesinde expectedVersion olarak gönderin409, details.reason = stale_profile
Cihaz ayar bölümleriBölümün ETag değerini bir If-Match başlığında gönderin412, details.reason = rev_mismatch; If-Match olmadan 428

Bir profilin alarm kurallarında böyle bir denetim yoktur: PUT tüm kümeyi değiştirir, bu yüzden değiştirmeden hemen önce kuralları okuyun.

Yeniden okuyun, değişikliğinizi güncel kopyaya uygulayın ve yeniden gönderin.

Bulunamadı ve izin verilmedi

Başka bir kuruluşa ait ya da okuma izniniz olmayan bir kayıt, var olmayan bir kayıt gibi 404 döner. Hiç kullanma izniniz olmayan bir rota 403 döner. Hata gövdesi ve tüm durum kodları için bkz. Hatalar ve hız sınırları.

İzinler

Her rota ihtiyaç duyduğu izni belirtir; uygulamanın denetlediği izinle aynıdır. Başvuru sayfaları her rota için bunu listeler, örneğin iot_device.devices.read. Bir anahtara bu izni Modül izinleri bölümünde verin. Yalnızca Sahip rolünün sahip olduğu bir izin anahtara verilemez.

Rota başvuruları

AlanSayfa
Cihazlar, kimlik bilgileri, bağlantı, günlük, cihaz profilleriCihazlar ve profiller API’si
Son değerler, geçmiş, özniteliklerTelemetri ve öznitelikler API’si
Komutlar ve komut kataloğuKomutlar API’si
Alarmlar, alarm kuralları, sessize almalarAlarmlar API’si
Siteler, varlıklar, yerleşim, ilişkilerSiteler ve varlıklar API’si
Yazılım paketleri, dağıtımlar, cihaz ayarlarıYazılım ve cihaz ayarları API’si
LoRaWAN ağ geçitleri, cihazlar, eşleştirme, çerçevelerLoRaWAN API’si
Webhook’larWebhook’lar
API anahtarlarıKimlik doğrulama
LoRaWAN kodekleriKodek API’si