مرجع النطاقات
كل نطاق، وما يفتحه من نقاط نهاية ومواضيع Webhooks، والجملة التي يراها التاجر.
هذه الصفحة لمن يقرّر ما يطلبه تطبيقه. في نهايتها تعرف كل نطاق، وما يفتحه بالضبط، وكيف يراه التاجر، والقواعد الخاصة بنطاق بيانات العملاء.
القواعد#
- تطلب النطاقات على مستوى إصدار التطبيق في البوابة، ويمنحها التاجر لكل متجر على حدة في شاشة الموافقة. لا تتوسّع النطاقات بصمت أبداً؛ توسيعها يعني إصداراً جديداً وموافقة جديدة.
- النطاقات الفعلية = الممنوحة ∩ صلاحيات العضو المانح الحالية. نقطة نهاية بلا نطاق فعلي تعيد
403برمزforbidden. - الاشتراك في موضوع Webhook يتطلب نطاق القراءة الذي يحكم حمولته، ويتوقف التسليم فوراً إن فُقد النطاق.
- المراجعون يتحقّقون من أن الإدراج يبرّر كل نطاق. اطلب أقل ما يلزم.
الجدول#
| النطاق | ما يفتحه | مواضيع Webhooks | الجملة التي يراها التاجر |
|---|---|---|---|
products:read |
GET /products، GET /products/{id} |
product.created، product.updated، product.deleted |
قراءة المنتجات وخياراتها |
inventory:read |
GET /inventory/movements؛ ويكشف stock_after في استجابة الحركة المكتوبة |
inventory.movement_created |
قراءة مستويات المخزون وحركاته |
inventory:write |
POST /inventory/movements؛ وخيار restock في POST /orders/{id}/refunds |
— | تعديل مستويات المخزون |
orders:read |
GET /orders، GET /orders/{id} (بلا بيانات العملاء) |
order.created، order.status_changed، order.paid، fulfillment.requested، fulfillment.created، fulfillment.updated، refund.created |
قراءة الطلبات وبنودها وحالة التجهيز |
orders:write |
PATCH /orders/{id}/status؛ وPATCH /orders/{id} (الملاحظة والوسوم وخصائص التطبيق) |
— | تحديث حالة الطلب وملاحظته ووسومه |
orders:create |
POST /orders (طلبات بأسعار يحددها التطبيق، بما فيها البنود المخصصة) |
— | إنشاء طلبات بأسعار يحددها التطبيق |
fulfillments:write |
POST /orders/{id}/fulfillments، PATCH /orders/{id}/fulfillments/{fulfillmentId} (بما فيها اقتراح تحصيل COD) |
— | إنشاء عمليات التجهيز وتحديثها مع معلومات التتبع |
refunds:write |
POST /orders/{id}/refunds |
— | إصدار عمليات استرجاع نيابةً عن التاجر |
discounts:read |
GET /discounts |
— | قراءة الخصومات والعروض |
clients:read |
الحقلان customer وshipping_address في GET /orders/{id} |
لا يظهر في أي Webhook | قراءة أسماء العملاء وبيانات التواصل (تتطلب اتفاقية معالجة البيانات) |
clients:write |
إنشاء سجلات العملاء وتحديثها؛ تصل نقاط نهاية العملاء في مراجعة لاحقة، والنطاق في المعجم منذ الآن | لا يظهر في أي Webhook | إنشاء سجلات العملاء وتحديثها: الأسماء وأرقام الهواتف والعناوين (تتطلب اتفاقية معالجة البيانات) |
app.uninstalled لا يتطلب أي نطاق ويصل دائماً. جدول المواضيع والحمولات في مرجع الأحداث.
ملاحظات تبعية#
inventory:writeمطلوب لإرجاع البضاعة إلى المخزون مع الاسترداد (restock)؛ بدونه يُقبل الاسترداد المالي فقط.fulfillments:writeمالي بطبيعته: يمكنه اقتراح تحصيل نقدي يؤكّده التاجر. يُعامل في المراجعة كنطاق حسّاس، مثلrefunds:write.- الحركة المكتوبة عبر
inventory:writeتعيدstock_afterفقط عندما يحمل التثبيتinventory:readأيضاً. orders:createلا يتضمّن قراءة الطلبات: جسم201هو القراءة الوحيدة التي يمنحها. اطلبorders:readكذلك إن كنت ستعرض الطلبات أو تجلبها لاحقاً، وorders:writeإن كنت ستحدّث الملاحظة أو الوسوم بعد الإنشاء. يرى التاجر تحته العبارة «تظهر هذه الطلبات في لوحة التحكم موسومة باسم التطبيق، ويُخصم المخزون كأي طلب آخر.» التفاصيل في الطلبات التي تنشئها التطبيقات.- يُعامل
orders:createفي المراجعة كنطاق حسّاس، مثلrefunds:write: فهو ينشئ طلبات ويخصم المخزون، فعلى الإدراج أن يبيّن السبب.
بيانات العملاء (clients:read وclients:write)#
أسماء العملاء وأرقام هواتفهم وبريدهم وعناوين التوصيل خلف نطاقين مخصّصين: clients:read يقرأها وclients:write ينشئ سجلات العملاء ويحدّثها. يختلفان في أربعة أمور:
- اتفاقية معالجة البيانات أولاً. يجب أن يقبل مالك فريقك النسخة الحالية من الاتفاقية (
2026-08-19) قبل أن يقبل الخادم إصداراً يطلب أيّاً من النطاقين؛ راجع معالجة البيانات. تغيّر النسخة يُسقط النطاقين حتى يُعاد القبول. يشمل قبول اتفاقية معالجة البيانات إنشاء سجلات العملاء وتحديثها نيابة عن التاجر. - قسم منفصل في شاشة الموافقة، غير محدد افتراضياً، للنطاقين معاً.
- لا يظهر أبداً في حمولات Webhooks. اجلب تفاصيل الطلب عبر الواجهة البرمجية؛ كل وصول يُسجَّل في سجل نشاط التاجر.
- حذف عند الإلغاء. تلتزم بحذف بيانات العملاء التي عالجتها عند إلغاء التثبيت.
بدون clients:read تُحذف الحقول ببساطة من استجابات الطلبات؛ لا يظهر null بل لا يظهر الحقل. الاستثناء الوحيد هو POST /orders: يعيد جسم 201 بيانات العميل التي أرسلها تطبيقك، لأنها بحوزتك أصلاً.