İçeriğe geç
Geliştirici

Webhook'lar

Abone olduğunuz kategorilerde bir değişiklik olduğunda yalnız "bir şey değişti" demiyoruz: ilanın kendisini — şirket, kategori, ilan tarihi, türü, kısa özet ve gazete PDF bağlantısı — gönderiyoruz. Sisteminiz ikinci bir istek atmadan işe başlayabilir.

  • En çok 5 adres; her biri kendi kategorileriyle (boş = tümü).
  • Takip ettiğiniz şirketlerde yeni ilan yayımlandığı gün gönderilir; aynı ilan ikinci kez gönderilmez.
  • Bir şirketin aynı taramadaki satırları tek istekte gelir.
  • Yönetim: API uçları ya da panel › API Anahtarları.

İstek

HTTP
POST https://sisteminiz.ornek.com/ulawk
Content-Type: application/json; charset=utf-8
User-Agent: Ulawk-Webhook/2.0
X-Ulawk-Olay: sirket.degisiklik
X-Ulawk-Teslim: msg_3f9c1a0b7d2e4c5f6a7b8c9d
X-Ulawk-Imza: t=1760572800,v1=5e2b…

WebhookYuku

  • olaystringzorunlu
    Değerler: sirket.degisiklik, test
  • surumintegerzorunlu
  • teslim_idstringzorunlu
  • testbooleanzorunlu
  • zamanstring (date-time)zorunlu
  • sirketobjectzorunlu
    • idinteger | stringzorunlu
      Şirket kimliği: gerçek anahtarda sayısal (ör. 1234); deneme anahtarında DENEME-… metni.
    • unvanstringzorunlunull olabilir
    • mudurlukstringzorunlunull olabilir
    • sicil_nostringzorunlunull olabilir
    • profilstring (uri)zorunlu
    • degisikliklerstring (uri)zorunlu
  • kategorilerstring[]zorunlu
    Değerler: durum, adres, ortaklik, sermaye, yetkililer, unvan, esas_sozlesme, diger, kapandi
  • degisikliklerobject[]zorunlu
    • kategoristringzorunlu
      Değerler: durum, adres, ortaklik, sermaye, yetkililer, unvan, esas_sozlesme, diger, kapandi
    • kategori_adstringzorunlunull olabilir
    • turstringzorunlu
    • tarihstring (date)zorunlunull olabilir
    • ozetstringzorunlu
    • ilanobjectzorunlunull olabilir
      • ilan_idintegerzorunlu
      • ilan_tarihistring (date)zorunlunull olabilir
      • ilan_turustringzorunlunull olabilir
      • alintistringzorunlunull olabilir
    • gazete_pdfstring (uri)zorunlunull olabilir

İmzayı doğrulayın

X-Ulawk-Imza: t=<unix saniye>,v1=<hex> — v1 = HMAC-SHA256(gizli, t + "." + ham gövde). Gövdeyi ayrıştırmadan önce, ham baytlar üzerinde hesaplayın; sabit sürede karşılaştırın; t şu andan 300 saniyeden uzaksa reddedin (yeniden oynatma koruması). Anahtar yenilenirken başlıkta birden çok v1 olabilir; biri eşleşirse kabul edin.

import hashlib
import hmac
import time


def ulawk_imzasi_gecerli(gizli, ham_govde, baslik, tolerans=300):
    """gizli: whsec_… · ham_govde: istek gövdesinin HAM baytları · baslik: X-Ulawk-Imza"""
    try:
        parcalar = [p.strip().split("=", 1) for p in baslik.split(",") if "=" in p]
        t = int(next(v for k, v in parcalar if k == "t"))
    except (StopIteration, ValueError):
        return False
    if abs(time.time() - t) > tolerans:
        return False
    beklenen = hmac.new(gizli.encode(), f"{t}.".encode() + ham_govde, hashlib.sha256).hexdigest()
    return any(hmac.compare_digest(beklenen, v) for k, v in parcalar if k == "v1")

Yeniden deneme ve mükerrer

  • 2xx dışındaki her yanıt ya da zaman aşımı artan aralıklarla yeniden denenir (30 saniyeden 6 saate, toplam 7 deneme).
  • Yeniden denemeler aynı teslim_id ve gövdeyi taşır: mükerreri X-Ulawk-Teslim ile ayıklayın.
  • Art arda 20 başarısızlıkta webhook durur; PATCH {"aktif": true} ya da panelden yeniden açın.
  • En çok 5 saniye bekleriz: hızlıca 2xx dönüp işi sonra yapın.

Güvenlik

Yalnız https. Özel, yerel, bağlantı-yerel ya da ayrılmış ağlara çözülen adresler reddedilir; bağlantı doğrulanan IP'ye sabitlenir; yönlendirme izlenmez.

Markdown · OpenAPI · llms.txt · © 2026 Ulawk