Webhook'lar

Yeni taslak hazır olduğunda bildirim alın — ardından tam yazıyı API ile çekin.

Entegrasyonlar'da webhook URL ve gizli anahtar yapılandırın. Taslak hazır olduğunda slug ve getirme ipuçlarıyla article.ready POST ederiz. Backend HMAC doğrular, ardından contentHtml için GET /posts/{slug} çağırır.

Olaylar

  • article.ready — Kalite kontrolünden geçmiş taslak hazır — slug ile API'den tam HTML çekin
  • webhook.test — POST /api/v1/webhooks/test çağrıldığında gönderilir

İmza doğrulama

X-GrowthDaily-Timestamp (Unix saniye) ve X-GrowthDaily-Signature göndeririz (webhook gizli anahtarınızla `{timestamp}.{rawBody}` için hex HMAC-SHA256).

İmzayı doğrulayın (Node.js)
import { createHmac, timingSafeEqual } from "crypto";

function verify(secret, rawBody, timestamp, signatureHex) {
  const expected = createHmac("sha256", secret)
    .update(`${timestamp}.${rawBody}`)
    .digest("hex");
  const a = Buffer.from(expected, "utf8");
  const b = Buffer.from(signatureHex, "utf8");
  if (a.length !== b.length) return false;
  return timingSafeEqual(a, b);
}
article.ready yükü
{
  "event": "article.ready",
  "siteId": "uuid",
  "postId": "uuid",
  "slug": "my-post",
  "title": "My post",
  "trustScore": 94,
  "qualityBand": "premium",
  "assuranceLabel": "High confidence",
  "language": "en",
  "sourcePostId": null,
  "status": "draft",
  "at": "2026-07-21T12:00:00.000Z",
  "fetch": {
    "path": "/api/v1/sites/{siteId}/posts/{slug}",
    "hint": "GET with Bearer token to import contentHtml"
  }
}

article.ready sonrası

Payload'daki slug'ı (veya fetch.path) kullanarak GET /api/v1/sites/{siteId}/posts/{slug} çağırın. contentHtml, seo ve faqJsonLd'yi CMS'inize aktarın — kendi takviminizde yayınlayın.

Teslimat garantileri

Her olay tek bir HTTP POST ile ve 8 saniyelik zaman aşımıyla gönderilir. Başarısız teslimatlar otomatik yeniden denenmez. Başarısız webhook yeni taslakları engellemez. Tüm denemeler Entegrasyonlar → Son teslimatlar altında kayıtlıdır.

Tekrarlanabilir (idempotent) işleyiciler

Hızlıca HTTP 2xx döndürün. postId (veya siteId + slug) ile çift kayıt oluşmasını önleyin. Bir olayı kaçırırsanız GET /posts ve updatedAfter ile yakalayın — API referansına bakın.

Teslimat günlüğü

Başarı ve hata satırları entegrasyon panelinde HTTP durumu ve zaman damgasıyla görünür.