نقطة نهاية webhook هي عنوان URL على خادمك يستدعيه DynamiHost عندما يحدث شيء على حسابك. اليوم يحتوي كتالوج الأحداث على حدث واحد: scan.created، يُرسل عند كل عملية مسح لرموزك.
إعداد واحدة
- افتح Webhooks في لوحة التحكم وأضف عنوان URL لنقطة النهاية لديك. يجب أن يكون عنوان HTTPS عامًا.
- احفظ سر التوقيع الظاهر لنقطة النهاية. تحتاجه للتحقق من أن عمليات التسليم تأتي فعلًا من DynamiHost.
- استخدم زر الاختبار لإرسال تسليم تجريبي ومشاهدة سجل خادمك.

كيف يبدو التسليم
http
POST /your-endpoint HTTP/1.1
Content-Type: application/json
x-dynamihost-event: scan.created
x-dynamihost-signature: 9f2c... (hex HMAC)
{"event": "scan.created", "timestamp": 1792400000, "data": { "...": "scan details" }}التحقق من التوقيع
التوقيع هو HMAC-SHA256 السداسي العشري لـ timestamp + "." + raw body، بمفتاح هو سر توقيع نقطة النهاية لديك. تحقق منه قبل الوثوق بتسليم:
js
import { createHmac, timingSafeEqual } from "node:crypto";
function isGenuine(secret, timestamp, rawBody, header) {
const expected = createHmac("sha256", secret)
.update(timestamp + "." + rawBody, "utf8")
.digest("hex");
const a = Buffer.from(expected, "hex");
const b = Buffer.from(header, "hex");
return a.length === b.length && timingSafeEqual(a, b);
}تحقق دائمًا مقابل جسم الطلب الخام، تمامًا كما استُلم. تحليل JSON وإعادة ترميزه أولًا سيغيّر البايتات وستفشل كل فحوصات التوقيع.
إعادة المحاولة والتعطيل التلقائي
- تُعاد محاولة عمليات التسليم الفاشلة (ردود غير 2xx، مهلات، مضيفون غير قابلين للوصول) بتأخيرات متزايدة.
- تُعطَّل نقطة النهاية التي تستمر في الإخفاق تلقائيًا بعد 10 إخفاقات متتالية، ويُشعَر الحساب عبر البريد الإلكتروني. أصلح المستقبِل، ثم أعد تفعيلها من صفحة Webhooks.
- دوّر سر التوقيع من الصفحة نفسها كلما أمكن أن يكون قد تسرّب. يتوقف السر القديم عن العمل فورًا.
ردّ على عمليات التسليم بسرعة وقم بالعمل البطيء بعد ذلك. أعد 2xx بمجرد أن تكون قد خزّنت الحدث؛ نقاط النهاية التي تعالج لثوانٍ هي التي تنفد مهلتها وتُعاد محاولتها.