مرجع واجهة API
كل مسار تقدّمه واجهة API، ومن يحق له استدعاؤه، وكيف يعمل تسجيل الدخول والصلاحيات والأخطاء وتقسيم النتائج إلى صفحات.
لحزمة الحزمة الكاملة
العنوان الأساسي وصيغة الاستجابة
يُقدَّم كل مسار تحت البادئة /api. محليًا، العنوان الأساسي هو http://localhost:8000/api. وعلى الخادم، هو عنوان واجهة API الخاصة بك متبوعًا بـ /api، وهي القيمة نفسها التي تقرؤها الواجهتان الأماميتان من NEXT_PUBLIC_API_BASE_URL (متغيرات البيئة).
تخدم واجهة API فئتين لا تتشاركان أي رمز أبدًا: العملاء، الذين يستخدمون مسارات المتجر، والموظفين، الذين يستخدمون مسارات لوحة الإدارة. أجسام الطلبات بصيغة 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 | الرمز مفقود، أو منتهي الصلاحية، أو يخص الجمهور الآخر. وكذلك تسجيل الدخول الفاشل، سواء لم يكن للبريد حساب أو كانت كلمة المرور خاطئة. |
402 | غرفة القياس في عرض تجريبي عام، عندما لا يرسل المتسوّق مفتاحه الخاص. |
403 | أدوار المسؤول لا تمنح الصلاحية التي يتطلبها المسار: «ليس لديك صلاحية للقيام بهذا الإجراء». |
404 | لا يوجد سجل كهذا. |
409 | تتعارض عملية الكتابة مع سجل موجود، مثل بريد إلكتروني أو slug أو SKU مستخدم بالفعل. |
429 | محاولات كثيرة من عنوان واحد على مسار تسجيل الدخول أو التسجيل أو كلمة المرور أو التتبّع، أو تجارب قياس كثيرة. على مسارات تسجيل الدخول، تحدد ترويسة Retry-After عدد الثواني التي يجب انتظارها. |
503 | ميزة غير مُعدّة: رفع الملفات من دون مخزن، أو ميزة ذكاء اصطناعي من دون مفتاحها، أو فحص السلامة قبل وجود الجداول. |
500 | فشل غير متوقع. تبقى الرسالة عامة وتذهب التفاصيل إلى سجل واجهة API. |
تجيب عمليات الكتابة الناجحة بـ 201 مع POST وبـ 200 مع الطرق الأخرى.
التقسيم إلى صفحات والترتيب
تأخذ القوائم page، بدءًا من 1، وpage_count، وهو حجم الصفحة. تحتوي الصفحة على 100 صف كحد أقصى: الحجم الأكبر يُقرأ 100، والأصغر يُقرأ 1، والحجم المفقود أو غير المقروء يعود إلى القيمة الافتراضية للقائمة. وتجيب القائمة بشكل واحد:
{
"success": true,
"data": { "data": [ ], "page": 1, "limit": 15, "total": 35, "totalPages": 3 },
"message": ""
}| القائمة | حجم الصفحة الافتراضي |
|---|---|
| المنتجات، والفئات، والعملاء، وطلبات الإدارة | 15 |
| الموظفون، والأدوار، والإعدادات، والتقييمات، وطلبات العميل الخاصة | 10 |
/api/products/featured (limit) | 8 |
/api/products/:id/related (limit) | 4 |
- يحدد
order=ascأوorder=descالاتجاه في المنتجات والفئات والعملاء والطلبات. الفئات تصاعدية افتراضيًا، والبقية من الأحدث إلى الأقدم. - تُرتَّب المنتجات أيضًا بـ
sort:created_atأوupdated_atأوpriceأوratingأوbest_selling. والقيمة غير المعروفة تعود إلى الافتراضي، أي الأحدث تحديثًا أولًا مع حسم التعادل بـid. ويضعorder_by_featured=trueالمنتجات المميزة والأكثر مبيعًا أولًا. - تُصفّى قائمة المنتجات حسب
search(الاسم بأي من اللغتين، أو SKU)، وcategory_id، وis_active، وis_featured، وis_best_seller، وmin_price، وmax_price، وtag، وon_sale.
اللغة
أرسل لغة القارئ في الترويسة Accept-Language: en أو ar كما هو مرفق. تُعامَل ar-SA كعربية، وأي لغة لا تملكها واجهة API يُجاب عنها بالإنجليزية. لا يوجد معامل استعلام للغة.
- تُترجم رسائل الخطأ و
messageالخاصة بعمليات الكتابة الناجحة. - النص المحفوظ باللغتين، مثل أسماء المنتجات والفئات، يعود بالشكل
{ "en": "...", "ar": "..." }ويختار العميل إحداهما.
المصادقة
يسجّل العملاء والموظفون الدخول عبر نقاط نهاية مختلفة، مقابل جداول مختلفة، ويتلقون رموزًا لا تقبلها إلا مساراتهم الخاصة.
| الجمهور | تسجيل الدخول | الرمز في الإجابة | مقبول على |
|---|---|---|---|
| العميل | POST /api/auth/customer/login | data.token، مع data.user | مسارات العملاء |
| الموظفون | POST /api/auth/login | data.access_token، مع data.admin (الأدوار والصلاحيات) | مسارات الإدارة |
- كلاهما رمز JWT موقّع بـ
JWT_SECRET. أرسلهما بالشكلAuthorization: Bearer <token>. - يبقى الرمز صالحًا لمدة
JWT_EXPIRATION، وهي7dافتراضيًا (متغيرات البيئة). ويُبلغ تسجيل دخول الموظفين بالقيمة نفسها فيexpires_in. - لا توجد نقطة نهاية للتجديد. عندما تنتهي صلاحية الرمز، يجيب الطلب التالي بـ
401ويسجّل العميل الدخول من جديد. - يُرفض رمز العميل على مسارات الإدارة، ورمز الموظف على مسارات العملاء، مع أن كليهما يستخدم السر نفسه.
- يُجيب تسجيل الدخول الفاشل بـ
401مع رسالة واحدة، سواء لم يكن للبريد حساب أو كانت كلمة المرور خاطئة. - تقبل مسارات تسجيل الدخول والتسجيل وكلمة المرور وتتبّع الطلب 10 محاولات في الدقيقة من العنوان الواحد، تُحتسب لكل مسار. وبعد ذلك تُجيب بـ
429مع ترويسةRetry-After. يُحفظ العدّ في ذاكرة واجهة API، فيبدأ من جديد عند إعادة التشغيل ويُحتسب منفصلًا في كل نسخة عاملة. وخلف خادم وكيل، راجعTRUST_PROXY(حل المشكلات).
سجّل الدخول بحساب المدير العام التجريبي
الطرفيةcurl -X POST http://localhost:8000/api/auth/login \ -H "Content-Type: application/json" \ -d '{"email":"admin@example.com","password":"Admin@123"}'الاستجابة{ "success": true, "data": { "access_token": "eyJhbGciOiJIUzI1NiIs...", "token_type": "Bearer", "expires_in": "7d", "admin": { "id": 1, "email": "admin@example.com", "roles": [{ "id": 1, "name": "Super Admin", "guard_name": "web" }], "permissions": ["admins.view", "admins.create", "..."] } }, "message": "..." }استدعِ مسارًا محميًا بالرمز
الطرفيةcurl "http://localhost:8000/api/orders?page=1&page_count=5" \ -H "Authorization: Bearer <access_token>"النتيجة المتوقعة: أحدث خمسة طلبات، بشكل القائمة.
سجّل الدخول بحساب عميل تجريبي
يحتوي المتجر التجريبي أيضًا على عملاء، مثل
john.doe@example.comبكلمة المرورpassword123:الطرفيةcurl -X POST http://localhost:8000/api/auth/customer/login \ -H "Content-Type: application/json" \ -d '{"email":"john.doe@example.com","password":"password123"}'ثم مرّر
data.tokenبالطريقة نفسها، مثلًا إلىGET /api/orders/my.
غيّر كلمات المرور التجريبية
تستخدم حسابات المتجر التجريبي كلمات مرور منشورة: Admin@123 للمدير العام، وadmin123 لبقية الموظفين، وpassword123 للعملاء. غيّرها، أو ابدأ من جداول فارغة، قبل إطلاق الموقع.
الصلاحيات
يتحقق كل مسار إداري من الرمز أولًا، ثم من الصلاحية التي يحددها. يملك المسؤول كل صلاحيات كل دور لديه؛ وحيث يحدد المسار عدة صلاحيات، تكفي أي واحدة منها. في جداول الإدارة أدناه، يعني اسم الصلاحية في عمود من يحق له استدعاؤه مسؤولًا تمنحه أدواره تلك الصلاحية.
| الوحدة | الصلاحيات |
|---|---|
| الموظفون | admins.view, admins.create, admins.edit, admins.delete, admins.assign_roles |
| الأدوار | roles.view, roles.create, roles.edit, roles.delete, roles.assign_permissions |
| الإعدادات | settings.view, settings.edit |
| العملاء | users.view, users.create, users.update, users.delete, users.restore, users.verify |
| الفئات | categories.view, categories.create, categories.edit, categories.delete, categories.restore |
| المنتجات | products.view, products.create, products.edit, products.delete, products.restore |
| الطلبات | orders.view, orders.edit |
| المساعد الذكي | ai_chat.use, ai_chat.view_models |
تستخدم أقسام الصفحة الرئيسية واستوديو الذكاء الاصطناعي صلاحيات المنتجات. ليس للتقييمات صلاحية خاصة بها: تقرؤها لوحة الإدارة عبر المنتجات.
| الدور التجريبي | يمنح |
|---|---|
| المدير العام (Super Admin) | كل الصلاحيات |
| المشاهد (Viewer) | كل صلاحية تنتهي بـ .view |
| Admin و Manager و Editor | لا شيء حتى تمنحها |
تشغيل البيانات التجريبية مرة أخرى ينشئ ما هو ناقص ويُبقي صلاحيات الأدوار الموجودة كما ضبطتها.
الكتالوج العام
لا حاجة إلى رمز. لا يرى المتسوّقون إلا المنتجات النشطة: من دون رمز مسؤول، المنتج غير النشط أو المحذوف غير موجود.
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/products | أي شخص | قائمة المنتجات، مع الفلاتر والترتيب المذكورة أعلاه. من دون رمز مسؤول تعرض المنتجات النشطة فقط، أيًّا كان ما يطلبه is_active؛ ومع رمز مسؤول، يعمل كل فلتر كما أُرسل، بما في ذلك المنتجات غير النشطة. |
GET | /api/products/featured | أي شخص | المنتجات المميزة النشطة (limit، و8 افتراضيًا). |
GET | /api/products/slug/:slug | أي شخص | منتج واحد حسب الـ slug الخاص به، مع الصور والمتغيرات والفئة. المنتج غير النشط أو المحذوف يُجيب بـ 404 من دون رمز مسؤول. |
GET | /api/products/:id | أي شخص | منتج واحد حسب المعرّف، مع قاعدة 404 نفسها. |
GET | /api/products/:id/related | أي شخص | المنتجات النشطة المرتبطة به (limit، و4 افتراضيًا)؛ و404 للمنتج غير النشط من دون رمز مسؤول. |
GET | /api/categories | أي شخص | قائمة الفئات (search وis_active وparent_id وorder). |
GET | /api/categories/roots | أي شخص | الفئات التي ليس لها فئة أم. |
GET | /api/categories/slug/:slug | أي شخص | فئة واحدة حسب الـ slug الخاص بها. |
GET | /api/categories/:id | أي شخص | فئة واحدة حسب المعرّف. |
GET | /api/homepage-sections/:key/products | أي شخص | المنتجات المختارة لقسم واحد من الصفحة الرئيسية، مثل best-sellers. |
GET | /api/reviews/product/:productId | أي شخص | تقييمات منتج، 10 في كل صفحة. |
GET | /api/reviews/product/:productId/summary | أي شخص | متوسط تقييمه والعدد لكل نجمة. |
GET | /api/helpers/countries | أي شخص | الدول لقائمة اختيار، بلغة الطلب. |
تسجيل العملاء وحساباتهم
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
POST | /api/auth/customer/register | أي شخص | ينشئ عميلًا (first_name وlast_name وemail وpassword، وphone اختياريًا) ويسجّل دخوله. محدود المعدّل. |
POST | /api/auth/customer/login | أي شخص | يسجّل دخول العميل. محدود المعدّل. |
GET | /api/auth/customer/me | العميل | العميل المسجَّل دخوله. |
PATCH | /api/auth/customer/me | العميل | يحدّث بياناته. |
PATCH | /api/auth/customer/me/password | العميل | يغيّر كلمة مروره. |
POST | /api/auth/customer/forgot-password | أي شخص | يُصدر رمز إعادة تعيين يُستخدم مرة واحدة، صالحًا لمدة ساعة. خارج بيئة الإنتاج يُكتب في سجل واجهة API؛ ولا يُرسل أي بريد إلكتروني. محدود المعدّل. |
POST | /api/auth/customer/reset-password | أي شخص | يضبط كلمة مرور جديدة بذلك الرمز. محدود المعدّل. |
GET | /api/addresses | العميل | عناوينه المحفوظة. |
GET | /api/addresses/:id | العميل | أحدها. |
POST | /api/addresses | العميل | يحفظ عنوانًا. |
PATCH | /api/addresses/:id | العميل | يعدّله. |
PATCH | /api/addresses/:id/default | العميل | يجعله الافتراضي. |
DELETE | /api/addresses/:id | العميل | يحذفه. |
POST | /api/reviews | العميل | يقيّم منتجًا، تقييمًا واحدًا لكل عميل لكل منتج: الإرسال مرة أخرى يحدّثه. |
PATCH | /api/reviews/:id | العميل | يعدّل تقييمه. |
DELETE | /api/reviews/:id | العميل | يحذف تقييمه. |
تتوفر أيضًا سلة على الخادم للعملاء المسجّلين. يحفظ المتجر المرفق سلته في المتصفح ولا يستدعيها.
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/cart | العميل | سلة العميل. |
POST | /api/cart/items | العميل | يضيف product_id، وvariant_id اختياريًا، وquantity. |
PATCH | /api/cart/items/:id | العميل | يغيّر كمية سطر. |
DELETE | /api/cart/items/:id | العميل | يزيل سطرًا. |
DELETE | /api/cart | العميل | يُفرغ السلة. |
الطلبات وإتمام الشراء والتتبّع
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
POST | /api/orders | أي شخص؛ ويُقرأ رمز العميل عند إرساله | ينشئ طلبًا. يرسل الضيف items وemail والعنوان؛ ويمكن للعميل المسجَّل ألا يرسل items ليطلب محتوى سلته على الخادم. تكون payment_method إما stripe أو cod (تُقبل paypal لكن لا شيء يعالجها). تأتي الأسعار من الكتالوج، لا من الطلب. |
GET | /api/orders/track | أي شخص | تقدّم الطلب حسب order_number وemail معًا. محدود المعدّل. |
GET | /api/orders/my | العميل | طلبات العميل، 10 في كل صفحة. |
GET | /api/orders/number/:orderNumber | العميل | أحد طلباته حسب رقمه. |
POST | /api/payments/webhook | Stripe، موقّعًا بـ STRIPE_WEBHOOK_SECRET | يعلّم طلب البطاقة كمدفوع (payment_intent.succeeded) أو كفاشل (payment_intent.payment_failed). |
مع payment_method: "stripe" وإعداد Stripe، تحمل الإجابة client_secret يؤكده المتجر مع Stripe. الشحن مجاني ابتداءً من مجموع فرعي قدره 75، و9.99 لما دون ذلك؛ والضريبة 0. يُحفظ promo_code على الطلب لكنه لا يُطبَّق.
تسجيل دخول الموظفين وحساباتهم
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
POST | /api/auth/login | أي شخص | يسجّل دخول موظف. محدود المعدّل. |
GET | /api/auth/me | أي مسؤول مسجّل دخوله | المسؤول المسجَّل دخوله، مع الأدوار والصلاحيات. |
GET | /api/admins | admins.view | قائمة الموظفين. |
GET | /api/admins/statistics | admins.view | أعداد الموظفين. |
GET | /api/admins/:id | admins.view | مسؤول واحد. |
POST | /api/admins | admins.create | ينشئ مسؤولًا. |
PATCH | /api/admins/:id | admins.edit | يعدّل مسؤولًا. |
PATCH | /api/admins/:id/roles | admins.assign_roles | يضبط أدوار مسؤول. |
DELETE | /api/admins/:id | admins.delete | يحذف مسؤولًا. |
PATCH | /api/admins/profile | admins.edit | يعدّل الملف الشخصي للمسؤول المسجَّل دخوله. |
PATCH | /api/admins/profile/password | أي مسؤول مسجّل دخوله | يغيّر كلمة مرور المسؤول المسجَّل دخوله. |
الأدوار
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/roles | roles.view | الأدوار. من دون معاملات الصفحات، تُعرض كلها. |
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 | يحذف دورًا. |
العملاء
يُشار إلى العملاء باسم المستخدم الخاص بهم. تُصفّى القائمة حسب search وemail وphone وcountry_id وusername وfirst_name وlast_name وverified وfrom_date وto_date.
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/users | users.view | قائمة العملاء. |
GET | /api/users/statistic | users.view | أعداد العملاء. |
GET | /api/users/deleted | users.view | العملاء المحذوفون. |
GET | /api/users/deleted/:username | users.view | عميل محذوف واحد. |
GET | /api/users/:username | users.view | عميل واحد. |
POST | /api/users | users.create | ينشئ عميلًا. |
PATCH | /api/users/:username | users.update | يعدّل عميلًا. |
PATCH | /api/users/:username/change-password | users.update | يضبط كلمة مرور عميل. |
POST | /api/users/:username/resend-verification-email | users.update | يُجيب بالنجاح ولا يرسل شيئًا: لا يأتي القالب مع وسيلة لإرسال البريد. اربط خدمة الإرسال الخاصة بك هنا. |
POST | /api/users/:username/make-verified | users.verify | يعلّم البريد الإلكتروني كمؤكَّد. |
POST | /api/users/:username/make-unverified | users.verify | يعلّمه كغير مؤكَّد. |
DELETE | /api/users/:username | users.delete | ينقل عميلًا إلى قائمة المحذوفين. |
POST | /api/users/deleted/:username/restore | users.restore | يستعيد عميلًا محذوفًا. |
المنتجات والفئات
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
POST | /api/products | products.create | ينشئ منتجًا مع صوره ومتغيراته. |
PATCH | /api/products/:id | products.edit | يعدّل منتجًا. |
DELETE | /api/products/:id | products.delete | ينقله إلى قائمة المحذوفات. |
GET | /api/products/deleted | products.delete | المنتجات المحذوفة. |
POST | /api/products/deleted/:id/restore | products.restore | يستعيد واحدًا منها. |
GET | /api/products/statistic | products.view | أعداد المنتجات. |
GET | /api/products/drafts | أي مسؤول مسجّل دخوله | مسودة المسؤول غير المحفوظة لنموذج المنتج (product_id لمنتج موجود). |
PUT | /api/products/drafts | أي مسؤول مسجّل دخوله | يحفظ تلك المسودة. |
DELETE | /api/products/drafts | أي مسؤول مسجّل دخوله | يتجاهلها. |
POST | /api/categories | categories.create | ينشئ فئة. |
PATCH | /api/categories/:id | categories.edit | يعدّل فئة، بما في ذلك ترتيب عرضها. |
DELETE | /api/categories/:id | categories.delete | ينقله إلى قائمة المحذوفات. |
GET | /api/categories/deleted | categories.delete | الفئات المحذوفة. |
POST | /api/categories/deleted/:id/restore | categories.restore | يستعيد واحدًا منها. |
GET | /api/categories/statistic | categories.view | أعداد الفئات. |
GET | /api/homepage-sections/:key | products.view | إعدادات قسم من الصفحة الرئيسية ومنتجاته. |
PUT | /api/homepage-sections/:key | products.edit | يضبطها. |
مفاتيح الأقسام هي style-pillars وeditorial-split وnew-drops وbest-sellers وspotlight وlux-difference وeditorial-slider.
الطلبات
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/orders | orders.view | قائمة الطلبات: search، وstatus (حالة واحدة أو عدة حالات، مفصولة بفواصل)، وpayment_status، وfrom_date، وto_date، وorder. |
GET | /api/orders/statistic | orders.view | الأعداد لكل حالة والإيرادات. |
GET | /api/orders/:id | orders.view | طلب واحد مع منتجاته. |
PATCH | /api/orders/:id/status | orders.edit | يضبط الحالة (pending أو confirmed أو processing أو shipped أو delivered أو cancelled أو refunded) ورقم التتبّع. |
تقبل واجهة API أي تغيير في الحالة؛ أما لوحة الإدارة فلا تعرض إلا الخطوة التالية أو الإلغاء.
الإعدادات
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/settings | settings.view | إعدادات التطبيق، 10 في كل صفحة. |
GET | /api/settings/:key | settings.view | إعداد واحد. |
PATCH | /api/settings/:key | settings.edit | يغيّر قيمته. |
DELETE | /api/settings/:key | settings.edit | يحذفه. |
لا يوجد مسار لإنشاء إعداد: البيانات التجريبية هي التي تنشئها. لا شيء في الكود المرفق يقرأ قيمها.
رفع الوسائط
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
POST | /api/helpers/upload | أي مسؤول مسجّل دخوله | يرفع ملفًا واحدًا إلى المخزن. |
- نموذج متعدد الأجزاء (multipart): الملف في
file، والمجلد فيpath(uploadsافتراضيًا)، واختياريًا إعداد مسبق للحجم فيfor. - حتى 150 ميغابايت. تُحفظ مقاطع الفيديو (MP4 و WebM و MOV و M4V) كما هي وتُجيب بـ
{ "original": url }. - يُعاد ترميز الصور إلى JPEG، بعرض 1920 بكسل كحد أقصى، إضافة إلى حجم الإعداد المسبق، وتُجيب بكل عنوان URL، مثل
{ "original": url, "250x250": url }. - من دون متغيرات
R2_*الخمسة يُجيب بـ503: "File uploads are not set up yet."
الإشعارات
| الطريقة | المسار | من يحق له استدعاؤه | وظيفته |
|---|---|---|---|
GET | /api/notifications | أي مسؤول مسجّل دخوله | أحدث 30 إشعارًا للمسؤول، تُحفظ لمدة 30 يومًا. |
PATCH | /api/notifications/read-all | أي مسؤول مسجّل دخوله | يعلّمها كلها كمقروءة. |
PATCH | /api/notifications/:id/read | أي مسؤول مسجّل دخوله | يعلّم واحدًا كمقروء. |
DELETE | /api/notifications/:id | أي مسؤول مسجّل دخوله | يحذف واحدًا. |
- تستخدم الإشعارات المباشرة Socket.IO على مساحة الأسماء
/notifications، على عنوان واجهة API من دون/api. أرسل رمز الموظف فيauth.tokenأثناء المصافحة؛ ورموز العملاء يُقطع اتصالها. - يصل كل إشعار جديد كـ
notification:created. الأنواع هيorder_created، لكل مسؤول يستطيع عرض الطلبات، وstudio_generation_completedوstudio_generation_failed، للمسؤول الذي بدأ عملية الإنشاء. - ترسل مساحة أسماء ثانية،
/auth، الحدثpermissions-updatedعندما تتغير أدوار المسؤول أو صلاحياته. - لا يقبل الاتصال إلا من
FRONTEND_URL.
المساعد الذكي
مُضمَّن مع مشترياتك. سجّل الدخول لقراءته، أو افتحه في ملف التنزيل.
مسارات المحادثة والنماذج وسجل المحادثات الخاصة بالمساعد.
استوديو الذكاء الاصطناعي
مُضمَّن مع مشترياتك. سجّل الدخول لقراءته، أو افتحه في ملف التنزيل.
مسارات الإنشاء والوسائط في استوديو المنتجات الذكي.
غرفة القياس
مُضمَّن مع مشترياتك. سجّل الدخول لقراءته، أو افتحه في ملف التنزيل.
المسارات العامة لغرفة القياس في المتجر وحدودها.
مسارات وضع العرض التجريبي
مُضمَّن مع مشترياتك. سجّل الدخول لقراءته، أو افتحه في ملف التنزيل.
المسار الذي يستخدمه العرض التجريبي العام لإعطاء كل زائر حسابًا.