اربط نظامك بمحادثات عملائك

واجهة برمجية واحدة لإرسال رسائل واتساب، ومزامنة جهات الاتصال، وقراءة المحادثات — وويب هوك موقّعة تُشعر نظامك بما يحدث لحظياً بدل أن يستطلعنا.

ابدأ في خمس دقائق

ثلاث خطوات من الصفر إلى أول رسالة تصل عميلك.

  1. 1

    ولّد مفتاحاً

    الإعدادات ← مفاتيح API. يُعرض مرّة واحدة فقط — انسخه فوراً.

  2. 2

    اختر قناة وقالباً

    GET /channels و GET /templates يعطيانك ما هو جاهز للإرسال.

  3. 3

    أرسل

    نداء واحد. الرسالة تدخل طابورنا وتصل واتساب خلال ثوانٍ.

curl -X POST https://nawf-backend.onrender.com/api/v1/public/messages/template \
  -H "X-API-Key: sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "to": "9665xxxxxxxx",
    "templateName": "order_confirmed",
    "variables": ["أحمد", "1042"]
  }'

المصادقة والصلاحيات

أرسل مفتاحك في ترويسة X-API-Key، أو كـBearer إن كان عميلك يفرض ذلك — كلاهما مقبول.

X-API-Key: sk_live_...
# أو
Authorization: Bearer sk_live_...

READ

قراءة فقط

التقارير ولوحات المتابعة

WRITE

كتابة لا تُخاطب عميلاً

مزامنة جهات الاتصال

SEND

إرسال فعلي

الأقوى — امنحه بحساب

امنح كل مفتاح أقلّ ما يحتاج. مفتاحُ لوحةِ تقاريرك لا يحتاج SEND — وتسريبُه عندئذٍ يكشف بيانات ولا يُرسل باسمك.

مرجع النقاط

مولَّد من التوثيق نفسه — فما تراه هنا هو ما يقبله الخادم فعلاً.

الرسائل

GET
/conversations/{id}/messages

رسائل محادثة

ترقيم بالمؤشّر لا بالتخطّي — لا يبطؤ مع طول التاريخ

POST
/messages/text

إرسال رسالة نصّية

داخل نافذة الـ٢٤ ساعة فقط — خارجها استعمل قالباً

POST
/messages/template

إرسال قالب

نقطة التكامل الأساسية: إشعارات الطلبات وتأكيد المواعيد

المحادثات

GET
/conversations

المحادثات

قائمة المحادثات مع حالتها والمسند إليه

POST
/conversations

فتح محادثة

فتح محادثة مع رقم — آمن التكرار، يُعيد القائمة إن وُجدت

جهات الاتصال

GET
/contacts

جهات الاتصال

قائمة جهات الاتصال مع بحث اختياري بالاسم أو الرقم

POST
/contacts

إنشاء أو تحديث جهة اتصال

مزامنة قاعدة عملائك إلينا — آمن التكرار بالرقم

الحساب والقنوات والقوالب

GET
/account

حسابك

بيانات مؤسستك وخطتك وحدودها

GET
/channels

القنوات

القنوات النشطة — منها تختار channelId للإرسال

GET
/templates

القوالب

القوالب المعتمدة من Meta فقط — الجاهزة للإرسال

الأساس: https://nawf-backend.onrender.com/api/v1/public — والتوثيق التفاعلي يجرّبها بمفتاحك مباشرةً.

حدّ المعدّل

١٢٠ طلباً في الدقيقة

الحدّ لكل مؤسسة لا لكل مفتاح — توليد مفاتيح إضافية لا يزيد نصيبك. كل ردّ يحمل X-RateLimit-Limit وX-RateLimit-Remaining، فاقرأهما بدل أن تعدّ بنفسك.

الويب هوك الصادرة

سجّل رابطك من الإعدادات، ونرسل إليه POST عند كل حدث تشترك به — بلا استطلاع.

message_received

وصلتك رسالة من عميل

message_sent

خرجت رسالتك إلى واتساب

message_delivered

سُلّمت لجهاز العميل

message_read

قرأها العميل

message_failed

تعذّر تسليمها

conversation_opened

فُتحت محادثة جديدة

conversation_assigned

أُسندت المحادثة لموظّف

conversation_closed

أُغلقت المحادثة

contact_created

أُضيفت جهة اتصال

تحقّق من التوقيع دائماً

بلا تحقّق، أي جهة تعرف رابطك تستطيع أن تُلفّق أحداثاً لنظامك. الترويسة X-Nawaf-Signature بالشكل t=<ثوانٍ>,v1=<HMAC-SHA256>، والمُوقَّع هو `${t}.${النصّ الخام للجسم}` بسرّ نقطتك.

const [t, v1] = header.split(",").map((p) => p.split("=")[1]);
const expected = crypto.createHmac("sha256", secret)
  .update(`${t}.${rawBody}`).digest("hex");

const ok =
  crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1)) &&
  Math.abs(Date.now() / 1000 - Number(t)) <= 300;

وقارن الطابع الزمني: رفضُ ما تجاوز خمس دقائق يجعل إعادةَ بعثِ طلبٍ قديم بلا فائدة. استعمل timingSafeEqual لا === — المقارنة العادية تُسرّب التوقيع بقياس الزمن.

ردّ بـ2xx خلال عشر ثوانٍ. أي ردّ آخر يُعاد ست مرات بتراجع أسّي (٥ث ← ١٦٠ث)، ونقطةٌ تفشل عشرين مرة متتالية تُعطَّل تلقائياً ونُعلمك.

الأخطاء والإصدارات

200 / 201

نجح

400

حمولة غير صالحة — الرسالة تقول أي حقل

401

مفتاح مفقود أو باطل

403

المفتاح لا يملك الصلاحية المطلوبة

404

المورد غير موجود — أو ليس لمؤسستك

429

تجاوزت حدّ المعدّل — راجع X-RateLimit-Remaining

المسار يحمل إصداره (/api/v1/…). أي تغيير كاسر يصدر تحت v2، ويبقى v1 عاملاً حتى إشعار مسبق — فتكاملُك لا ينكسر بنشرةٍ منّا.

جاهز للبدء؟

ولّد مفتاحك من الإعدادات، وجرّب النقاط حيّاً في التوثيق التفاعلي.