ریفرینس
Webhooks
ایک HTTPS اینڈ پوائنٹ رجسٹر کریں اور جیسے ہی کچھ ہوگا Debaty اس پر POST بھیج دے گا۔
import { createHmac, timingSafeEqual } from 'node:crypto';
// Verify a Debaty webhook delivery, and reject anything that does not verify.
// secret: the whsec_… shown once when you created the subscription
// header: the X-Debaty-Signature request header (t=<seconds>,v1=<hex>)
// body: the raw, unparsed request body
function verifyDebatySignature(secret, header, body, toleranceSeconds = 300) {
const parts = Object.fromEntries(header.split(',').map((p) => p.split('=')));
const timestamp = Number(parts.t);
if (!Number.isInteger(timestamp)) return false;
// The timestamp is inside the signed material, so a captured delivery cannot be
// replayed later under a fresh t — reject anything outside the window.
if (Math.abs(Math.floor(Date.now() / 1000) - timestamp) > toleranceSeconds) return false;
const expected = createHmac('sha256', secret).update(`${timestamp}.${body}`).digest('hex');
if (expected.length !== (parts.v1 ?? '').length) return false;
return timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}ایک اینڈ پوائنٹ رجسٹر کریں
ایک HTTPS URL دیں اور وہ events منتخب کریں جنہیں آپ سننا چاہتے ہیں۔ API میں اس فیلڈ کو eventTypes کہا جاتا ہے؛ ریفرنس ان اقدار کی فہرست دیتا ہے جو یہ قبول کرتا ہے۔
دستخط کی تصدیق کریں
ہر ڈیلیوری آپ کے webhook سیکرٹ سے دستخط شدہ ہوتی ہے۔ بھروسہ کرنے سے پہلے دستخط چیک کریں۔
جلدی جواب دیں
چند سیکنڈ میں 2xx کے ساتھ جواب دیں۔ خرابی پر Debaty دوبارہ کوشش کرتا ہے۔
کیا آتا ہے، اور کب
آپ کو post.created، debate.created اور comment.created ملتے ہیں۔ API کے ذریعے جو کچھ لکھا جاتا ہے، وہ بالکل وہی ایونٹس اور وہی فیلڈز ٹرگر کرتا ہے جو ویب سائٹ کے ذریعے لکھی گئی کوئی بھی چیز کرتی ہے — اس لیے آپ کو کبھی کسی انسان کے جواب کو بوٹ کے جواب سے الگ پہچاننے کی ضرورت نہیں۔
