إدارة خطافات الويب عبر واجهة التطبيق البرمجية

كل ما يمكن عمله من شاشة الإعدادات > التكاملات > خطافات الويب يمكن عمله كذلك عبر واجهة التطبيق البرمجية، بحيث يستطيع التكامل تسجيل رابطه بنفسه دون فتح لوحة التحكم.

تتطلب جميع الطلبات رمز مِرسال، كما يحتاج صاحب الرمز إلى صلاحية الفريق المناسبة. راجع نظرة عامة على خطافات الويب لمتطلبات الخطة ودورة الحياة التي تديرها هذه النقاط.

Header

{
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": "Bearer {مفتاحك هنا}"
}

كائن خطاف الويب

{
    "id": 12,
    "URL": "https://yourdomain.com/alaaqat-webhook",
    "secret": "8f2c1d9b4a7e6035c1d8b2f4a9e7c603",
    "is_validated": true,
    "is_active": true,
    "consecutive_failures": 0,
    "last_failure_at": null,
    "account_id": 1,
    "created_at": "2026-08-27T10:15:00.000000Z",
    "updated_at": "2026-08-27T10:22:31.000000Z",
    "events": [
        {
            "id": 41,
            "name": "contact-created",
            "webhook_id": 12,
            "created_at": "2026-08-27T10:15:00.000000Z",
            "updated_at": "2026-08-27T10:15:00.000000Z"
        }
    ]
}
الحقل الوصف
URL رابط HTTPS الخاص بك.
secret المفتاح السري المكوّن من 32 خانة والمستخدم للرد على طلب التحقق. تُنشئه علاقات ولا يمكن تعيينه أو تغييره.
is_validated ما إذا كان الرابط قد أجاب على طلب التحقق بشكل صحيح.
is_active ما إذا كانت الإرسالات مفعّلة. لا تُرسل الأحداث إلا إذا كان is_validated و is_active كلاهما true.
consecutive_failures عدد الإرسالات المتتالية التي استنفدت كل محاولاتها. أي إرسالة ناجحة تعيده إلى 0، وبلوغه 3 يوقف is_active. للقراءة فقط.
last_failure_at وقت آخر إرسالة استنفدت محاولاتها، أو null إن لم يحدث ذلك قط. للقراءة فقط.
events الأحداث المشترك بها هذا الخطاف.

قائمة خطافات الويب

GET https://app.alaaqat.com/api/account/webhooks

تُرجع جميع خطافات الحساب الحالي. تتطلب صلاحية webhook-index.

الإستجابة

{
    "data": [
        {
            "id": 12,
            "URL": "https://yourdomain.com/alaaqat-webhook",
            "secret": "8f2c1d9b4a7e6035c1d8b2f4a9e7c603",
            "is_validated": true,
            "is_active": true,
            "consecutive_failures": 0,
            "last_failure_at": null,
            "account_id": 1,
            "created_at": "2026-08-27T10:15:00.000000Z",
            "updated_at": "2026-08-27T10:22:31.000000Z",
            "events": [
                {
                    "id": 41,
                    "name": "contact-created",
                    "webhook_id": 12,
                    "created_at": "2026-08-27T10:15:00.000000Z",
                    "updated_at": "2026-08-27T10:15:00.000000Z"
                }
            ]
        }
    ]
}

إنشاء خطاف ويب

POST https://app.alaaqat.com/api/account/webhooks

تتطلب صلاحية webhook-create.

Body

{
    URL: string,
    events: string[]
}
الحقل مطلوب التحقق الوصف
URL مطلوب رابط صالح يستخدم https الرابط الذي سيستقبل الإرسالات
events مطلوب مصفوفة تحتوي عنصراً واحداً على الأقل الأحداث المراد الاشتراك بها
events.* مطلوب أحد الأحداث المتاحة اسم الحدث، مثل contact-created

تُرفض الحقول account_id و is_validated و is_active إن أُرسلت — فالخطاف الجديد يبدأ دائماً غير موثق وغير مفعّل، والمفتاح السري يُنشأ تلقائياً.

{
    "URL": "https://yourdomain.com/alaaqat-webhook",
    "events": ["contact-created", "contact-updated", "deal-created"]
}

الإستجابة

201 Created مع بيانات الخطاف الجديد بما فيها secret.

