السلة والتوصيل
سلات المسجّلين تُربط بـ العميل (JWT Bearer). الضيوف يستخدمون رمز سلة معتم. التوصيل يُحفظ على السلة.
| المتسوق | هوية السلة |
|---|---|
| ضيف | X-Cart-Token (القيمة من results.cartToken) |
| مسجّل | JWT فقط — لا ترسل X-Cart-Token |
GET /v1/cart يرجع cartToken. احفظه أثناء الضيف. بعد دخول OTP تُدمج سلة الضيف والتوصيل في الحساب.
يمكن للضيوف تعديل السلة. إنشاء الطلب ما يزال يتطلب JWT العميل.
السلة
البادئة: /v1/cart. المصادقة: عامة (JWT اختياري).
| الطريقة | المسار | الجسم | الغرض |
|---|---|---|---|
GET | /v1/cart | — | قراءة السلة والإجماليات |
POST | /v1/cart/items | { items: [{ productId, variantId?, quantity }] } | إضافة 1–50 سطراً |
PATCH | /v1/cart/items/:key | تحديث الكمية | تغيير سطر |
DELETE | /v1/cart/items/:key | — | حذف سطر |
POST | /v1/cart/coupon | { code } | تطبيق كوبون |
DELETE | /v1/cart/coupon | — | إزالة الكوبون |
POST | /v1/cart/loyalty | { points } | استبدال نقاط (عميل) |
DELETE | /v1/cart/loyalty | — | إلغاء النقاط |
POST | /v1/cart/express | { enabled: true | false } | تبديل السريع |
DELETE | /v1/cart | — | إفراغ السلة |
يأتي key السطر من حمولة السلة. استخدمه في PATCH/DELETE.
مثال إضافة
POST /v1/cart/items
Content-Type: application/json
X-Cart-Token: <cartToken>
{
"items": [
{ "productId": "665f0c0c0c0c0c0c0c0c0c0c", "quantity": 2 }
]
}تُحسب الإجماليات والرسوم وأسطر العروض في الخادم. ثق بـ results ولا تعِد التسعير في التطبيق.
OUT_OF_STOCK و CART_EMPTY أخطاء مجال شائعة.
التوصيل
البادئة: /v1/delivery. المصادقة: عامة. أرسل X-Cart-Token للضيف وBearer عند التسجيل.
| الطريقة | المسار | الجسم | الغرض |
|---|---|---|---|
GET | /v1/delivery/areas | — | المناطق القابلة للتوصيل |
GET | /v1/delivery/branches | — | فروع الاستلام |
GET | /v1/delivery/slots | — | الفترات القابلة للحجز (تواريخ الكويت) |
POST | /v1/delivery/select | حمولة اختيار التوصيل | ضبط نمط / منطقة التوصيل |
POST | /v1/delivery/select-branch | فرع الاستلام | ضبط نمط الاستلام |
POST | /v1/delivery/select-address | { addressId } | استخدام عنوان محفوظ (عميل) |
POST | /v1/delivery/resolve-location | { lat, lng } | دبوس → فرع + منطقة |
مثال حل الموقع
POST /v1/delivery/resolve-location
Content-Type: application/json
X-Cart-Token: <cartToken>
{ "lat": 29.3759, "lng": 47.9774 }تشمل النتائج mode: "delivery" وbranchId وzoneId وdeliveryFee وminOrder وetaMinutes (الرسوم بالفلس).
عمليات الاختيار تحدّث السلة (fulfillmentMode، branchId، zoneId، addressId، lat، lng).
اختيار عنوان محفوظ
POST /v1/delivery/select-address
Content-Type: application/json
Authorization: Bearer <accessToken>
{ "addressId": "665f0c0c0c0c0c0c0c0c0c0d" }يتطلب JWT عميل وعنواناً على ذلك الحساب.
الفترات
يرجع GET /v1/delivery/slots أياماً:
date—YYYY-MM-DDفي Asia/Kuwaitslots[]—templateIdوstartوendوremainingوavailableوlabelمترجم
عند إنشاء طلب توصيل مجدول أرسل deliverySlot: { templateId, date }. احذف الفترة للاستلام أو السريع أو التسليم الأقرب.