إنتقل إلى المحتوى الرئيسي

مرجع الواجهة البرمجية

يستدعي تطبيقك نفس واجهة REST التي يستعملها التجار، على العنوان https://api.dzbuild.app/v1. يصفها مرجعان، وتشرح هذه الصفحة ما يتغيّر عندما تستدعيها برمز تثبيت.

مرجعان​

توثيق الواجهة البرمجية على dzbuild.com يشرح الموارد الرئيسية بمعاملاتها وردودها وأمثلتها، بثلاث لغات:

كُتبت تلك الصفحات لمفاتيح API الخاصة بالتجار. مع رمز التثبيت، تسري قواعد هذه الصفحة حيث تختلف: كل الخطط تستطيع استعمال تطبيقك، والحدود مشروحة في حدود معدّل الطلبات، وبعض نقاط الوصول مغلقة أمام التطبيقات.

وصف OpenAPI للتطبيقات ملف JSON واحد بصيغة OpenAPI 3.1. يسرد 92 عملية يستطيع رمز التثبيت استدعاءها، مع صلاحياتها ومعاملاتها وشكل ردودها. استورده في Postman أو Insomnia، أو ولّد منه الأنواع (types).

تنزيل dzbuild-apps-v1.json

curl -sO https://dzbuild.dev/openapi/dzbuild-apps-v1.json

يصرّح الملف بـ https://api.dzbuild.app خادمًا له. ويسرد مخطط الأمان dzOAuth فيه كل صلاحية مع وصف بالإنجليزية.

إرسال رمز التثبيت​

يمنحك تبادل الرمز رمز وصول واحدًا لكل متجر وافق عليه التاجر (راجع OAuth). يبدأ كل رمز بـ dzpk_live_. أرسله في ترويسة Authorization بمخطط Bearer:

curl https://api.dzbuild.app/v1/whoami \
-H "Authorization: Bearer dzpk_live_xxxxxxxx"

الرمز هو الذي يحدّد المتجر. لا يوجد معامل للمتجر في الطلبات، فللعمل على متجر آخر للتاجر نفسه استعمل رمز ذلك المتجر من قائمة stores في رد التبادل. احفظ الرموز على خادمك. لا تنتهي صلاحيتها من تلقاء نفسها. يتوقف الرمز عن العمل عندما يزيل التاجر تطبيقك، أو عندما يعيد تثبيته على المتجر نفسه، فيُستبدل الرمز.

الحالةالرسالةالسبب
401Missing Authorization headerلا توجد ترويسة Authorization.
401Unsupported Authorization schemeالترويسة لا تبدأ بـ Bearer.
401Invalid or revoked API keyالرمز خاطئ، أو أُلغي بسبب إزالة التطبيق.

يُفحص كل رمز تثبيت أيضًا مقابل حالة تطبيقك وحالة المتجر. الطلب المرفوض يُجاب بـ 403 مع أحد رموز الخطأ هذه:

رمز الخطأالمعنى
app_uninstalledلم يعد التطبيق مثبّتًا في هذا المتجر.
app_suspendedأوقفت DZBuild التطبيق.
app_not_approvedالتطبيق في وضع التجربة ولا يعمل إلا في متاجر مطوّره.
app_plan_requiredخطة المتجر أدنى من الخطة الدنيا التي حدّدتها للتطبيق.

الردود​

يضع الرد الناجح النتيجة في data. ويضع الخطأ code وmessage داخل error. يحمل كلاهما meta.request_id، فاذكره عند التواصل مع DZBuild بشأن طلب ما.

{
"error": { "code": "forbidden", "message": "Missing scope: orders:write" },
"meta": { "request_id": "8f2c1a9d4b7e6035", "api_version": "v1" }
}

تُجيب نقاط الوصول التي تعيد قوائم بهذا الشكل:

{
"data": { "items": [...], "next_cursor": "...", "has_more": true },
"meta": { "request_id": "...", "api_version": "v1" }
}

أرسل next_cursor من جديد في المعامل cursor لتحصل على الصفحة التالية، وتوقّف عندما تكون قيمة has_more هي false. ويقبل GET /v1/orders أيضًا since (الطلبات المنشأة في ذلك الوقت أو بعده) وstatus وcustomer_phone.

whoami​

لا تحتاج GET /v1/whoami أي صلاحية. تخبرك بالمتجر الذي ينتمي إليه الرمز وبما يستطيع فعله. وتضيف لرمز التثبيت كائن app:

{
"data": {
"key_id": "dzpk_live_3c9e1a7f5b2d80",
"store_id": 1234,
"type": "platform",
"rate_limit_tier": "enterprise",
"pilot": true,
"scopes": ["orders:read", "whatsapp:read", "whatsapp:send"],
"app": {
"app_id": 12,
"client_id": "dzapp_4e1b9c07d2a86f35e0b1",
"install_id": 57
}
},
"meta": { "request_id": "8f2c1a9d4b7e6035", "api_version": "v1" }
}
الحقلالمعنى
store_idالمتجر الذي يعمل عليه هذا الرمز.
scopesالصلاحيات التي منحها التاجر.
rate_limit_tierدائمًا enterprise لرموز التثبيت، مهما كانت خطة المتجر.
app.app_idمعرّف تطبيقك.
app.client_idمعرّف عميل OAuth لتطبيقك.
app.install_idالتثبيت في هذا المتجر. تستعمل حمولات webhook مثل app.uninstalled نفس المعرّف.

نقاط الوصول المغلقة أمام التطبيقات​

تجيب نقاط الوصول هذه بـ 403 على رمز التثبيت، مهما كانت صلاحياته:

نقاط الوصولالردالسبب
/v1/keys و/v1/keys/{key_id}Apps cannot use this endpointمفاتيح API ملك للتاجر.
/v1/webhooks وكل ما يتفرّع منهاApps cannot use this endpointيُضبط webhook تطبيقك مرة واحدة في منصة المطورين لكل المتاجر (راجع Webhooks).
/v1/changes وكل ما يتفرّع منها، بما فيها التراجعApps cannot use this endpointسجل التعديلات والتراجع يبقيان للتاجر.

تحتاج POST /v1/landing-pages/generate إلى صلاحية ai:generate، ولا تستطيع التطبيقات طلبها لأنها تستهلك رصيد الذكاء الاصطناعي للتاجر. تُجاب بـ 403 مع Missing scope: ai:generate.

هذه الصفحة لأدوات الذكاء الاصطناعيعرض بصيغة Markdownفتح في ChatGPTفتح في Claude