الصلاحيات
الصلاحية إذن على نوع واحد من بيانات المتجر. تسجّل الصلاحيات التي يحتاجها تطبيقك في منصة المطورين، ويمكن لطلب التفويض أن يطلبها كلها أو بعضها. يحمل رمز الوصول الصلاحيات التي وافق عليها التاجر بالضبط.
الصلاحيات التي يمكن للتطبيق طلبها
الأوصاف في هذا الجدول هي ما يقرؤه التاجر في شاشة الموافقة.
| الصلاحية | الوصف |
|---|---|
analytics:read | الاطلاع على إحصائيات متجرك |
customers:read | الاطلاع على زبائنك وبياناتهم (الاسم، الهاتف، العنوان) |
delivery:send | إرسال طلباتك إلى شركة التوصيل |
landing_pages:read | الاطلاع على صفحات الهبوط |
landing_pages:write | الاطلاع على صفحات الهبوط وإنشاؤها وتعديلها ونشرها |
orders:read | عرض الطلبات (قراءة فقط، لا يمكنه إنشاء أو تعديل الطلبات) |
orders:write | إنشاء الطلبات وتعديلها |
pixels:read | الاطلاع على بيكسلات التتبع الإعلاني |
pixels:write | الاطلاع على بيكسلات التتبع الإعلاني وإضافتها وتعديلها |
products:read | الاطلاع على منتجاتك |
products:write | الاطلاع على منتجاتك وإنشاؤها وتعديلها وحذفها |
promos:read | الاطلاع على أكواد التخفيض |
promos:write | الاطلاع على أكواد التخفيض وإنشاؤها وتعديلها (هذا يغيّر الأسعار التي يدفعها زبائنك) |
shipping:read | الاطلاع على أسعار التوصيل وإعداداته |
shipping:write | الاطلاع على أسعار التوصيل وتعديلها وربط شركات التوصيل أو فصلها |
store:read | الاطلاع على معلومات متجرك وإعداداته |
store:write | الاطلاع على إعدادات متجرك وتصميمه وقالبه وتعديلها |
whatsapp:read | الاطلاع على قوالب رسائل واتساب ورصيدك وسجل الرسائل المرسلة |
whatsapp:send | إرسال رسائل واتساب لزبائنك بخصوص طلباتهم (تُخصم كل رسالة من رصيد واتساب) |
قواعد صلاحيات التطبيقات
- لا يمكن تسجيل صلاحية على تطبيق أو منحها له إلا إذا كانت في الجدول أعلاه. أي صلاحية أخرى في طلب التفويض تفشل بـ
invalid_scope. - لا يمكن للتطبيقات طلب
ai:generate. هذه الصلاحية تطلق عمليات توليد بالذكاء الاصطناعي تستهلك نقاط AI من رصيد التاجر. - لا يمكن للتطبيقات طلب
usage:readولاwebhooks:readولاwebhooks:write. يستقبل تطبيقك إشعاراتwebhookعبر عنوانwebhookالمسجّل في تطبيقك، لا عبر/v1/webhooks. - غياب المعامل
scopeأو كونه فارغا يمنح كل الصلاحيات المسجّلة على التطبيق. - اطلب أقل عدد ممكن من الصلاحيات. يرى التاجر في شاشة الموافقة سطرًا واحدًا لكل مورد قبل أن يوافق.
نقاط الوصول التي تفتحها كل صلاحية
هذه القائمة كما يصرّح بها وصف OpenAPI. بعض عمليات الكتابة تحتاج صلاحية القراءة أيضا: POST /v1/orders و PATCH /v1/orders/{id} و POST /v1/orders/{id}/cancel تحتاج orders:read و orders:write، و POST /v1/products و PATCH /v1/products/{id} تحتاج products:read و products:write، و POST /v1/landing-pages و PATCH /v1/landing-pages/{id} و POST /v1/landing-pages/{id}/publish تحتاج landing_pages:read و landing_pages:write. تُرجع هذه العمليات السجلّ بعد تعديله، وقراءته تتطلب صلاحية القراءة. من دون هذه الصلاحية تُنفَّذ الكتابة، ثم يُجاب الطلب بـ 403 مع رسالة مثل Missing scope: orders:read، وإعادة المحاولة بقيمة Idempotency-Key نفسها تُرجع رد 403 المخزّن. سجّل الصلاحيتين واطلبهما معًا.
| الصلاحية | نقاط الوصول |
|---|---|
analytics:read | GET /v1/analytics |
customers:read | GET /v1/customers, GET /v1/customers/{id}, GET /v1/customers/{id}/orders |
delivery:send | POST /v1/orders/{id}/send-to-delivery |
landing_pages:read | GET /v1/landing-page-section-types, GET /v1/landing-pages, GET /v1/landing-pages/{id}, GET /v1/landing-pages/{id}/check, GET /v1/landing-pages/{id}/sections, GET /v1/landing-pages/generate/{id} |
landing_pages:write | POST /v1/landing-pages, PATCH /v1/landing-pages/{id}, DELETE /v1/landing-pages/{id}, POST /v1/landing-pages/{id}/publish, POST /v1/landing-pages/{id}/sections, POST /v1/landing-pages/{id}/sections/batch, POST /v1/landing-pages/{id}/sections/reorder, PATCH /v1/landing-pages/{id}/sections/{section_id}, DELETE /v1/landing-pages/{id}/sections/{section_id} |
orders:read | GET /v1/orders, GET /v1/orders/{id} |
orders:write | POST /v1/orders, PATCH /v1/orders/{id}, POST /v1/orders/{id}/cancel |
pixels:read | GET /v1/pixels |
pixels:write | POST /v1/pixels, PATCH /v1/pixels/{id}, DELETE /v1/pixels/{id} |
products:read | GET /v1/categories, GET /v1/categories/{id}, GET /v1/products, GET /v1/products/{id}, GET /v1/products/{id}/addons, GET /v1/products/{id}/offers, GET /v1/products/{id}/quantity-rules, GET /v1/products/{id}/stock |
products:write | POST /v1/categories, POST /v1/categories/reorder, PATCH /v1/categories/{id}, DELETE /v1/categories/{id}, POST /v1/products, PATCH /v1/products/{id}, DELETE /v1/products/{id}, POST /v1/products/{id}/addons, POST /v1/products/{id}/images, PATCH /v1/products/{id}/images/{image_id}, DELETE /v1/products/{id}/images/{image_id}, POST /v1/products/{id}/offers, POST /v1/products/{id}/quantity-rules, POST /v1/products/{id}/stock, PUT /v1/products/{id}/variants |
promos:read | GET /v1/promo-codes |
promos:write | POST /v1/promo-codes, PATCH /v1/promo-codes/{id}, DELETE /v1/promo-codes/{id} |
shipping:read | GET /v1/shipping/coverage, GET /v1/shipping/providers, GET /v1/shipping/rates, GET /v1/shipping/settings, GET /v1/wilayas, GET /v1/wilayas/{id}/communes |
shipping:write | POST /v1/shipping/providers, POST /v1/shipping/providers/default, POST /v1/shipping/providers/test, DELETE /v1/shipping/providers/{provider}, POST /v1/shipping/rates, POST /v1/shipping/rates/sync, PATCH /v1/shipping/settings |
store:read | GET /v1/store, GET /v1/store/design, GET /v1/store/design/fields, GET /v1/store/home-sections, GET /v1/store/home-layout, GET /v1/themes |
store:write | PATCH /v1/store, PATCH /v1/store/design, PATCH /v1/store/home-sections, PUT /v1/store/home-layout, POST /v1/store/home-layout/sections, PATCH /v1/store/home-layout/sections/{id}, DELETE /v1/store/home-layout/sections/{id}, POST /v1/store/home-layout/reorder, POST /v1/store/theme, POST /v1/store/fast-checkout-theme, POST /v1/store/variant-style |
whatsapp:read | GET /v1/whatsapp/templates, GET /v1/whatsapp/balance, GET /v1/whatsapp/messages |
whatsapp:send | POST /v1/orders/{id}/whatsapp |
الطلب GET /v1/whoami لا يحتاج أي صلاحية، والطلب GET /v1/ping لا يحتاج أي رمز. الاستدعاء الذي تنقصه الصلاحية اللازمة يجيب بـ 403 مع رمز الخطأ forbidden ورسالة تذكر الصلاحية، مثل Missing scope: orders:read.
نقاط وصول مغلقة أمام رموز التطبيقات
تجيب هذه النقاط بـ 403 مع الرسالة Apps cannot use this endpoint مهما كانت صلاحيات الرمز: /v1/keys و /v1/webhooks و /v1/changes و POST /v1/changes/{id}/undo. تبقى إدارة المفاتيح واشتراكات webhook وسجل التراجع بيد التاجر. أما نقطتا اتصال المساعدين GET /v1/connection و POST /v1/connection/active-store فتجيبان بـ 403 من دون store:read أو store:write، وبـ 404 في غير ذلك، لأن رمز التطبيق لم يُنشأ عبر اتصال مساعد.
الصلاحيات وإشعارات webhook
كل حدث طلبية (order.created، order.confirmed، order.processing، order.shipped، order.delivered، order.cancelled، order.returned) يحمل اسم المشتري وهاتفه وعنوانه. لا يستقبل تثبيتك أحداث الطلبيات إلا إذا منح التاجر orders:read. أما الحدث app.uninstalled فيُرسل مهما كانت الصلاحيات. راجع إشعارات Webhook.
ما يراه التاجر
تجمع شاشة الموافقة الصلاحيات حسب المورد وتعرض سطرا واحدا لكل مورد: سطر الكتابة إذا طلب التطبيق الكتابة، وسطر القراءة في غير ذلك. يظهر السطر بلغة التاجر. تغيير الصلاحيات المسجّلة على التطبيق لا يغيّر الرموز الصادرة من قبل؛ يحصل المتجر على الصلاحيات الجديدة عندما يعيد التاجر تثبيت التطبيق.