İçeriğe atla
API REFERANSI

RESTful API: Geliştiriciler için tam dokümantasyon

Herkese açık API key ile kimlik doğrulama, JSON yanıtlar, 500 req/dk rate limit. cURL, JavaScript ve PHP örnekleriyle her endpoint ayrıntılı açıklandı.

Başlarken

Base URL ve Authentication

Tüm API çağrıları aşağıdaki temel URL üzerinden HTTPS ile yapılır. HTTP istekleri 301 yönlendirmesiyle HTTPS'e aktarılır.

Base URL

https://cerez.io/api/v1

OpenAPI 3.1 Spesifikasyonu

Tüm endpoint'lerin makine-okunur OpenAPI 3.1 tanımı. Postman, Insomnia, kod üreteçleri ve interaktif istemcilerle içe aktarabilirsiniz.

openapi.json indir

Kimlik Doğrulama: Herkese Açık API Key

SDK API herkese açık (public) API key ile çalışır: GET isteklerinde URL yolunda, POST isteklerinde istek gövdesinde gönderilir. Bu anahtar tarayıcıdaki SDK tarafından kullanılır, istemci tarafında görünür olması normaldir. Authorization: Bearer header kullanılmaz. API key'inizi admin panel > Kurulum sayfasından alabilirsiniz.

curl https://cerez.io/api/v1/banner/YOUR_API_KEY
Güvenlik: Secret key bu API çağrılarında kullanılmaz ve istemci tarafına asla konmaz; yalnızca admin panelde hesap yönetimi içindir. Erişimi sınırlamak için domain bazında IP beyaz listesi (CIDR) tanımlayabilirsiniz.
POST

/api/v1/heartbeat

Pageview sayacını artırır ve domain'in etkin olduğunu işaretler. SDK her sayfa açılışında bu endpoint'i bir kez çağırır.

Body Parametreleri

ParametreTipAçıklama
api_keystringHerkese açık API key
session_idstringSession ID (tekil pageview takibi için)
page_urlstringAktif sayfa URL'si
referrerstringdocument.referrer değeri (opsiyonel)

Yanıt

{
  "success": true,
  "pageview_count_month": 42183,
  "plan_limit": 100000,
  "usage_percent": 42.18
}
SDK API

Tüm SDK Uç Noktaları

Herkese açık API key ile çalışan tüm /api/v1 uç noktaları. Her birinin tam istek ve yanıt şeması için makine-okunur OpenAPI 3.1 tanımına bakın.

Çerez ve Onay

MetodEndpointAçıklama
GET/banner/{api_key}Banner yapılandırması (dil, tema, kategoriler)
POST/consent/logOnay kaydı (yedek yol: /consent-log)
GET/consent/state/{api_key}Sunucu tarafı onay sorgulama (server-side GTM)
GET/consent/group/{api_key}Çapraz alan adı onay senkronizasyonu
POST/preferencesEvrensel tercih merkezi kaydı

Erişilebilirlik

MetodEndpointAçıklama
GET/a11y/{api_key}Erişilebilirlik widget yapılandırması
GET/a11y/{api_key}/ai-labelsAI üretimi alt-text ve aria-label önerileri
POST/a11y/feature-usedErişilebilirlik özelliği kullanım telemetrisi
POST/a11y/easy-readAI ile metni sadeleştirme (Kolay Okuma)
POST/a11y/ci-reportCI/CD erişilebilirlik kapısı raporu

TCF ve Vendor List

MetodEndpointAçıklama
GET/tcf/{api_key}IAB TCF yapılandırması ve GVL meta verisi
GET/gvl.jsonGlobal Vendor List (24 saat edge cache)
GET/tcf-validator-testTCF doğrulayıcı test sayfası (HTML)

Telemetri ve Sistem

