🔐 المصادقة (Authentication)
كيفية المصادقة
جميع الطلبات تتطلب رمز مصادقة (Bearer Token) في رأس الطلب:
Authorization: Bearer {your_token_here}
POST
/login
تسجيل الدخول للحصول على رمز المصادقة (Token)
المعاملات (Parameters):
| الاسم | النوع | مطلوب | الوصف |
|---|---|---|---|
| string | مطلوب | البريد الإلكتروني أو رقم الهاتف | |
| password | string | مطلوب | كلمة المرور (4 أحرف على الأقل) |
{
"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 | اختياري | البحث (رقم الهاتف، رقم الشحنة، الوصف، إلخ) |
{
"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 | اختياري | ملاحظات الاستبدال |
{
"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 | مطلوب | تاريخ النهاية |
{
"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
}