يقوم مظهر المتجر على ثلاثة اختيارات، وهي التبويبات الثلاثة نفسها في صفحة القوالب بلوحة التحكم (/dashboard/themes): قالب واجهة المتجر، وقالب نموذج الطلب السريع في صفحات المنتجات، ونمط اختيار المتغيرات. يعرض GET /v1/themes خيارات الاختيارات الثلاثة كلها مع حكم خاص بالمتجر، ونداء POST واحد يبدّل كل اختيار منها. أما الألوان والنصوص وباقي حقول التصميم فتُعدَّل عبر PATCH /v1/store/design (انظر المتجر). لمعرفة شكل كل قالب وما يتغيّر للزبائن، راجع دليل التاجر القوالب.
قبل أن تبدأ
يحتاج
GET /v1/themesإلىstore:read. وتحتاج نداءات التبديل الثلاثة إلىstore:writeوإلىIdempotency-Key. مفاتيح التاجر تحمل الصلاحيتين.لكل قالب ونمط خطة دنيا. ترتيب الخطط هو
freeثمproثمunlimitedثمenterprise، وكل خطة تفتح ما تفتحه الخطط التي تحتها. التبديل إلى قالب أو نمط أعلى من خطة المتجر يُرجع403 plan_required. والخطة المدفوعة التي انتهت صلاحيتها تُحسبfree.مفتاح التاجر تابع لمتجر على خطة Enterprise سارية، لذا كل القوالب والأنماط مفتوحة له. أما رموز التطبيقات المثبّتة فتعمل مع كل الخطط وتخضع لهذه الحدود.
يُحفَظ التبديل بمجرد أن يُرجع النداء استجابته. لا توجد خطوة تأكيد.
تُعاد الاستجابة الأولى لكل
Idempotency-Keyطوال 24 ساعة، بما فيها أخطاء4xx. بعد تغيّر خطة المتجر، أرسل التبديل من جديد بمفتاح جديد. انظر Idempotency.كل تبديل يُسجَّل ويمكن التراجع عنه عبر
POST /v1/changes/{change_id}/undo: تحمل الاستجابةchange_idالخاص به، وتكون قيمتهnullفي الحالة النادرة التي يُحفظ فيها التبديل دون سجلّ تراجع، ويعرضGET /v1/changes?entity=store.themeالتبديلات السابقة. لا يستطيع رمز التطبيق المثبّت قراءة التغييرات ولا التراجع عنها: كلاهما يُرجع403 forbidden(Apps cannot use this endpoint).
GET /v1/themes
يعرض قوالب واجهة المتجر وقوالب نموذج الطلب السريع وأنماط اختيار المتغيرات، ومع كل عنصر الخطة التي يحتاجها وهل يستطيع هذا المتجر استعماله، إضافةً إلى مفتاح قالب واجهة المتجر المستعمل. تأتي القائمة كاملة في استجابة واحدة دون تقسيم إلى صفحات. وكل قالب أو نمط لم يعد قابلًا للاختيار يبقى في قائمته مع active: false.
المصادقة: مفتاح منصة بصلاحية store:read. هذا النداء غير مُخزَّن مؤقتًا: كل استجابة تقرأ الحالة الحالية.
الطلب
curl https://api.dzbuild.app/v1/themes \ -H "Authorization: Bearer $DZ_KEY"
الاستجابة 200
تظهر ثلاثة قوالب للواجهة وعنصران من كل قائمة أخرى. تأتي العناوين بلغة المتجر، وهذا المتجر مضبوط على الفرنسية.
{
"data": {
"current": "starter",
"items": [
{
"key": "starter",
"title": "Starter",
"plan_required": "free",
"active": true,
"color_mode": "light",
"digital_only": false,
"can_use": true,
"current": true
},
{
"key": "digital",
"title": "Digital",
"plan_required": "free",
"active": true,
"color_mode": "dark",
"digital_only": true,
"can_use": true,
"current": false
},
{
"key": "ariana",
"title": "Ariana",
"plan_required": "unlimited",
"active": false,
"color_mode": "dark",
"digital_only": false,
"can_use": false,
"current": false
}
],
"fast_checkout": [
{
"key": "classic",
"title": "Classique",
"plan_required": "free",
"active": true,
"can_use": true,
"current": true
},
{
"key": "stepper",
"title": "Stepper",
"plan_required": "enterprise",
"active": true,
"can_use": false,
"current": false
}
],
"variant_styles": [
{
"key": "default",
"title": "Par défaut",
"plan_required": "free",
"active": true,
"can_use": true,
"current": true
},
{
"key": "lux",
"title": "Luxe",
"plan_required": "enterprise",
"active": true,
"can_use": false,
"current": false
}
]
},
"meta": { "request_id": "...", "api_version": "v1" }
}
مرجع الحقول
الحقل | النوع | ملاحظات |
| string | مفتاح القالب الذي يستعمله المتجر. |
| string | القيمة التي ترسلها في |
| string | اسم القالب بلغة المتجر: بالعربية، أو بالفرنسية لمتجر لغته الفرنسية. |
| string | أدنى خطة تستطيع استعمال القالب. |
| bool |
|
| string |
|
| bool |
|
| bool |
|
| bool |
|
| string | القيمة التي ترسلها في |
| string | اسم قالب النموذج بلغة المتجر. |
| string | أدنى خطة تستطيع استعمال قالب النموذج. |
| bool |
|
| bool |
|
| bool |
|
| string | القيمة التي ترسلها في |
| string | اسم النمط بلغة المتجر. |
| string | أدنى خطة تستطيع استعمال النمط. |
| bool |
|
| bool |
|
| bool |
|
الأخطاء
نفس أخطاء GET /v1/store: 401 unauthorized و402 quota_exceeded و403 forbidden و404 not_found و429 rate_limited. انظر الأخطاء.
POST /v1/store/theme
يبدّل قالب واجهة المتجر. لا يتغيّر إلا القالب: تبقى الألوان والنصوص وباقي قيم التصميم كما هي، ويعرض القالب الجديد ما يستعمله منها. التبديل إلى digital هو الاستثناء الموصوف أدناه.
المصادقة: مفتاح منصة بصلاحية store:write. يتطلب Idempotency-Key.
الجسم
الحقل | النوع | إلزامي | ملاحظات |
| string | نعم | قيمة |
التبديل إلى digital
digital هو القالب الذي يحمل digital_only: true. التبديل إليه يحوّل المتجر إلى متجر منتجات رقمية، وتحمل الاستجابة is_digital: true. وتبديل متجر رقمي إلى أي قالب آخر يعيده متجر منتجات مادية. يشرح دليل التاجر القوالب ما يتغيّر للزبائن.
يستبدل التبديل إلى digital أيضًا الألوان التي ما زالت على القيم الفاتحة الأصلية، مثل خلفية #ffffff، بلوحة الألوان الداكنة لقالب Digital. أما الألوان التي اختارها التاجر فتبقى. والتراجع عن التبديل يعيد القالب السابق وتلك الألوان.
الطلب
curl -X POST https://api.dzbuild.app/v1/store/theme \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: store-theme-1" \
-d '{"theme": "bloom"}'
الاستجابة 200
{
"data": {
"theme": "bloom",
"is_digital": false,
"change_id": 813
},
"meta": { "request_id": "...", "api_version": "v1" }
}
عبر api.dzbuild.app، يُرجع طلب GET /v1/store/design المُرسَل مباشرة بعد التبديل القالبَ الجديد. وGET /v1/themes يُخدَم حديثًا كذلك.
الأخطاء
HTTP | الكود | السبب |
400 |
| الجسم ليس JSON صالحًا، أو |
403 |
|
|
403 |
| القالب يحتاج خطة أعلى. تذكر الرسالة تلك الخطة وخطة المتجر. |
404 |
| لا يوجد قالب مفعّل بهذا المفتاح. |
404 |
| حُذف المتجر. |
422 |
|
|
422 |
| استُعمل نفس |
POST /v1/store/fast-checkout-theme
يبدّل شكل نموذج الطلب السريع في صفحات المنتجات. تبقى نصوص النموذج وألوانه وخياراته، وهي من حقول PATCH /v1/store/design، كما هي.
المصادقة: مفتاح منصة بصلاحية store:write. يتطلب Idempotency-Key.
الجسم
الحقل | النوع | إلزامي | ملاحظات |
| string | نعم |
|
قوالب الطلب السريع
يعرض GET /v1/themes هذه القوالب في fast_checkout، مع الخطة التي يحتاجها كل قالب وهل يستطيع المتجر استعماله وأيّها المستعمل، ويُرجع GET /v1/store أيضًا القالب المستعمل في fast_checkout_theme. كل متجر يبدأ على classic. يصف دليل التاجر القوالب كل واحد منها.
الطلب
curl -X POST https://api.dzbuild.app/v1/store/fast-checkout-theme \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: store-fc-theme-1" \
-d '{"theme": "stepper"}'
الاستجابة 200
{
"data": {
"fast_checkout_theme": "stepper",
"change_id": 814
},
"meta": { "request_id": "...", "api_version": "v1" }
}
الأخطاء
HTTP | الكود | السبب |
400 |
| الجسم ليس JSON صالحًا، أو |
403 |
|
|
403 |
| القالب يحتاج خطة أعلى من خطة المتجر. |
404 |
| لا يوجد قالب طلب سريع مفعّل بهذا المفتاح. |
404 |
| حُذف المتجر. |
422 |
|
|
422 |
| استُعمل نفس |
POST /v1/store/variant-style
يبدّل طريقة عرض خيارات المتغيرات، مثل المقاسات والألوان، في صفحات المنتجات.
المصادقة: مفتاح منصة بصلاحية store:write. يتطلب Idempotency-Key.
الجسم
الحقل | النوع | إلزامي | ملاحظات |
| string | نعم |
|
أنماط المتغيرات
يعرض GET /v1/themes الأنماط في variant_styles، مع الخطة التي يحتاجها كل نمط وهل يستطيع المتجر استعماله وأيّها المستعمل، ويُرجع GET /v1/store أيضًا النمط المستعمل في variant_card_style. كل متجر يبدأ على default، وهو أداة الاختيار العادية دون أي نمط مضاف، وهو العنصر الأول في القائمة، ويستطيع أي متجر الرجوع إليه. المفتاح غير المعروف أو غير المفعّل يُرجع 404 style_not_found؛ ولا ترجع الواجهة البرمجية إلى default من تلقاء نفسها.
الطلب
curl -X POST https://api.dzbuild.app/v1/store/variant-style \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: store-variant-style-1" \
-d '{"style": "minimal"}'
الاستجابة 200
{
"data": {
"variant_card_style": "minimal",
"change_id": 815
},
"meta": { "request_id": "...", "api_version": "v1" }
}
الأخطاء
HTTP | الكود | السبب |
400 |
| الجسم ليس JSON صالحًا، أو |
403 |
|
|
403 |
| النمط يحتاج خطة أعلى من خطة المتجر. |
404 |
| لا يوجد نمط مفعّل بهذا المفتاح. |
404 |
| حُذف المتجر. |
422 |
|
|
422 |
| استُعمل نفس |