MetodEndpointAçıklama
POST/heartbeatSayfa görüntüleme ve canlılık sinyali
POST/interactionsEtkileşim telemetrisi (KVKK gereği varsayılan kapalı)
POST/telemetryAnonim SDK performans metrikleri
GET/metaSürüm ve yetenek keşfi (public, salt-okunur)

Yanıt Zarfları

SDK uç noktaları tarihsel nedenlerle farklı yanıt zarfları kullanır; geriye dönük uyumluluk için bu şekiller korunmaktadır. Ayrıştırırken aşağıdaki tabloya göre okuyun.

ZarfUç noktalar
{ ... } (zarfsız, doğrudan nesne)GET /banner, GET /a11y, GET /tcf, GET /gvl.json
{ "status": "ok" }POST /consent/log, POST /heartbeat, POST /a11y/feature-used
{ "success": true }POST /preferences, POST /a11y/ci-report
{ "ok": true }POST /telemetry
{ "found": ... }GET /consent/state, GET /consent/group
{ "data": ..., "meta": ... }Tüm Management API uç noktaları (/api/mgmt/v1)

API Sürümü

Güncel API ve SDK sürümleri ile TCF/GVL meta verisini çalışma zamanında GET /api/v1/meta uç noktasından alabilirsiniz (public, salt-okunur).

GET /api/v1/meta

{
  "api_version": "1.0.0",
  "sdk_version": "2.6.2",
  "products": ["cookie", "accessibility"],
  "tcf": { "gvl_version": 123, "policy_version": 5 },
  "docs": "https://cerez.io/kaynaklar/api-referans"
}

OpenAPI 3.1 Spesifikasyonu

18 SDK uç noktasının tamamı makine-okunur biçimde (Postman içe aktarma / istemci üretimi).

Yönetim API

Management API (server-to-server)

Sunucu tarafında programatik erişim için ayrı bir API. SDK API (public api_key) banner ve consent içindir; Management API secret_key ile domain verilerinizi (çerez envanteri, consent kayıtları, istatistik, erişilebilirlik skoru) çeker. Salt-okunur.

Base URL

https://cerez.io/api/mgmt/v1

Kimlik Doğrulama: Bearer secret_key

Secret key'inizi Authorization: Bearer header'ında gönderin. Secret key'i admin panel > Kurulum > API'den alın ve YALNIZCA güvenli sunucu ortamında saklayın; istemci tarafına asla koymayın.

curl https://cerez.io/api/mgmt/v1/domain \
  -H "Authorization: Bearer YOUR_SECRET_KEY"
Tüm başarılı yanıtlar { "data": ..., "meta": ... } zarfında döner. Hatalar RFC 9457 application/problem+json ile döner. Rate limit: 60 istek/dakika.

Uç Noktalar

MetodEndpointAçıklama
GET/domainPlan, abonelik ve ayar bilgisi
GET/cookiesÇerez kategorileri ve taranan çerezler
GET/stats?period=30Onay/red oranı, cihaz dağılımı, günlük seri
GET/consents?from&to&cursorConsent kayıtları (cursor-paginated, KVKK/GDPR kanıt)
GET/a11y/scoreSon WCAG tarama skoru ve ihlal dağılımı
GET/consents/receipt?visitor_id=Tek ziyaretçi için consent kanıtı (KVKK/GDPR)
POST/scanÇerez taraması tetikle (senkron, en fazla 3 sayfa)
GET/scan/{id}Tarama durumu ve sonucu
GET/webhooksWebhook listesi (secret maskeli)
POST/webhooksWebhook oluştur (url + events)
DELETE/webhooks/{id}Webhook sil
POST/webhooks/{id}/testTest olayı gönder
GET/dsar/export?visitor_id=İlgili kişi verisini dışa aktar (GDPR m.15)
POST/dsar/erasureİlgili kişi verisini anonimleştir (iki adımlı)

Başarılı Yanıt 200 OK

GET /api/mgmt/v1/domain

