مرجع واجهة API
كل مسار تقدّمه واجهة API، ومن يحق له استدعاؤه، وكيف يعمل تسجيل الدخول والصلاحيات والأخطاء وتقسيم النتائج إلى صفحات.
لحزمة الحزمة الكاملة
العنوان الأساسي وصيغة الاستجابة
يُقدَّم كل مسار تحت البادئة /api. محليًا يكون العنوان الأساسي http://localhost:8000/api. وعلى الخادم يكون عنوان واجهة API متبوعًا بـ /api، وهي القيمة نفسها التي تقرؤها لوحة التحكم من NEXT_PUBLIC_API_BASE_URL (متغيرات البيئة).
يستخدم الأعضاء والطاقم تسجيل الدخول نفسه والرمز نفسه؛ والأدوار التي يحملها الحساب تحدد المسارات التي تجيب. محتوى الطلبات بصيغة JSON، باستثناء رفع الملفات. وتأتي كل إجابة في الغلاف نفسه:
{
"success": true,
"data": { },
"message": ""
}يحتوي data على النتيجة. وmessage جملة قصيرة تملؤها بعض عمليات الكتابة، مترجمة إلى لغة الطلب، وتكون فارغة في غير ذلك.
فحص السلامة هو المسار الوحيد خارج الغلاف. لا يحتاج إلى رمز ولا يخضع لتحديد المعدل:
curl http://localhost:8000/api/health{"status":"ok"}يُرجع 503 مع {"status":"unavailable"} ما دام لا يمكن الوصول إلى قاعدة البيانات أو كانت خالية من الجداول، لذا يمكن للمنصة استخدامه كفحص للجاهزية.
الأخطاء
يُجيب الطلب الفاشل برمز حالة HTTP المطابق وبالغلاف نفسه، مع success: false وdata: null، ومع المشكلات لكل حقل عند فشل التحقق:
{
"success": false,
"data": null,
"message": "<the first field's problem>",
"errors": {
"email": ["<the problem with email>"]
}
}| الحالة | متى |
|---|---|
400 | فشل حقل في التحقق، أو يحتوي محتوى الطلب على حقل لا يقبله المسار: الحقول غير المعروفة تُرفض ولا تُتجاهل. وأيضًا الرفع من دون حاوية مضبوطة. |
401 | الرمز مفقود أو منتهي الصلاحية، أو فشل تسجيل الدخول (الإجابة نفسها سواء لم يكن للبريد الإلكتروني حساب أو كانت كلمة المرور خاطئة)، أو مفتاح إدخال مفقود أو غير معروف. |
403 | أدوار الحساب لا تمنح صلاحية المسار: "You need one of these permissions: …". |
404 | لا يوجد سجل كهذا، أو السجل لا يخص المستدعي. |
409 | حذف سيكسر شيئًا لا يزال يستخدم السجل، مثل exercise_in_use. |
429 | أكثر من 10 محاولات في الدقيقة من عنوان واحد على مسار تسجيل الدخول أو التسجيل أو حذف الحساب. تحدد الترويسة Retry-After عدد الثواني التي يجب انتظارها. |
503 | فحص السلامة قبل أن تصبح قاعدة البيانات جاهزة. |
500 | فشل غير متوقع. تبقى الرسالة عامة وتذهب التفاصيل إلى سجل واجهة API. |
تحمل أخطاء كثيرة مفتاحًا تترجمه لوحة التحكم، مثل member_not_found أو event_full، في message.
التقسيم إلى صفحات
تأخذ القوائم page، بدءًا من 1، وpage_count، وهو حجم الصفحة. تحتوي الصفحة على 100 صف كحد أقصى: الحجم الأكبر يُقرأ 100، والأصغر يُقرأ 1، والحجم المفقود أو غير المقروء يعود إلى القيمة الافتراضية للقائمة. وتجيب القائمة بشكل واحد:
{
"success": true,
"data": { "data": [ ], "page": 1, "limit": 15, "total": 35, "totalPages": 3 },
"message": ""
}| القائمة | حجم الصفحة الافتراضي |
|---|---|
| الأعضاء، وكتالوجات المحتوى | 15 |
| المدربون، والأدوار، والإعدادات | 10 |
تُرتَّب قوائم المحتوى حسب updated_at، الأحدث أولًا افتراضيًا (order=asc أو desc)، مع المعرّف كمعيار ترجيح، وتقبل search وفلاترها الخاصة.
اللغة
أرسل لغة القارئ في الترويسة Accept-Language: en أو ar كما في الإصدار المرفق. تُعدّ ar-SA عربية، وأي لغة لا تملكها واجهة API يُجاب عنها بالإنجليزية. تُترجم رسائل الخطأ وmessage لعملية الكتابة الناجحة؛ ويعود المحتوى المخزّن باللغتين بالشكل { "en": "...", "ar": "..." }.
المصادقة
- سجّل الدخول عبر
POST /api/auth/login. تحتوي الإجابة علىaccess_token، وهو JWT موقّع بـJWT_SECRET، والحساب مع أدواره وصلاحياته. أرسله بالشكلAuthorization: Bearer <token>. - يدوم الرمز طوال
JWT_EXPIRATION، و7dافتراضيًا. لا يوجد مسار للتجديد: عندما تنتهي صلاحية الرمز، يُرجع الطلب التالي401ويسجّل العميل الدخول من جديد. - يقبل تسجيل الدخول والتسجيل وحذف الحساب 10 محاولات في الدقيقة من عنوان واحد، تُعدّ لكل مسار على حدة، ثم تُرجع
429. يُحفظ العدد في ذاكرة واجهة API، لذا يبدأ من جديد عند إعادة التشغيل. خلف خادم وكيل، راجعTRUST_PROXY(حل المشكلات).
سجّل الدخول بصفتك المدرب الرئيسي المزروع
الطرفيةcurl -X POST http://localhost:8000/api/auth/login \ -H "Content-Type: application/json" \ -d '{"email":"headcoach@example.com","password":"Coach@123"}'الاستجابة{ "success": true, "data": { "access_token": "eyJhbGciOiJIUzI1NiIs...", "token_type": "Bearer", "expires_in": "7d", "account": { "email": "headcoach@example.com", "roles": [ ], "permissions": [ ] } }, "message": "..." }استدعِ مسارًا محميًا بالرمز
الطرفيةcurl "http://localhost:8000/api/users?page=1&page_count=5" \ -H "Authorization: Bearer <access_token>"النتيجة المتوقعة: أول خمسة أعضاء، بشكل القائمة.
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
POST | /api/auth/login | أي شخص | يسجّل دخول أي حساب. يخضع لتحديد المعدل. |
POST | /api/auth/register | أي شخص | ينشئ حساب عضو (first_name وlast_name وemail وpassword من 8 أحرف أو أكثر، وusername اختياري) ويسجّل دخوله. يخضع لتحديد المعدل. |
GET | /api/auth/me | أي حساب مسجّل الدخول | الحساب مع أدواره وصلاحياته. |
POST | /api/auth/delete-account | أي حساب مسجّل الدخول | يغلق حساب المستدعي نفسه بعد التحقق من password. يخضع لتحديد المعدل. |
PATCH | /api/coaches/profile | أي حساب مسجّل الدخول | يحدّث الملف الشخصي للمستدعي نفسه. |
PATCH | /api/coaches/profile/password | أي حساب مسجّل الدخول | يغيّر كلمة مرور المستدعي نفسه. |
لا يوجد مسار لإعادة تعيين كلمة المرور. صفحتا نسيان كلمة المرور وإعادة تعيينها في لوحة التحكم واجهتان فقط: لا يُرسَل أي رابط لإعادة التعيين. يعيّن حساب طاقم يملك members.update كلمة مرور العضو عبر PATCH /api/users/:username/change-password.
غيّر كلمات المرور التجريبية
تستخدم الحسابات التجريبية كلمات مرور منشورة: Coach@123 وMember@123 وTrainer@123، وstaff123 لبقية الطاقم وpassword123 لبقية الأعضاء. غيّرها، أو ابدأ من جداول فارغة، قبل إطلاق أي شيء.
الصلاحيات
يتحقق المسار من الرمز أولًا، ثم من الصلاحية التي يحددها. يملك الحساب كل صلاحيات كل دور لديه؛ وحيث يحدد المسار عدة صلاحيات، تكفي أي واحدة منها. في الجداول أدناه، اسم الصلاحية في من يحق له استدعاؤه يعني حسابًا تمنحه أدواره تلك الصلاحية.
الأعضاء
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/users | members.view | صفحة من الأعضاء (order وsearch وemail وphone وcountry_id وusername وfirst_name وlast_name وfrom_date وto_date وverified). |
GET | /api/users/statistic | members.view | أعداد الأعضاء لشاشة «النادي». |
GET | /api/users/:username | members.view | عضو واحد. |
POST | /api/users | members.create | ينشئ عضوًا. |
PATCH | /api/users/:username | members.update | يحدّث عضوًا. |
PATCH | /api/users/:username/change-password | members.update | يضبط كلمة مرور عضو. |
POST | /api/users/:username/resend-verification-email | members.update | يُرجع نجاحًا؛ لا يُرسَل أي بريد إلكتروني، إذ لا يأتي القالب بناقل بريد. |
POST | /api/users/:username/make-verified | members.verify | يعلّم البريد الإلكتروني كمؤكَّد. |
POST | /api/users/:username/make-unverified | members.verify | يعلّمه كغير مؤكَّد. |
DELETE | /api/users/:username | members.delete | ينقل العضو إلى قائمة المحذوفين. |
GET | /api/users/deleted | members.view | صفحة من الأعضاء المحذوفين. |
GET | /api/users/deleted/:username | members.view | عضو محذوف واحد. |
POST | /api/users/deleted/:username/restore | members.restore | يستعيد واحدًا منها. |
المدربون والأدوار
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/coaches | coaches.view | صفحة من حسابات الطاقم (email وname وphone). |
GET | /api/coaches/statistics | coaches.view | أعداد الموظفين. |
GET | /api/coaches/management/roles/select | coaches.view أو coaches.assign_roles | الأدوار التي يمكن لنموذج الطاقم الاختيار منها. |
GET | /api/coaches/:id | coaches.view | حساب طاقم واحد، بالمعرّف أو باسم المستخدم. |
POST | /api/coaches | coaches.create | ينشئ واحدًا. |
PATCH | /api/coaches/:id | coaches.edit | يحدّث واحدًا. |
PATCH | /api/coaches/:id/roles | coaches.assign_roles | يضبط أدواره. |
DELETE | /api/coaches/:id | coaches.delete | يحذف واحدًا. |
GET | /api/roles | roles.view | الأدوار (page وpage_count وname وguard_name وcreated_from وcreated_to)؛ وكل الأدوار من دون page_count. |
GET | /api/roles/statistics | roles.view | أعداد الأدوار. |
GET | /api/roles/select | roles.view | الأدوار لقائمة منسدلة. |
GET | /api/roles/permissions | roles.view | كل الصلاحيات، حسب الوحدة. |
GET | /api/roles/:id | roles.view | دور واحد مع صلاحياته. |
POST | /api/roles | roles.create | ينشئ دورًا. |
PUT | /api/roles/:id | roles.edit | يعيد تسميتها. |
POST | /api/roles/:id/permissions | roles.assign_permissions | يضبط صلاحياته. |
DELETE | /api/roles/:id | roles.delete | يحذفه. |
إعدادات التطبيق
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/settings | settings.view | صفحة من الإعدادات (search وcategory وtype). |
GET | /api/settings/:key | settings.view | إعداد واحد. |
PATCH | /api/settings/:key | settings.edit | يغيّر قيمته. |
DELETE | /api/settings/:key | settings.edit | يحذفه. |
بيانات العضو الخاصة
كل مسار هنا يجيب عن الحساب صاحب الرمز ولا أحد غيره. رمز الطاقم يُرجع 403، لأن دور العضو وحده يملك fitness.view وfitness.edit. وتجيب كل عملية كتابة بالصفحة كاملة بعد تحديثها.
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/fitness/overview | fitness.view | يوم لوحة التحكم: الحلقات، والسعرات، والنوم، ومعدل ضربات القلب، والتمارين، والخطوات. |
GET | /api/fitness/activity | fitness.view | صفحة النشاط (granularity بالقيمة days أو weeks أو months). |
GET | /api/fitness/activity/:slug | fitness.view | نشاط واحد. |
GET | /api/fitness/nutrition | fitness.view | صفحة التغذية. |
POST | /api/fitness/nutrition/meals | fitness.edit | يسجّل طبقًا من الكتالوج في اليوم الحالي. |
PATCH | /api/fitness/nutrition/hydration | fitness.edit | يضبط أكواب اليوم. |
GET | /api/fitness/nutrition/planner | fitness.view | مخطط يوم واحد (date). |
POST | /api/fitness/nutrition/planner | fitness.edit | يسجّل وجبة العضو الخاصة. |
DELETE | /api/fitness/nutrition/planner/:key | fitness.edit | يحذف واحدًا. |
GET | /api/fitness/sleep | fitness.view | صفحة النوم. |
POST | /api/fitness/sleep/nights | fitness.edit | يسجّل ليلة. |
DELETE | /api/fitness/sleep/nights/:date | fitness.edit | يحذف واحدًا. |
GET | /api/fitness/health | fitness.view | صفحة الصحة. |
POST | /api/fitness/health/readings | fitness.edit | يسجّل المؤشرات الحيوية ليوم. |
DELETE | /api/fitness/health/readings/:date | fitness.edit | يحذفها. |
GET | /api/fitness/progress | fitness.view | صفحة التقدم. |
GET | /api/fitness/progress/photos | fitness.view | صفحة الصور (before وafter). |
POST | /api/fitness/progress/photos | fitness.edit | يضيف نقطة تحقق. |
PATCH | /api/fitness/progress/photos/notes | fitness.edit | يحفظ اليوميات. |
PATCH | /api/fitness/progress/goal | fitness.edit | يضبط هدف الوزن. |
POST | /api/fitness/progress/readings | fitness.edit | يسجّل قراءة للجسم. |
DELETE | /api/fitness/progress/readings/:date | fitness.edit | يحذف واحدًا. |
GET | /api/fitness/community | fitness.view | صفحة المجتمع. |
GET | /api/fitness/community/members/:username | fitness.view | الملف الشخصي لعضو. |
GET | /api/fitness/community/groups/:slug | fitness.view | مجموعة. |
GET | /api/fitness/community/discussions/:slug | fitness.view | نقاش. |
POST | /api/fitness/community/groups/:slug/join | fitness.edit | ينضم إلى مجموعة أو يغادرها. |
POST | /api/fitness/community/challenges/:slug/join | fitness.edit | ينضم إلى تحدٍّ أو ينسحب منه. |
POST | /api/fitness/community/events/:slug/attend | fitness.edit | يحضر فعالية أو يلغي حضوره. |
POST | /api/fitness/community/groups/:slug/posts | fitness.edit | يكتب منشورًا. |
POST | /api/fitness/community/groups/:slug/posts/:postKey/like | fitness.edit | يعجب به أو يلغي الإعجاب. |
POST | /api/fitness/community/groups/:slug/posts/:postKey/comments | fitness.edit | يعلّق. |
POST | /api/fitness/community/discussions/:slug/replies | fitness.edit | يرد. |
GET | /api/fitness/billing | fitness.view | الخطة وفواتيرها. للقراءة فقط. |
GET | /api/fitness/settings-hub | settings.view | أرقام صفحة الإعدادات، والتنبيهات، والخصوصية، والمظهر. |
PATCH | /api/fitness/settings-hub/notifications | fitness.edit | مفاتيح التنبيهات الأربعة. |
PATCH | /api/fitness/settings-hub/privacy | fitness.edit | مشاركة النشاط. |
PATCH | /api/fitness/settings-hub/appearance | settings.view | المظهر، ولون التمييز، والحركة. |
GET | /api/fitness/settings-hub/export | fitness.view | كل ما سجّله العضو، بصيغة JSON. |
GET | /api/fitness/devices | fitness.view | الأجهزة واتصال الحساب بكل منها. |
POST | /api/fitness/devices/:key/toggle | fitness.edit | يربط جهازًا أو يفصله. |
POST | /api/fitness/devices/:key/sync | fitness.edit | دائمًا 400 device_sync_unavailable. |
GET | /api/fitness/devices/keys | fitness.view | مفاتيح الإدخال الخاصة بالحساب. |
POST | /api/fitness/devices/keys | fitness.edit | ينشئ مفتاحًا؛ والمفتاح الكامل موجود في هذه الإجابة فقط. |
DELETE | /api/fitness/devices/keys/:id | fitness.edit | يلغي مفتاحًا. |
التمارين والحركات والجلسة
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/fitness/workouts | fitness.view | صفحة الخطة. |
GET | /api/fitness/workouts/programs | fitness.view | البرامج والبرنامج النشط. |
POST | /api/fitness/workouts/programs/:slug/enroll | fitness.edit | يبدأ برنامجًا أو يوقفه. |
GET | /api/fitness/workouts/:slug | fitness.view | تمرين واحد. |
POST | /api/fitness/workouts/:slug/save | fitness.edit | يحفظه أو يلغي حفظه. |
GET | /api/fitness/exercises | fitness.view | المكتبة (muscle وequipment وdifficulty). |
GET | /api/fitness/exercises/:slug | fitness.view | حركة واحدة؛ ويسجّل مشاهدة. |
POST | /api/fitness/exercises/:slug/save | fitness.edit | يحفظه أو يلغي حفظه. |
POST | /api/fitness/exercises/:slug/log-set | fitness.edit | يسجّل المجموعات والتكرارات والوزن. |
GET | /api/fitness/workouts/session | fitness.view | الجلسة المفتوحة، تُفتح من خطة اليوم إن لم تكن هناك جلسة مفتوحة. |
POST | /api/fitness/workouts/session/sets/:set | fitness.edit | يسجّل مجموعة (weightKg وreps وrpe). |
POST | /api/fitness/workouts/session/rest/skip | fitness.edit | يتخطى الراحة. |
PATCH | /api/fitness/workouts/session/notes | fitness.edit | يحفظ الملاحظة. |
POST | /api/fitness/workouts/session/exercises | fitness.edit | يضيف حركة (slug). |
POST | /api/fitness/workouts/session/exercises/:slug/select | fitness.edit | يجعلها الحالية. |
DELETE | /api/fitness/workouts/session/exercises/:slug | fitness.edit | يحذفها. |
POST | /api/fitness/workouts/session/finish | fitness.edit | ينهي الجلسة. |
POST | /api/fitness/workouts/session/restart | fitness.edit | يتجاهلها ويبدأ من جديد. |
التدريب
تجيب مسارات قائمة العملاء عن المدرب الذي يرسل الطلب: عميل مدرب آخر يُرجع 404.
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/fitness/coaching/clients | coaching.clients | قائمة عملاء المستدعي. |
GET | /api/fitness/coaching/clients/:username | coaching.clients | عميل واحد. |
GET | /api/fitness/coaching/available-members | coaching.clients | الأعضاء الذين ليس لديهم مدرب. |
POST | /api/fitness/coaching/clients | coaching.clients | يتولى عضوًا (username). |
GET | /api/fitness/coaching/workouts | coaching.clients | الجلسات التي يسند منها المدرب. |
GET | /api/fitness/coaching/roster/assigned-work | coaching.clients | عمل اليوم عبر قائمة العملاء. |
GET | /api/fitness/coaching/roster/check-ins | coaching.clients | متابعات هذا الأسبوع، بدءًا بالتي لم يُرد عليها. |
GET | /api/fitness/coaching/clients/:username/plan | coaching.clients | العمل المسند لعميل. |
POST | /api/fitness/coaching/clients/:username/plan | coaching.clients | يسند تمرينًا (workoutSlug وstartsOn وnote). |
DELETE | /api/fitness/coaching/plan/:id | coaching.clients | يحذف إسنادًا. |
GET | /api/fitness/coaching/clients/:username/messages | coaching.clients | السلسلة مع عميل. |
POST | /api/fitness/coaching/clients/:username/messages | coaching.clients | يكتب إليه (body وattachments). |
GET | /api/fitness/coaching/clients/:username/check-ins | coaching.clients | متابعات العميل. |
POST | /api/fitness/coaching/check-ins/:id/reply | coaching.clients | يرد على إحداها (body). |
GET | /api/fitness/coaching/my-coach | fitness.view | مدرب العضو، أو null. |
GET | /api/fitness/coaching/my-plan | fitness.view | ما أسنده المدرب. |
GET | /api/fitness/coaching/messages | fitness.view | سلسلة العضو. |
POST | /api/fitness/coaching/messages | fitness.edit | يكتب إلى المدرب. |
GET | /api/fitness/coaching/check-ins | fitness.view | متابعات العضو. |
POST | /api/fitness/coaching/check-ins | fitness.edit | يسجّل متابعة هذا الأسبوع (energy وweightKg وnotes). |
GET | /api/fitness/coaching/coaches | coaching.assign | الحسابات التي تحمل دور Coach، مع عدد عملاء كل منها. |
GET | /api/fitness/coaching/assignments/:username | coaching.assign | من يدرّب العضو. |
POST | /api/fitness/coaching/assignments | coaching.assign | ينقل عضوًا إلى مدرب (coachUsername وmemberUsername). |
DELETE | /api/fitness/coaching/assignments/:username | coaching.assign | يخرج عضوًا من كل قوائم العملاء. |
كتالوجات المحتوى
يجيب كل كتالوج عن المسارات الخمسة نفسها تحت /api/fitness/manage/<catalogue>، ويحتاج كل منها إلى fitness.manage. الكتالوجات هي exercises وworkouts وprograms وdishes وgroups وevents وchallenges وachievements وbadges.
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/fitness/manage/<catalogue> | fitness.manage | صفحة من السجلات (page وpage_count وsearch وorder وفلاتر الكتالوج الخاصة). |
GET | /api/fitness/manage/<catalogue>/:id | fitness.manage | سجل واحد. |
POST | /api/fitness/manage/<catalogue> | fitness.manage | ينشئ سجلًا؛ والمعرّف النصي أو المفتاح المتروك يُصنع من الاسم الإنجليزي. يُرجع 201. |
PATCH | /api/fitness/manage/<catalogue>/:id | fitness.manage | يغيّر الحقول المرسلة؛ وتُستبدل القوائم داخل السجل بالكامل. |
DELETE | /api/fitness/manage/<catalogue>/:id | fitness.manage | يحذفه ويُرجع 200، أو 409 ما دام شيء ما لا يزال يستخدمه. |
POST | /api/fitness/manage/exercises/:id/feature | fitness.manage | يجعل هذه الحركة هي المميزة. |
المعرّف غير المعروف يُرجع 404 record_not_found. تُرسل الأسماء والنصوص بالشكل { "en": "…", "ar": "…" }؛ ولا تُرسل سعرات الطبق أبدًا، بل تُحسب من غراماته.
الإدخال
الباب المخصص للأجهزة والمجمّعات. تأخذ هذه المسارات مفتاح إدخال في X-Api-Key، لا رمز bearer أبدًا، وتكتب لحساب المفتاح فقط.
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/ingest/whoami | مفتاح إدخال | حساب المفتاح واسمه. |
POST | /api/ingest/daily-metrics | مفتاح إدخال | يُدرج أيامًا من أرقام الحركة أو يحدّثها (days). |
POST | /api/ingest/sessions | مفتاح إدخال | يسجّل التمارين المنتهية (sessions). |
البحث، والرفع، والإشعارات، والدول
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/search | أي حساب مسجّل الدخول | النتائج لمصطلح عبر الأنواع التي يمكن للمستدعي فتحها (q وlocale وlimit). |
POST | /api/helpers/upload | أي حساب مسجّل الدخول | يرفع ملفًا واحدًا (file، حتى 150 MB) إلى الحاوية؛ و400 إذا لم تُضبط حاوية. |
POST | /api/helpers/upload-chunk | أي حساب مسجّل الدخول | جزء من ملف أكبر (حتى 16 MB للجزء). |
GET | /api/notifications | أي حساب مسجّل الدخول | إشعارات المستدعي. |
PATCH | /api/notifications/read-all | أي حساب مسجّل الدخول | يعلّمها كلها كمقروءة. |
PATCH | /api/notifications/:id/read | أي حساب مسجّل الدخول | يعلّم واحدًا كمقروء. |
DELETE | /api/notifications/:id | أي حساب مسجّل الدخول | يحذف واحدًا. |
GET | /api/helpers/countries | أي شخص | الدول لقائمة منسدلة، بأسماء بلغة الطلب. |
يدفع مجالا Socket.IO على الخادم نفسه التحديثات المباشرة: يوصل /notifications كل إشعار جديد، ويخبر /auth لوحة التحكم المسجّل دخولها بأن صلاحياتها تغيّرت. يقبلان المصادر الموجودة في FRONTEND_URL، أو CORS_ORIGIN إذا لم يُضبط.
المساعد الذكي
مُضمَّن مع مشترياتك. سجّل الدخول لقراءته، أو افتحه في ملف التنزيل.
مسارات المحادثة، والنموذج، والاقتراحات الافتتاحية، وسجل المحادثات الخاصة بالمساعد.
خادم MCP
مُضمَّن مع مشترياتك. سجّل الدخول لقراءته، أو افتحه في ملف التنزيل.
المسار الذي يستخدمه وكيل البرمجة، والمفتاح الذي يرسله.
مسارات وضع العرض التجريبي
مُضمَّن مع مشترياتك. سجّل الدخول لقراءته، أو افتحه في ملف التنزيل.
المسارات التي يستخدمها العرض التجريبي العام ليعرّف بنفسه ويمنح كل زائر حسابًا.