{
    "data": {
        "id": 12,
        "URL": "https://yourdomain.com/alaaqat-webhook",
        "secret": "8f2c1d9b4a7e6035c1d8b2f4a9e7c603",
        "is_validated": false,
        "is_active": false,
        "consecutive_failures": 0,
        "last_failure_at": null,
        "account_id": 1,
        "created_at": "2026-08-27T10:15:00.000000Z",
        "updated_at": "2026-08-27T10:15:00.000000Z",
        "events": [
            {
                "id": 41,
                "name": "contact-created",
                "webhook_id": 12,
                "created_at": "2026-08-27T10:15:00.000000Z",
                "updated_at": "2026-08-27T10:15:00.000000Z"
            }
        ]
    },
    "message": "Entity was created successfully."
}

الأخطاء

الرمز المعنى
402 باقتك لا تشمل خطافات الويب، أو أنك بلغت الحد الأقصى لعدد الخطافات.
422 الرابط ليس عنوان https صالحاً، أو أن أحد الأحداث غير موجود.

تعديل خطاف ويب

PUT https://app.alaaqat.com/api/account/webhooks/{id}

حيث id هو معرّف الخطاف. تتطلب صلاحية webhook-update.

محتوى الطلب مطابق لمحتوى الإنشاء، و events تستبدل قائمة الاشتراك الحالية — أرسل القائمة الكاملة التي تريد الاحتفاظ بها لا الإضافات فقط.

{warning} تغيير URL يعيد is_validated إلى false، وتتوقف الإرسالات حتى توثّق الخطاف من جديد.

الإستجابة

200 OK مع بيانات الخطاف بعد التعديل والرسالة Entity was modified successfully.


توثيق خطاف ويب

POST https://app.alaaqat.com/api/account/webhooks/{id}/validate

ترسل طلب التحقق إلى رابطك. تتطلب صلاحية webhook-update. لا تحتاج إلى محتوى في الطلب.

راجع توثيق الرابط لمعرفة الرد الذي يجب أن يعيده خادمك بالضبط.

الإستجابة

200 OK مع بيانات الخطاف وقد أصبح فيها "is_validated": true.

وإذا لم يُجب الرابط بشكل صحيح، يبقى الخطاف غير موثق وتكون الاستجابة:

{
    "message": "Unable to validate the webhook. Please ensure that the secret key is correct and the webhook endpoint is properly configured."
}

برمز الحالة 403.


تفعيل خطاف ويب أو إلغاء تفعيله

PUT https://app.alaaqat.com/api/account/webhooks/{id}/activate

تتطلب صلاحية webhook-update، ويجب أن يكون الخطاف موثقاً مسبقاً وإلا رُفض الطلب برمز 403.

Body

{
    "is_active": true
}
الحقل مطلوب التحقق الوصف
is_active مطلوب boolean true لبدء الإرسالات و false لإيقافها

وبهذه النقطة نفسها تعيد تشغيل خطاف ألغت علاقات تفعيله بعد تكرار الفشل: يبقى الخطاف موثقاً، فيكفي طلب واحد بـ is_active: true بعد أن يصبح رابطك سليماً.

الإستجابة

200 OK. لا تحمل الاستجابة محتوى ذا فائدة؛ اقرأ الخطاف من نقطة نهاية القائمة إن أردت تأكيد الحالة الجديدة.


حذف خطاف ويب

DELETE https://app.alaaqat.com/api/account/webhooks/{id}

تتطلب صلاحية webhook-delete. يُحذف الخطاف واشتراكاته بالأحداث نهائياً وتتوقف الإرسالات فوراً.

الإستجابة

{
    "message": "Entity was deleted successfully.",
    "data": []
}

مثال كامل

# 1. إنشاء خطاف الويب
curl -X POST https://app.alaaqat.com/api/account/webhooks \
  -H "Authorization: Bearer {مفتاحك هنا}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"URL":"https://yourdomain.com/alaaqat-webhook","events":["contact-created","contact-updated"]}'

# 2. توثيقه (يجب أن يجيب خادمك على طلب التحقق)
curl -X POST https://app.alaaqat.com/api/account/webhooks/12/validate \
  -H "Authorization: Bearer {مفتاحك هنا}" \
  -H "Accept: application/json"

# 3. تفعيله
curl -X PUT https://app.alaaqat.com/api/account/webhooks/12/activate \
  -H "Authorization: Bearer {مفتاحك هنا}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"is_active":true}'