{
  "data": {
    "id": 42,
    "site_name": "Örnek",
    "domain_url": "https://example.com",
    "products": ["cookie", "accessibility"],
    "subscriptions": [
      { "product": "cookie", "plan_slug": "cookie_pro", "status": "active" }
    ],
    "settings": { "kvkk_enabled": true, "consent_expiry_days": 180 }
  },
  "meta": { "api": "mgmt/v1", "generated_at": "2026-06-30T12:00:00+00:00" }
}

Webhooks HMAC-SHA256

Düşük frekanslı olaylar gerçekleştiğinde kayıtlı adreslerinize imzalı bir POST gönderilir: scan.completed, cookies.new_found, scan.error. Yüksek hacimli consent olayları webhook ile gönderilmez.

Örnek payload ve başlıklar

POST https://ornek.com/webhooks/cerez
X-Cerez-Event: scan.completed
X-Cerez-Timestamp: 1782475200
X-Cerez-Signature: sha256=3a7b...e0

{
  "event": "scan.completed",
  "created_at": "2026-06-30T12:00:00+00:00",
  "domain_id": 42,
  "data": { "total_cookies": 31, "new_cookies": 2 }
}

İmza doğrulama (alıcı taraf)

İmza, zaman damgası ve ham gövdeden üretilir. Doğrularken sabit-zamanlı karşılaştırma kullanın ve zaman damgasının 5 dakikadan eski olmadığını doğrulayın (tekrar saldırısı koruması).

// Node.js
const crypto = require('crypto');
const expected = 'sha256=' + crypto
  .createHmac('sha256', WEBHOOK_SECRET)
  .update(timestamp + '.' + rawBody)
  .digest('hex');
const ok = crypto.timingSafeEqual(
  Buffer.from(expected), Buffer.from(signatureHeader)
);
// PHP
$expected = 'sha256=' . hash_hmac('sha256', $timestamp . '.' . $rawBody, $secret);
$ok = hash_equals($expected, $signatureHeader);

DSAR (İlgili Kişi Talepleri) KVKK m.11 / GDPR m.15-17

Bir ziyaretçinin verisine erişim ve silme taleplerinize yanıt vermenize yardımcı olur. Silme = anonimleştirme: doğrudan tanımlayıcılar (visitor_id, external_id, user_agent, region) kaldırılır; consent ispat delili (action, kategoriler, TCF string, zaman damgaları) KORUNUR. Ziyaretçinin kimliğini siz doğrularsınız.

Anonimleştirme iki adımlıdır (kazara silme koruması)

# 1. Önizleme (confirm_token yok) — hiçbir şey değişmez
curl -X POST https://cerez.io/api/mgmt/v1/dsar/erasure \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "visitor_id": "vis_a1b2c3" }'
# -> { "data": { "dry_run": true, "matched_count": 3, "confirm_token": "..." } }

# 2. Uygula (önizlemeden gelen confirm_token ile)
curl -X POST https://cerez.io/api/mgmt/v1/dsar/erasure \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "visitor_id": "vis_a1b2c3", "confirm_token": "..." }'
# -> { "data": { "dry_run": false, "affected_count": 3 } }

Önizleme ile uygulama arasında kayıt sayısı değişirse token geçersiz olur (409). Erişim ve silme her başarılı çağrıda denetim günlüğüne yazılır. Bu araç uyum yükümlülüklerinizi yerine getirmenize yardımcı olur; hukuki geçerlilik için nitelikli danışmanınıza başvurun.

OpenAPI 3.1 Spesifikasyonu

Management API'nin makine-okunur OpenAPI 3.1 tanımı (Postman/codegen).

Management API openapi.json
Rate Limiting

İstek Sınırları

Her IP adresi için uygulanır. Sınır aşımında yanıt, bekleme süresini gösteren bir header ile birlikte döner.

