Base URL: https://wadan.ly/api/clientarea

🔐 المصادقة (Authentication)

كيفية المصادقة

جميع الطلبات تتطلب رمز مصادقة (Bearer Token) في رأس الطلب:

Authorization: Bearer {your_token_here}
POST /login
تسجيل الدخول للحصول على رمز المصادقة (Token)

المعاملات (Parameters):

الاسم النوع مطلوب الوصف
email string مطلوب البريد الإلكتروني أو رقم الهاتف
password string مطلوب كلمة المرور (4 أحرف على الأقل)
مثال على الاستجابة الناجحة (200):
{
  "success": true,
  "data": {
    "token": "1|abc123...",
    "user": {
      "id": 1,
      "type": "store",
      "name": "متجر الاختبار",
      "owner_name": "أحمد محمد",
      "email": "test@example.com",
      "phone": "0912345678",
      "address": "طرابلس",
      "branch_id": 1,
      "breakable": false,
      "measurable": false,
      "measuring_allowed": true
  
    }
  }
}
POST /register
إنشاء حساب جديد للمتجر

المعاملات (Parameters):

الاسم النوع مطلوب الوصف
name string مطلوب اسم المتجر (يجب أن يكون فريداً)
owner_name string مطلوب اسم صاحب المتجر
phone string مطلوب رقم الهاتف (يجب أن يكون فريداً)
phone2 string اختياري رقم هاتف إضافي
address string مطلوب العنوان
branch_id integer مطلوب معرف الفرع
password string مطلوب كلمة المرور (6 أحرف على الأقل)
password_confirmation string مطلوب تأكيد كلمة المرور
GET /branches
الحصول على قائمة الفروع المتاحة

📦 الشحنات (Parcels)

GET /parcels
الحصول على قائمة الشحنات مع إمكانية التصفية

معاملات الاستعلام (Query Parameters):

الاسم النوع مطلوب الوصف
status string اختياري حالة الشحنة (UnderPreparation, ConnectingNow, Delivered, إلخ)
to_city_id integer اختياري معرف المدينة المقصودة
q string اختياري البحث (رقم الهاتف، رقم الشحنة، الوصف، إلخ)
مثال على الاستجابة (201):
{
  "success": true,
  "data": {
    "parcels": {
      "data": [...],
      "current_page": 1,
      "per_page": 7,
      "total": 100
    },
    "parcels_count": 100,
    "parcels_price": 15000
  }
}
POST /parcels/store
إنشاء شحنة جديدة

المعاملات (Parameters):

الاسم النوع مطلوب الوصف
desc string مطلوب وصف الشحنة
customer_name string اختياري اسم العميل
qty numeric مطلوب الكمية
recipient_number string مطلوب رقم هاتف المستلم (9-10 أرقام، يبدأ بـ 091/092/093/094)
recipient_number_2 string اختياري رقم هاتف احتياطي للمستلم
product_price numeric مطلوب سعر المنتج
address string مطلوب العنوان
delivery_on string مطلوب طريقة التوصيل (customer أو market)
to_city_id integer مطلوب معرف المدينة المقصودة
notes string اختياري ملاحظات إضافية
breakable boolean اختياري قابل للكسر
measurable boolean اختياري قابل للقياس
payment_type_id integer اختياري نوع الدفع (2 = حوالة مصرفية)
replacing boolean اختياري استبدال
replacing_notes string اختياري ملاحظات الاستبدال
مثال على الاستجابة الناجحة (201):
{
  "success": true,
  "data": {
    "parcel_id": 12345
  }
}
GET /parcels/{id}
الحصول على تفاصيل شحنة معينة
POST /parcels/{parcel}/update
تحديث بيانات شحنة (فقط للشحنات في حالة UnderPreparation)
POST /parcels/{id}/update-price
تحديث سعر المنتج أو رقم المستلم

المعاملات (Parameters):

الاسم النوع مطلوب الوصف
product_price numeric اختياري السعر الجديد
recipient_number string اختياري رقم المستلم الجديد
DELETE /parcels/{parcel}/destroy
حذف شحنة (فقط للشحنات في حالة UnderPreparation)
GET /parcels/{parcel}/return
طلب استرداد الشحنة - يرسل إشعار WhatsApp للمندوب والفرع
POST /parcels/list
الحصول على قائمة شحنات محددة بواسطة المعرفات

المعاملات (Parameters):

