{
  "info": {
    "_postman_id": "merchant-collection-001",
    "name": "Maham Expo - Merchant",
    "description": "Merchant collection — booth renter/visitor.\n\nIncludes:\n- /v1/ — Authenticated routes: visit requests, rental requests (requires verified profile), ratings, support tickets, invoices\n- /v1/my/ — Own activity & dashboard\n\n**Headers (auto-added via pre-request):**\n- Accept: application/json\n- Accept-Language: {{language}}\n- X-Platform: {{platform}}",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [{ "key": "token", "value": "{{merchant_token}}", "type": "string" }]
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "pm.request.headers.add({ key: 'Accept', value: 'application/json' });",
          "pm.request.headers.add({ key: 'Accept-Language', value: pm.environment.get('language') || 'ar' });",
          "pm.request.headers.add({ key: 'X-Platform', value: pm.environment.get('platform') || 'web' });"
        ]
      }
    }
  ],
  "variable": [],
  "item": [
    {
      "name": "🔐 Auth",
      "item": [
        {
          "name": "Login as Merchant",
          "event": [{ "listen": "test", "script": { "type": "text/javascript", "exec": ["var jsonData = pm.response.json();", "if (jsonData.data && jsonData.data.access_token) {", "    pm.environment.set('merchant_token', jsonData.data.access_token);", "    pm.environment.set('auth_token', jsonData.data.access_token);", "}", "if (jsonData.data && jsonData.data.user) {", "    pm.environment.set('user_id', jsonData.data.user.id);", "}"] } }],
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST",
            "header": [],
            "body": { "mode": "raw", "raw": "{\n    \"identifier\": \"merchant@example.com\",\n    \"password\": \"password\",\n}", "options": { "raw": { "language": "json" } } },
            "url": { "raw": "{{auth_url}}/v1/auth/login", "host": ["{{auth_url}}"], "path": ["v1", "auth", "login"] },
            "description": "Login as Merchant. Saves `merchant_token` and `auth_token`."
          }
        }
      ]
    },
    {
      "name": "📊 My Dashboard",
      "item": [
        { "name": "Dashboard", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/dashboard", "host": ["{{expo_url}}"], "path": ["v1", "my", "dashboard"] } } }
      ]
    },
    {
      "name": "👤 Profile",
      "item": [
        { "name": "Get Profile", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/profile", "host": ["{{expo_url}}"], "path": ["v1", "profile"] } } },
        { "name": "Create Profile", "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n    \"company_name\": \"Merchant Co\",\n    \"company_name_ar\": \"شركة التاجر\",\n    \"commercial_register\": \"9876543210\",\n    \"phone\": \"+966500000001\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/profile", "host": ["{{expo_url}}"], "path": ["v1", "profile"] } } },
        { "name": "Update Profile", "request": { "method": "PUT", "header": [], "body": { "mode": "raw", "raw": "{\n    \"company_name\": \"Updated Merchant\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/profile", "host": ["{{expo_url}}"], "path": ["v1", "profile"] } } }
      ]
    },
    {
      "name": "👁️ Visit Requests",
      "description": "Own visit requests.\n\n**Permission:** visit-requests.view, visit-requests.create, visit-requests.update, visit-requests.delete",
      "item": [
        { "name": "List My Visit Requests", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/visit-requests", "host": ["{{expo_url}}"], "path": ["v1", "visit-requests"], "query": [{ "key": "status", "value": "", "disabled": true }, { "key": "event_id", "value": "", "disabled": true }, { "key": "per_page", "value": "15", "disabled": true }, { "key": "page", "value": "1", "disabled": true }] } } },
        { "name": "Create Visit Request", "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n    \"event_id\": \"{{event_id}}\",\n    \"visit_date\": \"2025-06-01\",\n    \"visitors_count\": 3,\n    \"purpose\": \"Business meeting\",\n    \"notes\": \"Looking for booth spaces\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/visit-requests", "host": ["{{expo_url}}"], "path": ["v1", "visit-requests"] }, "description": "**Required:** event_id, visit_date, visitors_count\n**Optional:** purpose, notes" } },
        { "name": "Show Visit Request", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/visit-requests/{{visit_request_id}}", "host": ["{{expo_url}}"], "path": ["v1", "visit-requests", "{{visit_request_id}}"] } } },
        { "name": "Update Visit Request", "request": { "method": "PUT", "header": [], "body": { "mode": "raw", "raw": "{\n    \"visit_date\": \"2025-06-02\",\n    \"visitors_count\": 5\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/visit-requests/{{visit_request_id}}", "host": ["{{expo_url}}"], "path": ["v1", "visit-requests", "{{visit_request_id}}"] } } },
        { "name": "Delete Visit Request", "request": { "method": "DELETE", "header": [], "url": { "raw": "{{expo_url}}/v1/visit-requests/{{visit_request_id}}", "host": ["{{expo_url}}"], "path": ["v1", "visit-requests", "{{visit_request_id}}"] } } }
      ]
    },
    {
      "name": "🏠 Rental Requests",
      "description": "Own rental requests. Requires verified business profile (CheckVerifiedProfile middleware).\n\n**Permission:** rental-requests.view, rental-requests.create, rental-requests.update, rental-requests.delete",
      "item": [
        { "name": "List My Rental Requests", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/rental-requests", "host": ["{{expo_url}}"], "path": ["v1", "rental-requests"], "query": [{ "key": "status", "value": "", "disabled": true }, { "key": "event_id", "value": "", "disabled": true }, { "key": "per_page", "value": "15", "disabled": true }, { "key": "page", "value": "1", "disabled": true }] } } },
        { "name": "Create Rental Request", "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n    \"space_id\": \"{{space_id}}\",\n    \"start_date\": \"2025-06-01\",\n    \"end_date\": \"2025-06-05\",\n    \"notes\": \"Need electricity\",\n    \"services\": [\"{{service_id}}\"]\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/rental-requests", "host": ["{{expo_url}}"], "path": ["v1", "rental-requests"] }, "description": "⚠️ Requires verified profile.\n\n**Required:** space_id, start_date, end_date\n**Optional:** notes, services" } },
        { "name": "Show Rental Request", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/rental-requests/{{rental_request_id}}", "host": ["{{expo_url}}"], "path": ["v1", "rental-requests", "{{rental_request_id}}"] } } },
        { "name": "Update Rental Request", "request": { "method": "PUT", "header": [], "body": { "mode": "raw", "raw": "{\n    \"notes\": \"Updated notes\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/rental-requests/{{rental_request_id}}", "host": ["{{expo_url}}"], "path": ["v1", "rental-requests", "{{rental_request_id}}"] } } },
        { "name": "Delete Rental Request", "request": { "method": "DELETE", "header": [], "url": { "raw": "{{expo_url}}/v1/rental-requests/{{rental_request_id}}", "host": ["{{expo_url}}"], "path": ["v1", "rental-requests", "{{rental_request_id}}"] } } }
      ]
    },
    {
      "name": "⭐ Ratings",
      "description": "Own ratings CRUD.\n\n**Permission:** ratings.create, ratings.update, ratings.delete",
      "item": [
        { "name": "Create Rating", "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n    \"rateable_type\": \"event\",\n    \"rateable_id\": \"{{event_id}}\",\n    \"rating\": 5,\n    \"comment\": \"Great event!\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/ratings", "host": ["{{expo_url}}"], "path": ["v1", "ratings"] }, "description": "**Required:** rateable_type (event|space), rateable_id, rating (1-5)\n**Optional:** comment" } },
        { "name": "Update Rating", "request": { "method": "PUT", "header": [], "body": { "mode": "raw", "raw": "{\n    \"rating\": 4,\n    \"comment\": \"Updated review\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/ratings/{{rating_id}}", "host": ["{{expo_url}}"], "path": ["v1", "ratings", "{{rating_id}}"] } } },
        { "name": "Delete Rating", "request": { "method": "DELETE", "header": [], "url": { "raw": "{{expo_url}}/v1/ratings/{{rating_id}}", "host": ["{{expo_url}}"], "path": ["v1", "ratings", "{{rating_id}}"] } } }
      ]
    },
    {
      "name": "❤️ Favorites",
      "item": [
        { "name": "List Favorites", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/favorites", "host": ["{{expo_url}}"], "path": ["v1", "favorites"] } } },
        { "name": "Add Favorite", "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n    \"favorable_type\": \"event\",\n    \"favorable_id\": \"{{event_id}}\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/favorites", "host": ["{{expo_url}}"], "path": ["v1", "favorites"] } } },
        { "name": "Remove Favorite", "request": { "method": "DELETE", "header": [], "url": { "raw": "{{expo_url}}/v1/favorites/{{favorite_id}}", "host": ["{{expo_url}}"], "path": ["v1", "favorites", "{{favorite_id}}"] } } }
      ]
    },
    {
      "name": "🔔 Notifications",
      "item": [
        { "name": "List Notifications", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/notifications", "host": ["{{expo_url}}"], "path": ["v1", "notifications"], "query": [{ "key": "unread_only", "value": "1", "disabled": true }] } } },
        { "name": "Unread Count", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/notifications/unread-count", "host": ["{{expo_url}}"], "path": ["v1", "notifications", "unread-count"] } } },
        { "name": "Mark as Read", "request": { "method": "PUT", "header": [], "url": { "raw": "{{expo_url}}/v1/notifications/{{notification_id}}/read", "host": ["{{expo_url}}"], "path": ["v1", "notifications", "{{notification_id}}", "read"] } } },
        { "name": "Mark All Read", "request": { "method": "PUT", "header": [], "url": { "raw": "{{expo_url}}/v1/notifications/read-all", "host": ["{{expo_url}}"], "path": ["v1", "notifications", "read-all"] } } }
      ]
    },
    {
      "name": "🧾 My Invoices",
      "item": [
        { "name": "List Invoices", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/invoices", "host": ["{{expo_url}}"], "path": ["v1", "invoices"] } } },
        { "name": "Show Invoice", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/invoices/{{invoice_id}}", "host": ["{{expo_url}}"], "path": ["v1", "invoices", "{{invoice_id}}"] } } }
      ]
    },
    {
      "name": "🎫 Support Tickets",
      "item": [
        { "name": "List My Tickets", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/support-tickets", "host": ["{{expo_url}}"], "path": ["v1", "support-tickets"] } } },
        { "name": "Create Ticket", "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n    \"subject\": \"Rental issue\",\n    \"message\": \"Details\",\n    \"category\": \"billing\",\n    \"priority\": \"high\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/support-tickets", "host": ["{{expo_url}}"], "path": ["v1", "support-tickets"] } } },
        { "name": "Show Ticket", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/support-tickets/{{support_ticket_id}}", "host": ["{{expo_url}}"], "path": ["v1", "support-tickets", "{{support_ticket_id}}"] } } },
        { "name": "Reply to Ticket", "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n    \"message\": \"More details\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/support-tickets/{{support_ticket_id}}/reply", "host": ["{{expo_url}}"], "path": ["v1", "support-tickets", "{{support_ticket_id}}", "reply"] } } },
        { "name": "Close Ticket", "request": { "method": "PUT", "header": [], "url": { "raw": "{{expo_url}}/v1/support-tickets/{{support_ticket_id}}/close", "host": ["{{expo_url}}"], "path": ["v1", "support-tickets", "{{support_ticket_id}}", "close"] } } },
        { "name": "Reopen Ticket", "request": { "method": "PUT", "header": [], "url": { "raw": "{{expo_url}}/v1/support-tickets/{{support_ticket_id}}/reopen", "host": ["{{expo_url}}"], "path": ["v1", "support-tickets", "{{support_ticket_id}}", "reopen"] } } }
      ]
    },
    {
      "name": "📱 Devices",
      "item": [
        { "name": "List Devices", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/devices", "host": ["{{expo_url}}"], "path": ["v1", "devices"] } } },
        { "name": "Register Device", "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n    \"device_token\": \"fcm-token\",\n    \"device_type\": \"ios\",\n    \"device_name\": \"iPhone 15\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/devices", "host": ["{{expo_url}}"], "path": ["v1", "devices"] } } },
        { "name": "Unregister Device", "request": { "method": "DELETE", "header": [], "body": { "mode": "raw", "raw": "{\n    \"device_token\": \"fcm-token\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/devices", "host": ["{{expo_url}}"], "path": ["v1", "devices"] } } }
      ]
    },
    {
      "name": "📜 My Activity",
      "item": [
        { "name": "Activity Log", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/activity", "host": ["{{expo_url}}"], "path": ["v1", "my", "activity"] } } },
        { "name": "Activity Summary", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/activity/summary", "host": ["{{expo_url}}"], "path": ["v1", "my", "activity", "summary"] } } }
      ]
    }
  ]
}
