توثيق API

تكام�� مع منصتنا باستخدام واجهة REST API

المصادقة

تتطلب جميع طلبات API رمز Bearer. أنشئ مفتاح API من الإعدادات > التكاملات.

curl -H "Authorization: Bearer sk_live_YOUR_API_KEY" \ https://your-domain.com/api/v1/tenders

حدود الاستخدام

تكون طلبات API محدودة حسب خطة الاشتراك. Pro: 1,000/يوم، Enterprise: غير محدود.

ترقيم الصفحات

تُرجع جميع نقاط النهاية المُرقّمة استجابات بالهيكل التالي:

{ "data": [...], "total": 150, "page": 1, "page_size": 20, "total_pages": 8 }

نقاط النهاية

GET/api/v1/tenders

List tenders with pagination and filtering

الصلاحية المطلوبة: tenders.read
المعاملالنوعمطلوبالوصف
pagenumberلاPage number (default: 1)
page_sizenumberلاItems per page (max: 100)
sourcestringلاFilter by source (etimad, nupco)
agencystringلاFilter by agency name
GET/api/v1/tenders/:id

Get tender details with line items

الصلاحية المطلوبة: tenders.read
المعاملالنوعمطلوبالوصف
idnumberنعمTender ID
GET/api/v1/search

Search tenders by keyword (including item names)

الصلاحية المطلوبة: search
المعاملالنوعمطلوبالوصف
qstringلاSearch query
sourcestringلاFilter by source
agencystringلاFilter by agency
typestringلاFilter by tender type
date_fromstringلاStart date (ISO)
date_tostringلاEnd date (ISO)
pagenumberلاPage number
page_sizenumberلاItems per page
GET/api/v1/bids

List your organization's bids

الصلاحية المطلوبة: bids.read
المعاملالنوعمطلوبالوصف
statusstringلاFilter by status
pagenumberلاPage number
page_sizenumberلاItems per page
GET/api/v1/favorites

List your organization's favorite tenders

الصلاحية المطلوبة: favorites.read
المعاملالنوعمطلوبالوصف
pagenumberلاPage number
page_sizenumberلاItems per page

الويب هوك

استقبل إشعارات فورية عند حدوث أحداث. كوّن الويب هوك من الإعدادات > التكاملات.

الأحداث المتاحة

التحقق من التوقيع

يتم توقيع جميع حمولات الويب هوك بـ HMAC-SHA256. تحقق من رأس X-Webhook-Signature:

// Verify webhook signature const crypto = require('crypto'); const signature = req.headers['x-webhook-signature']; const expected = 'sha256=' + crypto .createHmac('sha256', webhookSecret) .update(JSON.stringify(req.body)) .digest('hex'); if (signature === expected) { // Valid webhook }