الاسم النوع مطلوب الوصف
ids string مطلوب معرفات الشحنات مفصولة بفواصل (مثال: "1,2,3,4")
POST /collect/store
إنشاء طلب تجميع للشحنات الجاهزة

المعاملات (Parameters):

الاسم النوع مطلوب الوصف
phone string مطلوب رقم الهاتف
address string مطلوب عنوان التجميع
notes string اختياري ملاحظات إضافية

🛍️ المنتجات (Products)

GET /products
الحصول على قائمة المنتجات المتوفرة في المخزون

معاملات الاستعلام (Query Parameters):

الاسم النوع مطلوب الوصف
name string اختياري البحث باسم المنتج
instock boolean اختياري عرض المنتجات المتوفرة فقط
POST /products
إنشاء منتج جديد
GET /products/{id}
الحصول على تفاصيل منتج معين

🧾 الإيصالات (Receipts)

GET /receipts
الحصول على قائمة الإيصالات

معاملات الاستعلام (Query Parameters):

الاسم النوع مطلوب الوصف
from_date date اختياري تاريخ البداية
to_date date اختياري تاريخ النهاية
GET /receipts/{id}
الحصول على تفاصيل إيصال معين مع الشحنات المرتبطة
مثال على الاستجابة (200):
{
  "success": true,
  "data": {
    "id": 123,
    "store_id": 1,
    "created_at": "2025-01-31",
    "parcels": [...]
  }
}

👤 المستخدم والمعلومات (User & Info)

GET /user
الحصول على معلومات المستخدم الحالي
مثال على الاستجابة (200):
{
  "success": true,
  "data": {
    "id": 1,
    "name": "متجر الاختبار",
    "owner_name": "أحمد محمد",
    "phone": "0912345678",
    "phone2": "0923456789",
    "address": "طرابلس",
    "breakable": false,
    "measuring_allowed": true,
  
    "type": "store"
  }
}
GET /summary
الحصول على ملخص شامل لإحصائيات المتجر والأنشطة
البيانات المُرجعة:
  • الرصيد الحالي
  • عدد الشحنات حسب الحالة
  • آخر الشحنات المضافة
  • إحصائيات شهرية
  • سجلات الأنشطة الأخيرة
  • معلومات الطقس وأسعار الصرف
GET /statuses
الحصول على قائمة حالات الشحنات المتاحة بالعربية
مثال على الاستجابة (200):
{
  "success": true,
  "data": {
    "UnderPreparation": "قيد الإعداد",
    "charging": "بإنتظار الشحن",
    "ConnectingNow": "قيد التوصيل",
    "FinancialSettlementPending": "تم التسليم للزبون",
    "Delay": "تأجيل",
    "outOfService": "خارج التغطية",
    "RewindInProgress": "جاري الإسترداد",
    "Returned": "تم الإسترداد",
    "ReturnedAndReceived": "راجع مستلم",
    "Delivered": "تم التوصيل",
    "Closed": "تم الاقفال"
  }
}
GET /report
الحصول على تقرير مفصل للشحنات خلال فترة زمنية محددة

معاملات الاستعلام (Query Parameters):

الاسم النوع مطلوب الوصف
from_date date مطلوب تاريخ البداية
to_date date مطلوب تاريخ النهاية
مثال على الاستجابة (200):
{
  "success": true,
  "data": {
    "total_returned_parcels_count": 15,
    "total_delivered_parcels_count": 120,
    "total_delivered_parcels_amount": 45000,
    "total_store_transaction_amount": 0
  }
}

🔧 الأدوات المساعدة (Utilities)

GET /prices
الحصول على أسعار الشحن لجميع المدن

معاملات الاستعلام (Query Parameters):

الاسم النوع مطلوب الوصف
q string اختياري البحث باسم المدينة
POST /set_token
تعيين رمز الجهاز لتلقي الإشعارات Push Notifications

المعاملات (Parameters):

الاسم النوع مطلوب الوصف
token string مطلوب رمز جهاز FCM
POST /delete_account
حذف الحساب بشكل نهائي

📊 أكواد الحالة (Status Codes)

200 OK

الطلب تم بنجاح

201 Created

تم الإنشاء بنجاح

400 Bad Request

طلب غير صحيح

401 Unauthorized

غير مصرح

403 Forbidden

محظور

422 Unprocessable Entity

خطأ في التحقق من البيانات

تنسيق الأخطاء

{
  "success": false,
  "error": {
    "field_name": [
      "رسالة الخطأ باللغة العربية"
    ]
  },
  "status": 422
}