{
  "info": {
    "_postman_id": "a1b2c3d4-store-apis-autohub",
    "name": "full store apis",
    "description": "AutoHub — جميع مسارات المتجر (تسجيل الدخول، /store، /shop) مع أمثلة للـ body والـ query.\n\n**متغيرات المجموعة:**\n- `baseUrl` — مثال: `http://localhost:8000/api`\n- `store_token` — Bearer من استجابة `POST /auth/login` (user_type: store)\n\n**الاستجابة القياسية:** `{ \"success\", \"message\", \"data\", \"errors\" }`\n\n**صلاحيات المتجر:** كل مسار تحت `/store` و`/shop` (المحمية) يحتاج توكن + middleware `permission:*` كما في الوصف لكل طلب.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "baseUrl", "value": "http://localhost:8000/api" },
    { "key": "store_token", "value": "" },
    { "key": "orderId", "value": "1" },
    { "key": "categoryId", "value": "1" },
    { "key": "productId", "value": "1" }
  ],
  "auth": { "type": "noauth" },
  "item": [
    {
      "name": "01 Auth (store)",
      "item": [
        {
          "name": "POST Login (store)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"username\": \"your_store_username\",\n  \"password\": \"your_password\",\n  \"user_type\": \"store\",\n  \"guest_token\": null\n}"
            },
            "url": "{{baseUrl}}/auth/login",
            "description": "**Body (JSON)**\n- `username` (string, required)\n- `password` (string, required لغير customer)\n- `user_type` (required): `store` — للمتجر\n- `guest_token` (optional): للكستمر فقط\n\n**Response `data`:** `token`, `user` — انسخ `token` إلى متغير `store_token`."
          }
        },
        {
          "name": "POST Store forgot password",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"username\": \"your_store_username\"\n}"
            },
            "url": "{{baseUrl}}/auth/store/forgot-password",
            "description": "**Body:** `username` (string, required) — نفس اسم المستخدم في جدول users.\n\n**Response:** في بيئة `local` قد يُرجع `reset_token` في `data`؛ في الإنتاج عادة `null` (يُرسل عبر قناة أخرى حسب تطبيقكم)."
          }
        },
        {
          "name": "POST Store reset password",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"username\": \"your_store_username\",\n  \"token\": \"plain_token_from_forgot_response\",\n  \"password\": \"newSecret123\",\n  \"password_confirmation\": \"newSecret123\"\n}"
            },
            "url": "{{baseUrl}}/auth/store/reset-password",
            "description": "**Body:**\n- `username` (required)\n- `token` (required) — التوكن العادي قبل الـ hash (كما يُعاد في local)\n- `password` (required, min:6)\n- `password_confirmation` (required) — يجب أن يطابق `password`"
          }
        },
        {
          "name": "POST Logout",
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [{ "key": "token", "value": "{{store_token}}", "type": "string" }]
            },
            "method": "POST",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/auth/logout",
            "description": "**Headers:** `Authorization: Bearer {{store_token}}`\n\nيحذف التوكن الحالي (Sanctum)."
          }
        }
      ]
    },
    {
      "name": "02 Public — Shop support",
      "item": [
        {
          "name": "GET Shop support (optional store username)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/shop/support?username=",
            "description": "**Query (optional):** `username` — إن وُجد، يُحاول جلب `support_phone` من متجر ذلك المستخدم؛ وإلا رقم دعم عام من `settings`.\n\n**Response `data`:** `phone`, `source` (`store` | `global`)"
          }
        }
      ]
    },
    {
      "name": "03 Store — Dashboard",
      "auth": {
        "type": "bearer",
        "bearer": [{ "key": "token", "value": "{{store_token}}", "type": "string" }]
      },
      "item": [
        {
          "name": "GET Dashboard home",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/dashboard/home",
            "description": "**Permission:** `dashboard.view`\n\n**Response `data`:** إحصائيات، `announcement_banners`, `orders_last_7_days`, `total_sales_last_7_days`, `quick_actions` (روابط فرعية)."
          }
        },
        {
          "name": "POST Dashboard toggle online status",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"is_online\": true\n}"
            },
            "url": "{{baseUrl}}/store/dashboard/status",
            "description": "**Permission:** `dashboard.view`\n\n**Body:** `is_online` (boolean, required) — يحدّث `stores.is_active`."
          }
        },
        {
          "name": "GET Dashboard vouchers (active)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/dashboard/vouchers",
            "description": "**Permission:** `dashboard.view`\n\nقائمة الكوبونات النشطة مع `total_spend_till_now` وغيرها."
          }
        }
      ]
    },
    {
      "name": "04 Store — Settings",
      "auth": {
        "type": "bearer",
        "bearer": [{ "key": "token", "value": "{{store_token}}", "type": "string" }]
      },
      "item": [
        {
          "name": "GET Settings (full)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/settings",
            "description": "**Permission:** `settings.view`"
          }
        },
        {
          "name": "PUT Settings general info",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"store_name\": \"My Store\",\n  \"store_logo\": \"https://example.com/logo.png\",\n  \"store_cover\": \"https://example.com/cover.jpg\",\n  \"specialization_brand_ids\": [1, 2],\n  \"location\": \"Amman\",\n  \"location_lat\": 31.95,\n  \"location_lng\": 35.91,\n  \"address_details\": \"Building 1\",\n  \"store_description\": \"...\",\n  \"contact_email\": \"shop@example.com\",\n  \"contact_phone\": \"0790000000\",\n  \"support_phone\": \"0791111111\",\n  \"current_password\": \"optional_for_password_change\",\n  \"new_password\": \"optional_min_6\"\n}"
            },
            "url": "{{baseUrl}}/store/settings/general",
            "description": "**Permission:** `settings.update`\n\nكل الحقول `sometimes`:\n- `store_name`, `store_logo`, `store_cover` (string)\n- `specialization_brand_ids` (array of brand ids)\n- `location`, `address_details`, `store_description`, `contact_phone`, `support_phone`\n- `location_lat`, `location_lng` (numeric)\n- `contact_email` (email)\n- لتغيير كلمة مرور حساب المتجر: أرسل معاً `current_password` و `new_password`"
          }
        },
        {
          "name": "PUT Settings operating hours",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"daily_from\": \"09:00\",\n  \"daily_to\": \"22:00\",\n  \"off_days\": [\"friday\"],\n  \"is_24_hours\": false\n}"
            },
            "url": "{{baseUrl}}/store/settings/hours",
            "description": "**Permission:** `settings.update`\n\n- `daily_from`, `daily_to`: `H:i` أو null\n- `off_days`: مصفوفة من: sunday, monday, tuesday, wednesday, thursday, friday, saturday\n- `is_24_hours` (boolean, **required**)"
          }
        },
        {
          "name": "GET Settings support phone",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/support",
            "description": "**Permission:** `settings.view` — `data.phone` من المتجر الحالي."
          }
        },
        {
          "name": "GET Settings about / app version",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/about",
            "description": "**Permission:** `settings.view`"
          }
        },
        {
          "name": "POST Settings language",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"language\": \"ar\"\n}"
            },
            "url": "{{baseUrl}}/store/language",
            "description": "**Permission:** `settings.view`\n\n**Body:** `language` (required): `ar` أو `en`"
          }
        }
      ]
    },
    {
      "name": "05 Store — Orders",
      "auth": {
        "type": "bearer",
        "bearer": [{ "key": "token", "value": "{{store_token}}", "type": "string" }]
      },
      "item": [
        {
          "name": "GET Orders list",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/orders?tab=",
            "description": "**Permission:** `orders.view`\n\n**Query `tab` (optional):**\n- فارغ — الكل (للمتجر)\n- `pending`\n- `packing_handling` — store_accept, driver_accept, packing\n- `out_for_delivery`\n- `scheduled` — طلبات مجدولة + حالات نشطة"
          }
        },
        {
          "name": "GET Order detail",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/orders/{{orderId}}",
            "description": "**Permission:** `orders.view`\n\n**Path:** `orderId` — معرف الطلب."
          }
        },
        {
          "name": "POST Order accept or reject",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"store_accept\"\n}"
            },
            "url": "{{baseUrl}}/store/orders/{{orderId}}/status",
            "description": "**Permission:** `orders.change_status`\n\n**Body:** `status` (required) — قيم مسموحة فقط:\n- `store_accept`\n- `rejected`\n\nيعمل فقط إذا حالة الطلب `pending`."
          }
        }
      ]
    },
    {
      "name": "06 Store — Reviews & Reports",
      "auth": {
        "type": "bearer",
        "bearer": [{ "key": "token", "value": "{{store_token}}", "type": "string" }]
      },
      "item": [
        {
          "name": "GET Reviews (reports tab)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/reviews",
            "description": "**Permission:** `reports.view` — تقييمات المنتجات + توزيع النجوم."
          }
        },
        {
          "name": "GET Reports summary",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/reports/summary?from=&to=",
            "description": "**Permission:** `reports.view`\n\n**Query (optional):** `from`, `to` — تاريخ (Y-m-d). الافتراضي: آخر 30 يوم.\n\n**Validation:** `to` يجب `after_or_equal:from` إن وُجد الاثنان."
          }
        },
        {
          "name": "GET Reports orders list",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/reports/orders?from=&to=",
            "description": "**Permission:** `reports.view` — نفس نطاق التاريخ `from` / `to`."
          }
        },
        {
          "name": "GET Reports export CSV",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/reports/export?from=&to=",
            "description": "**Permission:** `reports.view` — تنزيل CSV؛ نفس باراميترات التاريخ."
          }
        }
      ]
    },
    {
      "name": "07 Store — Stock",
      "auth": {
        "type": "bearer",
        "bearer": [{ "key": "token", "value": "{{store_token}}", "type": "string" }]
      },
      "item": [
        {
          "name": "GET Stock home (categories tree summary)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/stock?q=",
            "description": "**Permission:** `products.view`\n\n**Query (optional):** `q` — بحث في أسماء الأقسام (name / name_ar / name_en)."
          }
        },
        {
          "name": "GET Stock categories tree",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/stock/categories/tree",
            "description": "**Permission:** `categories.view`"
          }
        },
        {
          "name": "POST Stock category",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"parent_id\": null,\n  \"name_ar\": \"قسم\",\n  \"name_en\": \"Category\",\n  \"name\": \"Category\",\n  \"status\": true,\n  \"queue\": 0\n}"
            },
            "url": "{{baseUrl}}/store/stock/categories",
            "description": "**Permission:** `categories.create`\n\n- `parent_id` (nullable, id قسم أب لنفس المتجر)\n- `name_ar`, `name_en` (required)\n- `name` (optional)\n- `status` (boolean, required)\n- `queue` (optional int)"
          }
        },
        {
          "name": "PUT Stock category",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name_ar\": \"قسم محدث\",\n  \"name_en\": \"Updated\",\n  \"status\": true,\n  \"queue\": 1\n}"
            },
            "url": "{{baseUrl}}/store/stock/categories/{{categoryId}}",
            "description": "**Permission:** `categories.update` — كل الحقول sometimes."
          }
        },
        {
          "name": "DELETE Stock category",
          "request": {
            "method": "DELETE",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/stock/categories/{{categoryId}}",
            "description": "**Permission:** `categories.delete`"
          }
        },
        {
          "name": "GET Stock products",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/stock/products?q=&category_id=",
            "description": "**Permission:** `products.view`\n\n**Query (optional):** `q` — بحث بالاسم؛ `category_id` — تصفية حسب التصنيف."
          }
        },
        {
          "name": "POST Stock product (full example)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name_ar\": \"منتج\",\n  \"name_en\": \"Product\",\n  \"name\": \"Product\",\n  \"description\": \"Short\",\n  \"description_ar\": \"وصف\",\n  \"description_en\": \"Description\",\n  \"status\": true,\n  \"quantity\": 10,\n  \"price\": 19.99,\n  \"queue\": 0,\n  \"tags\": [\"tag1\"],\n  \"features\": [],\n  \"category_ids\": [1],\n  \"dynamic_label_ids\": [1],\n  \"image_urls\": [\"https://example.com/p1.jpg\"],\n  \"options\": [\n    { \"option_name\": \"Size\", \"option_value\": \"M\" }\n  ],\n  \"vehicle_fits\": [\n    {\n      \"vehicle_make\": \"Toyota\",\n      \"vehicle_model\": \"Camry\",\n      \"vehicle_trim\": null,\n      \"year_from\": 2020,\n      \"year_to\": 2024\n    }\n  ]\n}"
            },
            "url": "{{baseUrl}}/store/stock/products",
            "description": "**Permission:** `products.create`\n\n**إنشاء — required:** `name_ar`, `name_en`, `status`, `quantity`, `price`\n\n**اختياري:** `name`, `description*`, `queue`, `tags[]`, `features[]` (مصفوفات)، `category_ids[]`, `dynamic_label_ids[]`, `image_urls[]`, `options[]` (كل عنصر: `option_name`, `option_value`), `vehicle_fits[]` (`vehicle_make`, `vehicle_model` required مع المصفوفة؛ `vehicle_trim`, `year_from`, `year_to` اختياري)."
          }
        },
        {
          "name": "PUT Stock product (partial update)",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name_en\": \"Updated name\",\n  \"quantity\": 5,\n  \"price\": 15.5,\n  \"status\": true\n}"
            },
            "url": "{{baseUrl}}/store/stock/products/{{productId}}",
            "description": "**Permission:** `products.update` — تحديث جزئي؛ نفس مفاتيح المنتج مع `sometimes` بدل `required` للحقول الأساسية."
          }
        },
        {
          "name": "DELETE Stock product",
          "request": {
            "method": "DELETE",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/stock/products/{{productId}}",
            "description": "**Permission:** `products.delete`"
          }
        },
        {
          "name": "POST Stock import CSV",
          "request": {
            "method": "POST",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": [],
                  "description": "CSV أو txt — أعمدة متوقعة: product_id (اختياري), name_ar, name_en, price, quantity, status (active/inactive), queue, tags (JSON string), features (JSON string)"
                }
              ]
            },
            "url": "{{baseUrl}}/store/stock/import",
            "description": "**Permission:** `products.update`\n\n**Body:** multipart `file` (required) — mimes: csv, txt"
          }
        },
        {
          "name": "GET Stock export CSV",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/store/stock/export",
            "description": "**Permission:** `products.view` — تنزيل ملف CSV لكل منتجات المتجر."
          }
        }
      ]
    },
    {
      "name": "08 Shop — Dashboard extras",
      "auth": {
        "type": "bearer",
        "bearer": [{ "key": "token", "value": "{{store_token}}", "type": "string" }]
      },
      "item": [
        {
          "name": "GET Shop dashboard reviews",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/shop/dashboard/reviews",
            "description": "**Permission:** `dashboard.view` — نفس منطق التقييمات مع `overall_store_rating` و `items`."
          }
        },
        {
          "name": "GET Shop dashboard out of stock",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/shop/dashboard/out-of-stock",
            "description": "**Permission:** `dashboard.view`"
          }
        },
        {
          "name": "GET Shop dashboard active orders",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": "{{baseUrl}}/shop/dashboard/active-orders",
            "description": "**Permission:** `dashboard.view`"
          }
        }
      ]
    }
  ]
}
