انتقل إلى المحتوى الرئيسي

واجهة برمجة التطبيقات OMTrader v1.0 لتكامل CRM

المقدمة​

تتضمن واجهة برمجة التطبيقات OMTrader v1.0 لتكامل تطبيقات CRM كلاً من REST API و WebSocket API.

  • إذا كان نظام CRM يدعم عميل WebSocket، فنُفضل هذا الخيار.
  • معظم موفري CRM يدعمون REST فقط ويستخدمون الاستعلام الدوري لجلب البيانات من OMTrader.

مستويات الوصول إلى API​

مستوى APIالنطاقالأمان
التاجرحساب التاجرمفتاح API
المديرالوصول لجميع المجموعات أو بعضهاالمصادقة الأساسية
المسؤولللمسؤول فقطالمصادقة الأساسية

✅ يتطلب تكامل CRM مستوى API المدير.

المتطلبات المسبقة​

قبل استخدام API للمدير:

  • يجب على المسؤول إنشاء حساب بدور المدير عبر بوابة الإدارة.
  • سيتم استخدام هذا الحساب لأغراض الانتحال عبر API.
  • يجب أن يبقى الحساب نشطًا أثناء استخدام تطبيق CRM.
  • لمنح صلاحية الوصول الكاملة، يجب ربط الحساب بأعلى مجموعة.

💡 نصيحة: سَمِّ الحساب باسم CRM API لتسهيل التعرّف عليه.

نظرة عامة على API​

تحتوي واجهة API للمدير على العديد من الإمكانيات. في ما يلي أكثر النقاط استخدامًا في CRM.

التوثيق​

  • قم بتسجيل الدخول إلى: http://manager.dev.omtrader.io
  • استعرض API من خلال لوحة Swagger.
  • ستجد هناك تنسيق JSON الكامل للطلبات والاستجابات وأكواد الأخطاء.

المصادقة​

نقطة تسجيل الدخول​

POST {{url}}/api/v1/oauth2/login?remember_me=false

الرؤوس:

Authorization: Basic <base64(username:password)>

مثال (cURL):

curl --location --request POST 'api.dev.omtrader.io/api/v1/oauth2/login?remember_me=false' \
--header 'Authorization: Basic bWFuYWdlcjoxMjM='

الاستجابة:

{
"success": true,
"code": 200,
"data": {
"account_id": 2,
"access_token": "...",
"refresh_token": "...",
"session_id": "...",
"expires_in": 3600,
"ip_address": "94.249.48.3",
"scope": "Manager"
},
"error": "",
"message": ""
}

استخدم access_token في جميع الطلبات اللاحقة:

مثال (REST API):

curl --location --globoff '{{url}}/api/v1/manager/accounts?page=2&limit=5' \
--header 'Authorization: Bearer <access_token>'

مثال (WebSocket):

{{ws}}/ws/v1?session_id={{session_id}}&access_token={{token}}

بنية API​

المكونالوصف
الفعلGET، POST، PUT، DELETE، BATCH
الخادمخادم API المستهدف
APIثابت /api
الإصدارv1، v2، ...
النطاقtrader، manager، admin
الكيانaccounts، groups، commissions ...
الصفحة / الحدللطلبات من نوع GET فقط

API حساب المدير​

الوصفالفعلالرابط
جلب جميع الحساباتGET/api/v1/manager/accounts
جلب حساب محددGET/api/v1/manager/accounts/:id
تحديث الحسابPUT/api/v1/manager/accounts/:id
حذف الحسابDELETE/api/v1/manager/accounts/:id
إنشاء حسابPOST/api/v1/manager/accounts
تحويل الأموالPOST/api/v1/manager/accounts/1/money
عرض المعاملاتGET/api/v1/manager/accounts/1/transactions/history

API المجموعات للمدير​

الوصفالفعلالرابط
جلب جميع المجموعاتGET/api/v1/manager/groups
جلب مجموعة حسب IDGET/api/v1/manager/group/:id
تحديث مجموعةPUT/api/v1/manager/group/:id

API العمولات للمجموعات​

الوصفالفعلالرابط
جلب العمولاتGET/api/v1/manager/groups/1/commissions
إنشاء عمولةPOST/api/v1/manager/commissions
تحديث عمولةPUT/api/v1/manager/commissions/:id
حذف عمولةDELETE/api/v1/manager/commissions/:id

WebSocket API​

تنسيق URL لـ WebSocket​

{{ws}}/ws/v1?session_id={{session_id}}&access_token={{token}}
  • استخدم wss:// في بيئة الإنتاج.

الاتصال​

GET {{ws}}/ws/v1?session_id={{session_id}}&access_token={{token}}

مثال استجابة:

Connected to api.dev.omtrader.io/ws/v1?session_id=...&access_token=...

تنسيق حدث WebSocket​

{
"type": "event_name",
"data": { ... }
}

أحداث الاشتراك​

الحدثالبياناتالوصف
subscribe_groupgroup_idالاشتراك في بيانات مجموعة معينة
subscribe_group_sessiongroup_idالاشتراك في جميع جلسات المجموعة

أحداث إلغاء الاشتراك​

الحدثالبياناتالوصف
unsubscribe_groupgroup_idإلغاء الاشتراك في مجموعة معينة
unsubscribe_group_sessiongroup_idإلغاء الاشتراك في جميع جلسات المجموعة

الحفاظ على اتصال WebSocket​

لضمان بقاء الاتصال نشطًا، أرسل "نبض" كل 30 ثانية بالقيمة 9:

private startHeartbeat() {
if (this.heartbeatInterval) {
clearInterval(this.heartbeatInterval);
}
this.heartbeatInterval = setInterval(() => {
if (this.webSocket && this.webSocket.readyState === WebSocket.OPEN) {
this.sendString("9");
}
}, 30000); // كل 30 ثانية
}