SDK’lar ve OpenAPI Sözleşmesi
Public API’yi doğrudan HTTP ile de kullanabilirsiniz; bu sayfadaki istemciler token yönetimi, tekrar deneme ve sayfalama gibi tekrar eden işleri üstlenir.
Makine-okunur sözleşme
API’nin OpenAPI 3.0 tanımı her zaman canlı koddan üretilir; elle güncellenen bir kopya yoktur.
Kod üreticileri ve editör eklentileri için.
YAMLschema.yamlSürüm kontrolünde okunabilir tutmak için.
Swagger UIEtkileşimli tarayıcıTüm işlemleri şema üzerinden gezin.
Kendi diliniz için istemci üretmek isterseniz şemayı openapi-generator’a
verebilirsiniz:
npx @openapitools/openapi-generator-cli generate \
-i https://api.frigolive.nl/api/public/schema.json \
-g go \
-o ./frigolive-goHazır koleksiyonlar
- Postman / Insomnia koleksiyonu — 13 grup, 66 istek, değişkenlerle hazır.
- llms.txt — yapay zekâ kod asistanlarının sözleşmeyi doğru okuması için makine-dostu içindekiler.
Şema, API’yi çalıştıran kodun kendisinden üretilir. Bu sayfadaki referans, şema ve gerçek davranış birbirinden ayrışamaz.
Resmî istemciler
| Dil | Paket | Kurulum |
|---|---|---|
| Python 3.9+ | frigolive | pip install frigolive |
| Node.js 18+ | @frigolive/api-client | npm install @frigolive/api-client |
| .NET 8 | Frigolive.Api | dotnet add package Frigolive.Api |
Üçü de aynı davranışı uygular:
Access token alınır, bellekte tutulur ve süresi dolmadan 60 saniye önce yenilenir. Eşzamanlı istekler tek bir token çağrısını paylaşır.
429 ve 5xx yanıtlarında üstel bekleme ve rastgele sapma ile tekrar denenir; Retry-After başlığına uyulur. Anahtarsız POST istekleri asla tekrar denenmez.
POST isteklerine otomatik Idempotency-Key eklenir; ağ hatası sonrası tekrar denemede ikinci kayıt oluşmaz.
HTTP durumu istisna tipine eşlenir ve request_id korunur. Destek talebinde bu değeri iletin.
Python
import os
from frigolive import FrigoliveClient, NotFoundError
client = FrigoliveClient(
client_id=os.environ["FRIGOLIVE_CLIENT_ID"],
client_secret=os.environ["FRIGOLIVE_CLIENT_SECRET"],
scope="devices:read telemetry:read",
)
client.account_id = client.accounts()[0]["id"]
for device in client.iterate("/devices/"):
print(device["display_serial"], device["battery_level"])Node.js
import { FrigoliveClient } from "@frigolive/api-client";
const client = new FrigoliveClient({
clientId: process.env.FRIGOLIVE_CLIENT_ID!,
clientSecret: process.env.FRIGOLIVE_CLIENT_SECRET!,
scope: "devices:read telemetry:read",
});
for await (const device of client.iterate("/devices/")) {
console.log(device);
}.NET
await using var client = new FrigoliveClient(new FrigoliveClientOptions
{
ClientId = Environment.GetEnvironmentVariable("FRIGOLIVE_CLIENT_ID")!,
ClientSecret = Environment.GetEnvironmentVariable("FRIGOLIVE_CLIENT_SECRET")!,
Scope = "devices:read telemetry:read",
});
await foreach (var device in client.IterateAsync("/devices/"))
{
Console.WriteLine(device.GetProperty("label").GetString());
}Bu istemcilerin hiçbiri tarayıcıda veya dağıtılmış bir mobil uygulamada çalıştırılmak üzere tasarlanmamıştır. Arayüzünüz kendi backend’inize konuşur; backend Frigolive’a sunucudan sunucuya gider.
Sayfalama
Üç istemcide de liste uçları için bir dolaşma yardımcısı vardır. Sonraki sayfa
links.next üzerinden okunur; sayfa numarasını elle artırmanız gerekmez.
İstemci kullanmıyorsanız aynı kuralı kendiniz uygulayın: Hatalar ve Dayanıklılık.