Dokümantasyon

REST API'nin tam, etkileşimli referansı canlı olarak sunulur. Aşağıdaki özet, uç gruplarını ve kritik davranışları listeler; geliştirmeye başlamadan önce hata formatını okumanızı öneririz.

Not: Swagger, API sunucusunun /docs yolunda yayınlanır (production'da erişim kısıtlanabilir).

Kimlik & Organizasyon

  • POST/api/v1/auth/register

    Organizasyon + OWNER kullanıcısı

  • POST/api/v1/auth/login

    HttpOnly oturum çerezi

  • GET/api/v1/auth/me

    Oturum sahibi bilgisi

Cihazlar & Lisanslar

  • POST/api/v1/devices/register

    HWID kaydı → device_token

  • POST/api/v1/devices/{id}/hwid-reset

    30 günde 1 self-service taşıma

  • POST/api/v1/licenses/activate

    Ed25519 imzalı lisans bileti

  • GET/api/v1/keys/{kid}

    Lisans public key (kid rotasyonu)

Telemetri (Parçalı Yükleme)

  • POST/api/v1/telematics/sessions

    Seans ilanı: boyut + SHA-256

  • PUT/api/v1/telematics/sessions/{id}/chunks/{idx}

    1–16 MB binary chunk

  • POST/api/v1/telematics/sessions/{id}/complete

    ARQ worker devreye girer

  • GET/api/v1/telematics/sessions/{id}/series/{signal}

    1 dk rollup serisi

Ticaret & Ödeme

  • POST/api/v1/orders/checkout

    İyzico/PayTR 3D Secure başlatma

  • GET/api/v1/pricing/tiers

    Public fiyat kataloğu

  • POST/api/v1/webhooks/iyzico

    HMAC doğrulamalı (sağlayıcı)

  • POST/api/v1/webhooks/paytr

    Callback hash doğrulamalı

Raporlar

  • POST/api/v1/reports

    PDF rapor kaydı (masaüstü export)

  • POST/api/v1/reports/verify

    PUBLIC SHA-256 doğrulama

Hata Formatı

  • ANY

    Her hata: {error: {code, message, request_id}}

  • 429

    Retry-After başlığı ile birlikte

  • 413

    16 MB chunk / 256 MB pack tavanı

Hızlı Başlangıç: curl ile ilk telemetri seansı

# 1) Organizasyon kur (oturum çerezi saklanır)
curl -c jar.txt -X POST http://localhost:8000/api/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{"organization_name":"Atolye","email":"a@b.com","full_name":"Teknisyen","password":"GucluParola1!"}'

# 2) Seans ilanı (2 MB payload, 1 MB chunk'lar)
curl -b jar.txt -X POST http://localhost:8000/api/v1/telematics/sessions \
  -H "Content-Type: application/json" \
  -d '{"declared_size_bytes":2097152,"declared_sha256":"<sha256>","chunk_size_bytes":1048576}'

# 3) Chunk yükle (1..16 MB binary gövde)
curl -b jar.txt -X PUT \
  http://localhost:8000/api/v1/telematics/sessions/<id>/chunks/0 \
  --data-binary @chunk0.bin -H "Content-Type: application/octet-stream"

Tüm uçlar API_SPEC §9 hata zarfını döndürür; her yanıtta X-Request-ID başlığı vardır.