تخطَّ إلى المحتوى

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

أعراف واجهة المنصّة: العنوان الأساسي، والمصادقة، وIdempotency-Key، والتصفّح، والحدود، والترويسات، والإصدارات، والأخطاء، وسياسة البيانات الشخصية.

آخر تحديث 2 أيلول 2026
العنوان الأساسي
https://dukkan.one/platform-api/v1
الإصدار
1.0.0
في هذه الصفحة

هذه الصفحة تجمع الأعراف التي تنطبق على كل عملية في واجهة المنصّة؛ صفحات الموارد التي تليها مولَّدة من مواصفة OpenAPI نفسها التي يعمل بها الخادم. اقرأها مرة واحدة ثم عد إليها عند أي رقم.

العنوان الأساسي#

Text
https://dukkan.one/platform-api/v1

تعمل الواجهة على المضيف الرئيسي فقط؛ نطاقات واجهات المتاجر الفرعية والنطاقات المخصّصة تعيد 404. كل الاستجابات application/json مع Cache-Control: no-store.

المصادقة#

HTTP
Authorization: Bearer YOUR_ACCESS_TOKEN

رمز وصول تطبيق من التفويض، مربوط بمتجر واحد وتثبيت واحد. كل عملية تتطلب نطاقاً فعلياً محدداً في مرجع النطاقات؛ غيابه يعيد 403. الرمز الغائب أو المنتهي أو الملغى يعيد 401، وكذلك فقدان العضو المانح وصوله إلى المتجر.

Idempotency-Key#

كل عملية تُنشئ أو تغيّر بيانات المتجر (PATCH /orders/{id}/status، POST /orders/{id}/fulfillments، PATCH /orders/{id}/fulfillments/{fulfillmentId}، POST /orders/{id}/refunds، POST /inventory/movements) تتطلب الترويسة:

HTTP
Idempotency-Key: booking-6f1d2c3b-1
  • نص من 1 إلى 200 حرف، فريد لكل تثبيت. غيابه يعيد 400.
  • إعادة الطلب بالمفتاح نفسه والحمولة نفسها تعيد الاستجابة الأصلية بحالتها مع الترويسة Idempotency-Replayed: true.
  • المفتاح نفسه بحمولة مختلفة يعيد 409 برسالة Idempotency key was already used for a different request؛ والطلب الذي ما زال قيد التنفيذ يعيد 409 أيضاً.
  • تُحفظ الاستجابات المسجّلة 24 ساعة.

PUT /webhooks وDELETE /webhooks مستقلّان بطبيعتهما ولا يتطلبان المفتاح.

التصفّح#

تعيد القوائم { "data": [...], "next_cursor": "..." }:

المعامل القاعدة
limit 1–100، الافتراضي 50
cursor مبهم، حتى 512 حرفاً، من next_cursor السابق
next_cursor null عند نهاية القائمة

المؤشر مبنيّ على created_at الثابت، لذلك يبقى مستقراً أثناء التغييرات. للمزامنة التزايدية استخدم المرشّحات created_at_min وupdated_at_min (الطلبات) وupdated_at_min (المنتجات)، واحفظ آخر طابع زمني عالجته.

الحدود#

الحد القيمة
الطلبات لكل تثبيت 180 في الدقيقة
عمليات الكتابة لكل تثبيت ميزانية منفصلة أقل
حجم جسم الطلب 64 KB؛ التجاوز يعيد 413
الرموز غير الصالحة لكل عنوان IP ميزانية منفصلة لصدّ التخمين

التجاوز يعيد 429 برمز rate_limited وترويسة Retry-After بالثواني. انتظرها ثم أعد المحاولة؛ لا تعد المحاولة قبلها.

الترويسات#

الترويسة الاتجاه المعنى
Authorization طلب Bearer + رمز الوصول
Idempotency-Key طلب مفتاح الكتابة الآمنة
X-Request-Id استجابة معرّف فريد لكل طلب؛ أرفقه في أي بلاغ دعم
X-Dukkan-Api-Version استجابة المراجعة المؤرّخة الحالية لـ v1، اليوم 2026-09-09
Idempotency-Replayed استجابة true عندما تكون الاستجابة إعادة لنتيجة مسجّلة
Retry-After استجابة ثوانٍ حتى تجدّد الميزانية مع 429

الإصدارات#

  • v1 في المسار هو العقد: لا يُحذف حقل ولا يتغيّر نوعه ضمنه أبداً.
  • التغييرات الإضافية (حقل جديد، موضوع جديد، قيمة تعداد جديدة) تُطلق كمراجعات مؤرّخة تظهر في X-Dukkan-Api-Version وتُسجَّل في سجل التغييرات.
  • تحمل حمولات Webhooks المراجعة نفسها في ترويستها وapi_version: "v1" في الغلاف.
  • تجاهل الحقول التي لا تعرفها، ولا تعتمد على ترتيب الحقول.

الأخطاء#

كل خطأ يحمل الغلاف نفسه:

error.jsonJSON
{
  "error": {
    "code": "conflict",
    "message": "Order cannot be fulfilled in its current status",
    "request_id": "7d0c2b1a-5e4f-4a3b-8c9d-0e1f2a3b4c5d"
  }
}
الحالة code متى
400 invalid_request جسم أو معامل غير صالح، أو Idempotency-Key غائب، أو cursor تالف
401 unauthorized رمز غائب أو غير صالح أو منتهٍ أو ملغى
403 forbidden النطاق الفعلي المطلوب غائب
404 not_found المورد غير موجود في المتجر المربوط بالرمز
409 conflict انتقال حالة مرفوض، أو تعارض مخزون أو استرداد، أو تعارض Idempotency-Key
413 payload_too_large جسم أكبر من 64 KB
429 rate_limited تجاوز الميزانية؛ راجع Retry-After
5xx internal_error خطأ داخلي؛ الرسالة محجوبة، وrequest_id هو ما تبلّغ عنه

message نص للبشر وقد يتغيّر؛ فرّع على code والحالة فقط. details كائن اختياري بتفاصيل التحقق.

سياسة البيانات الشخصية#

الواجهة خالية من بيانات العملاء افتراضياً. الحقلان customer وshipping_address يظهران في GET /orders/{id} فقط عندما يحمل التثبيت clients:read (المقيّد باتفاقية معالجة البيانات)، ولا يظهران في القوائم ولا في أي Webhook. كل استدعاء يُسجَّل في سجل نشاط التاجر بحالته وrequest_id. راجع مرجع النطاقات ومعالجة البيانات.

المال#

كل مبلغ كائن { amount_minor, currency, decimals }. اقرأ decimals من كل مبلغ؛ لا تستخدم جدول ISO. راجع المال بالوحدات الصغرى.

الموارد