API - نظرة عامة

API - الطلبات

اجلب طلبات العملاء، وحدّث الحالات والكميات، واحذف الطلبات.

نظرة عامة على نقاط النهاية

الطريقةنقطة النهايةالوصفالوصول
GET/public-api/v1/customer-ordersإعادة قائمة طلبات العملاء مع تقسيم الصفحات وإمكانية التصفية.orders:read
GET/public-api/v1/customer-orders/:idإعادة طلب عميل واحد مع عناصر المنتجات التي جرت تهيئتها.orders:read
POST/public-api/v1/customer-orders/batchإعادة ما يصل إلى 100 طلب بحسب المعرّف.orders:read
PATCH/public-api/v1/customer-orders/:id/statusتحديث حالة الطلب.orders:write
PATCH/public-api/v1/customer-orders/:orderId/quantityتحديث كميات عناصر الطلب المحددة.orders:write
PATCH/public-api/v1/customer-orders/:orderId/quantity/allتعيين كمية واحدة لكل عنصر في الطلب.orders:write
DELETE/public-api/v1/customer-orders/:idحذف طلب عميل تابع لمالك واجهة المتجر.orders:write

طلبات العملاء

تتيح نقاط نهاية طلبات العملاء للمتجر الخارجي قراءة العناصر التي جرت تهيئتها وتحديث الكميات ونقل الطلب بين حالات التنفيذ وحذف الطلبات المتروكة.

المعلمةمطلوبالتفاصيل
nameلاالبحث باسم التصميم ومعرّف الطلب الرقمي.
category_idلاالتصفية بحسب معرّف فئة المنتج.
order_statusلاإحدى حالات الطلب المسموحة.
offsetلاالقيمة الافتراضية 0. يجب أن تكون >= 0.
limitلاالقيمة الافتراضية 9 لهذه الوحدة، والحد الأقصى 50.
order_byلاid أو created_at أو design_name.
directionلاASC أو DESC.

مثال طلب (fetch)

const params = new URLSearchParams({
  limit: '20',
  offset: '0',
  order_status: 'shopping_cart',
  order_by: 'created_at',
  direction: 'DESC'
});

const orders = await alterFetch(`/customer-orders?${params.toString()}`);

const order = await alterFetch('/customer-orders/123');

const batch = await alterFetch('/customer-orders/batch', {
  method: 'POST',
  body: JSON.stringify({
    customerOrderIds: [123, 124, 125]
  })
});

القيم المسموحة

الحالةالوصف
shopping_cartمرحلة السلة؛ ما زال بإمكان العميل تعديل التهيئة.
editableيظل الطلب قابلًا للتعديل من العميل.
paidتم دفع الطلب وأصبح جاهزًا للتنفيذ.
processingالطلب قيد التنفيذ.
completedتم تنفيذ الطلب.
cancelledأُلغي الطلب.

مثال طلب (fetch)

await alterFetch('/customer-orders/123/status', {
  method: 'PATCH',
  body: JSON.stringify({
    status: 'processing'
  })
});

await alterFetch('/customer-orders/123/quantity', {
  method: 'PATCH',
  body: JSON.stringify({
    items: [
      { orderDetailId: 987, quantity: 3 }
    ]
  })
});

await alterFetch('/customer-orders/123/quantity/all', {
  method: 'PATCH',
  body: JSON.stringify({
    quantity: 2
  })
});

await alterFetch('/customer-orders/123', {
  method: 'DELETE'
});

مثال رد

{
  "order": {
    "id": 123,
    "customizerId": 381,
    "orderStatus": "shopping_cart",
    "createdAt": "2026-05-28T10:15:00.000Z",
    "customizerOrderURL": "https://alterproduct.com/app/customizer/381/123",
    "productItems": [
      {
        "id": 987,
        "model3d": { "id": 381 },
        "size": {
          "id": 395,
          "name": { "pl": "M", "en": "M" },
          "measureSize": null
        },
        "material": {
          "id": 2,
          "name": { "pl": "Bawełna", "en": "Cotton" }
        },
        "printType": {
          "id": 1,
          "name": { "pl": "DTG", "en": "DTG" }
        },
        "color": {
          "id": 418,
          "name": { "pl": "Domyślny", "en": "Default" },
          "hex": "#ffffff"
        },
        "variant": {
          "id": 531,
          "metadata": null,
          "stockQuantity": 25
        },
        "unitPrice": { "value": 12.5, "currency": "EUR" },
        "totalPrice": { "value": 37.5, "currency": "EUR" },
        "quantity": 3
      }
    ],
    "customizerName": "Men's T-Shirt",
    "productGroup": {
      "id": 4,
      "name": { "pl": "Koszulka", "en": "T-Shirt" }
    },
    "totalPrice": { "value": 37.5, "currency": "EUR" }
  }
}