للمطوّرين — Webhooks@endsection
آخر تحديث: ٢٦ سبتمبر ٢٠٢٦
ما يحدث في فعاليّتك على هذا الموقع يمكن أن يصل نظامَك في اللحظة نفسِها: تسجيلٌ جديد، مقعدٌ من قائمة الانتظار، بحثٌ رُفع، قرارُ تحكيم. لا تحتاج مفتاحَ API ولا حسابًا خاصًّا؛ منظّمُ الفعاليّة يفتح «ربطُ الفعاليّة بأنظمتك» من مربّع «للمنظّم» في صفحة فعاليّته ويضع رابطًا. كلُّ ما يلي تصفٌ لما يصل ذلك الرابط.
ping فيقرأ منها الحقول.الطريقةُ نفسُها مع Make وn8n وأيّ خادمٍ يقبل POST.
الحدث kind | متى | ما في data |
|---|---|---|
registration.created | سجّل عضوٌ في الفعاليّة | registration |
registration.accepted | قبِل المنظّمُ تسجيلًا | registration |
registration.rejected | رفض المنظّمُ تسجيلًا | registration |
registration.cancelled | أُلغي تسجيلٌ (من صاحبه أو المنظّم) | registration |
waitlist.joined | امتلأت المقاعدُ فانضمّ عضوٌ إلى قائمة الانتظار | registration |
waitlist.promoted | فرغ مقعدٌ فحصل عليه أقدمُ المنتظرين | registration |
submission.created | رُفع ملخّصٌ أو بحث | submission |
submission.decided | تغيّرت حالةُ بحث (قبول/رفض/تعديل) | submission |
ping | ضغط المنظّمُ «اختبار» | message |
طلبُ POST بجسم JSON بترميز UTF-8، ورؤوسٌ ثلاثة:
POST https://your-endpoint.example/hook
Content-Type: application/json
X-EventSheets-Event: registration.created
X-EventSheets-Delivery: 7c1e…-uuid
X-EventSheets-Signature: sha256=<hex>
{
"id": "7c1e0a5e-…",
"kind": "registration.created",
"occurred_at": "2026-11-07T09:30:12+00:00",
"event": { "id": 1461, "title": "…", "title_en": "…", "url": "https://eventsheets.com/ar/events/details?event_id=1461" },
"data": {
"registration": {
"registration_id": 5120,
"type": "participant", // attendee | participant
"status": "accepted", // pending | accepted | rejected | waitlisted
"registered_at": "2026-11-07 09:30:12",
"member": { "id": 193, "name": "…", "email": "…", "country": "…" }
}
}
}
وفي أحداث البحوث يحلّ submission محلّ registration: submission_id، title، kind (abstract أو full_paper)، status (pending | accepted | rejected | revise)، submitted_at، وauthor بالحقول نفسِها. الملفُّ نفسُه لا يُرسَل؛ يُحمَّل من صفحة الفعاليّة بصلاحيّة المنظّم.
لكلّ رابطٍ مفتاحٌ سرّيّ يظهر للمنظّم في الشاشة نفسِها. التوقيعُ هو HMAC‑SHA256 لجسم الطلب بالبايتات كما وصلت بذلك المفتاح، بصيغة hex. تحقّق منه قبل أن تصدّق الرسالة، فالرابطُ نفسُه قد يعرفه غيرُك:
// PHP
$body = file_get_contents('php://input');
$sig = $_SERVER['HTTP_X_EVENTSHEETS_SIGNATURE'] ?? '';
$ok = hash_equals('sha256=' . hash_hmac('sha256', $body, $secret), $sig);
// Node
const ok = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex') === req.get('X-EventSheets-Signature');
X-EventSheets-Delivery فريدٌ لكلّ إرسال؛ استعمله لتجاهل التكرار إن كنتَ تخزّن.الفعاليّاتُ المنشورة تُقرأ بلا مفتاح من GET /api/event (قائمة) وGET /api/event/{id} (فعاليّة واحدة)، JSON، بالحقول التي تظهر في الصفحة العامّة. غيرُ المنشور لا يُرجَع. وصفحةُ كلّ فعاليّة تحمل بياناتٍ منظّمة (JSON‑LD من نوع Event) وملفَّ .ics، وهما أبسطُ طريقٍ لقارئٍ آليّ.
إن احتجتَ حدثًا ليس في القائمة، أو حقلًا ناقصًا، فراسلنا من صفحة التواصل واذكر ما تربطه بالموقع. القائمةُ أعلاه تنمو بما يطلبه المنظّمون فعلًا.