Codecs API, kod kütüphanesini ve sizin kendi codec’lerinizi kişilere, betiklere ve lisanslı yönlendiricilere sunar. Codec’leri sürüm kontrolünde tutmak, bir pipeline’dan yayımlamak veya kendi araçlarınızdan yük (payload) testleri yapmak için kullanın.
Aşağıdaki yollar genel biçimi izler: https://<your host>/tenant/<tenantId>/api/…. API anahtarını Authorization: Bearer <API key> olarak gönderin. Bkz. REST API temelleri.
Yollar
| Yöntem ve yol | İzin | Yanıt |
|---|---|---|
GET /api/iot/lorawan/codecs | İsteğe bağlı (aşağıya bakın) | Codec dizini: { version, scope, codecs: [...], sig: null } |
GET /api/iot/lorawan/codecs/<codecId> | İsteğe bağlı | Tek bir codec: { id, rev, sha256, scope, document, outputSet } |
GET /api/iot/lorawan/codecs/bundle | İsteğe bağlı | Her codec, belgesiyle birlikte sıkıştırılmış: { version, codecs: [{ id, rev, sha256, scope, document }] } |
GET /api/iot/lorawan/codec-library | Codec’leri görüntüle | Codec çekmecesinin gösterdiği liste (sayfalı, sıralanabilir, iki kaynak) |
POST /api/iot/lorawan/codecs | Codec’leri yönet | Yeni bir codec yayımla (201) |
PATCH /api/iot/lorawan/codecs/<codecId> | Codec’leri yönet | Codec’inizin yeni bir revizyonunu yayımla |
DELETE /api/iot/lorawan/codecs/<codecId> | Codec’leri yönet | Codec’inizi silin |
POST /api/iot/lorawan/codecs/<codecId>/test | Codec’leri görüntüle | Kayıtlı bir codec ile tek bir çerçeveyi çözün |
POST /api/iot/lorawan/codecs/test | Codec’leri görüntüle | Bir codec belgesini denetleyin ve isteğe bağlı olarak tek bir çerçeveyi çözün; hiçbir şey kaydedilmez |
GET /api/iot/lorawan/codecs/<codecId>/revisions | Codec’leri görüntüle | Codec’in revizyonları |
“Codec’leri görüntüle”, LoRaWAN codec’lerini görüntüleme ve test ortamını çalıştırma iznidir (varsayılan olarak kullanıcılar). “Codec’leri yönet”, kendi codec’lerinizi ekleme, değiştirme ve silme iznidir (varsayılan olarak yöneticiler).
Üç okuma yolunda kimin neyi gördüğü
| Gönderilen kimlik bilgisi | Yanıt |
|---|---|
| Yok | Yalnızca herkese açık kütüphane. 5 dakika önbelleğe alınır (Cache-Control: public, max-age=300). |
| Görüntüleme izni olan geçerli bir oturum veya API anahtarı | Kütüphane ile kuruluşunuzun codec’leri. Önbelleğe alınmaz (private, no-store). |
| Lisanslı bir yönlendiricinin imzalı isteği | Kütüphane ile yönlendiricinin kuruluşuna ait codec’ler. |
| Mevcut ama hatalı bir kimlik bilgisi (hatalı başlık, süresi dolmuş oturum, bilinmeyen anahtar) | 401 ile invalid_credentials, signature_expired veya certificate_revoked. Hiçbir zaman herkese açık liste değil. |
| İzni olmayan geçerli bir kimlik bilgisi | 403 |
Filtreler ve önbellekleme
Dizin q (arama), vendor, model, oui, fport ve scope parametrelerini kabul eder. Her yanıt, dizin sürümüne eşit bir ETag taşır; hiçbir şey değişmediyse 304 Not Modified almak için bunu If-None-Match içinde geri gönderin.
GET …/codecs/<codecId>?sha256=<fingerprint>, tam olarak bir revizyonu ister. Geri çekilmiş bir codec 410 (codec_withdrawn) yanıtı verir.
Bir codec yayımlayın
POST /tenant/<tenantId>/api/iot/lorawan/codecs
Content-Type: application/json
{ "document": { "id": "t.room-sensor", "title": "…", "vendor": "…", "kind": "layout", "frames": [ … ], "tests": [ … ] } }
Ya da bir kütüphane codec’ini kopyalayın:
{ "copyOf": "<library codec id>", "id": "t.my-copy" }
Yanıt 201 { codec, indexVersion } olur. Kütüphane codec’leri bu yollarla değiştirilemez veya silinemez: 403 codec_read_only.
Bir çerçeveyi test edin
POST /tenant/<tenantId>/api/iot/lorawan/codecs/t.room-sensor/test
Content-Type: application/json
{ "fport": 2, "hex": "0BC4010A32" }
fport 1–255 arasındadır ve hex en fazla 255 bayttır. Geçersiz bir çerçeve FPort’u (1-255) ve yükü onaltılık rakamlar olarak girin (en fazla 255 bayt). yanıtı verir.
Hız sınırları
| Çağıran | Sınır |
|---|---|
| Kimlik bilgisi yok: dizin ve tek codec | Adres başına dakikada 60 istek |
| Kimlik bilgisi yok: bundle | Adres başına saatte 6 |
| Oturum açmış kullanıcılar ve API anahtarları | Dakikada 240; bundle saatte 30 |
| Lisanslı yönlendiriciler | Cihaz sertifikası başına dakikada 120 |
Sınırı aşan istekler için API 429 yanıtı verir (Çok fazla istek. Lütfen daha sonra tekrar deneyin.).
Hata kodları
| Durum | details.reason | Anlamı |
|---|---|---|
| 404 | — | Codec bulunamadı. |
| 409 | codec_exists | Bu kimliğe sahip bir codec zaten var. Başka bir kimlik seçin. |
| 410 | codec_withdrawn | Bu codec revizyonu geri çekildi. |
| 403 | codec_read_only | Kütüphane codec’leri burada düzenlenmez: bir kopyasını kaydedin ve kopyayı değiştirin. |
| 422 | codec_format_not_supported | Bir JavaScript çözücü gönderildi. |
| 422 | codec_tests_failed | Test vektörleri başarısız oldu; başarısız olan vektörler listelenir. |
| 422 | codec_incompatible | Yeni revizyon anahtarları kaldırıyor veya birimleri değiştiriyor. |
| 422 | codec_model_claimed | Codec’lerinizden bir diğeri bu modeli kapsıyor. |
| 422 | codec_choice_unknown | (Bir cihaz veya profil bir codec seçtiğinde) codec yok veya geri çekildi. |
| 401 | invalid_credentials | Bu istekle gönderilen kimlik bilgileri geçerli değil. |
Tam LoRaWAN API’si (ağ geçitleri, cihazlar, anahtarlar, eşleştirme, çerçeveler) için bkz. LoRaWAN API.