500
istek / dakika / IP
5 dk
banner önbellek süresi
90 gün
API log saklama süresi
Sınır aşımı: 429 Too Many Requests döner. Retry-After header'ı saniye cinsinden bekleme süresini belirtir. Burst protection için exponential backoff (1s, 2s, 4s, 8s...) önerilir. Enterprise planında özel rate limit artışı için satış ekibiyle görüşün.
Hata Kodları

HTTP Durum Kodları

Kod Açıklama Tipik Neden
200 OK İstek başarılı
202 Accepted Kabul edildi (telemetri / etkileşim, asenkron)
304 Not Modified İçerik değişmedi (ETag; gvl.json)
402 Payment Required Aktif abonelik gerekli (ürün kapalı)
403 Forbidden IP whitelist dışı veya plan limiti aşıldı
404 Not Found API key veya kaynak bulunamadı
422 Unprocessable Doğrulama hatası; yanıttaki errors alanını inceleyin
429 Too Many Requests Rate limit aşıldı (500/dk)
502 Bad Gateway Yukarı akış hizmeti (AI / tarama) geçici hata
503 Service Unavailable Hizmet geçici kullanılamıyor; Retry-After

Hata Yanıt Formatı

{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "API key bulunamadı veya devre dışı",
    "details": { "field": "api_key" }
  }
}
Webhook

Olay Bildirimleri Canlı

Webhook desteği Management API üzerinden kullanılabilir. Düşük frekanslı olaylarda kayıtlı adresinize HMAC-SHA256 ile imzalı bir POST gönderilir. Kurulum ve imza doğrulama için Management API bölümüne bakın.

scan.completed

Çerez taraması tamamlandığında tetiklenir (toplam ve yeni çerez sayısı)

cookies.new_found

Taramada yeni çerez bulunduğunda tetiklenir

scan.error

Tarama başarısız olduğunda tetiklenir

Sık sorulanlar

Aklınızdaki sorular

SDK ile API arasındaki fark nedir?
Kısa yanıt: SDK browser tarafında çalışır ve banner'ı otomatik render eder. API ise sunucudan sunucuya entegrasyon için tasarlanmıştır; özel dashboard, mobil uygulama veya sunucu taraflı consent loglama gibi senaryolarda kullanılır. Çoğu müşteri yalnızca SDK kullanır.
Batch endpoint var mı?
Kısa yanıt: Şu an batch endpoint yoktur. POST /api/v1/consent/log endpoint'i tek çağrı içindir. Batch destek Q4 2026 yol haritasındadır.
IP whitelist nasıl çalışır?
Kısa yanıt: Admin panel > Kurulum > IP Restriction toggle'ını açıp izinli IP'leri (CIDR notation desteklenir: 192.168.1.0/24) girin. Whitelist dışı isteklere 403 Forbidden döner. Browser tarafından gelen SDK istekleri her zaman kabul edilir.
Webhook desteği var mı?
Kısa yanıt: Evet. Webhook, Management API üzerinden kullanılabilir. Olaylar HMAC-SHA256 ile imzalı POST olarak gönderilir; desteklenen event tipleri scan.completed, cookies.new_found ve scan.error. Kurulum için Management API bölümüne bakın.
Rate limit aşılırsa ne olur?
Kısa yanıt: 429 Too Many Requests döner. Retry-After header'ı kaç saniye beklemeniz gerektiğini belirtir. Burst protection için exponential backoff (1s, 2s, 4s, 8s...) önerilir. Enterprise planında özel rate limit yükseltilebilir.

API'yi test etmek ister misiniz?

14 gün ücretsiz Pro deneme ile API key'inizi alın, kodu kopyalayın ve hemen entegrasyona başlayın.

⚡ YASAL ZORUNLULUK 2025/10 Cumhurbaşkanlığı Genelgesi: Kamu, belediye, banka, üniversite, hastane, okullar için 21 Haziran 2026'ya WCAG 2.2 A zorunlu · Ceza: 5.000–25.000 TL/tespit