{
  "info": {
    "_postman_id": "investor-collection-001",
    "name": "Maham Expo - Investor",
    "description": "Investor collection — space owner operations.\n\nIncludes:\n- /v1/my/ — Owner-scoped data (spaces, received requests, payments, contracts)\n- /v1/ — Authenticated self-service (profile, favorites, notifications, etc.)\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": "{{investor_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 Investor",
          "event": [{ "listen": "test", "script": { "type": "text/javascript", "exec": ["var jsonData = pm.response.json();", "if (jsonData.data && jsonData.data.access_token) {", "    pm.environment.set('investor_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\": \"investor@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 Investor. Saves `investor_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"] }, "description": "Unified user dashboard — returns stats scoped to the authenticated user." } }
      ]
    },
    {
      "name": "📍 My Spaces",
      "description": "Owner's spaces — full CRUD.\n\n**Permission:** spaces.view, spaces.create, spaces.update, spaces.delete",
      "item": [
        { "name": "List My Spaces", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/spaces", "host": ["{{expo_url}}"], "path": ["v1", "my", "spaces"], "query": [{ "key": "search", "value": "", "disabled": true }, { "key": "status", "value": "", "disabled": true }, { "key": "event_id", "value": "", "disabled": true }, { "key": "per_page", "value": "15", "disabled": true }, { "key": "page", "value": "1", "disabled": true }] }, "description": "List my spaces.\n\n**Permission:** spaces.view" } },
        { "name": "Create Space", "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n    \"event_id\": \"{{event_id}}\",\n    \"section_id\": \"{{section_id}}\",\n    \"name\": \"My Booth A\",\n    \"name_ar\": \"جناحي أ\",\n    \"description\": \"Premium corner booth\",\n    \"description_ar\": \"جناح زاوية مميز\",\n    \"location_code\": \"A-201\",\n    \"area_sqm\": 20,\n    \"price_per_day\": 400,\n    \"price_total\": 2000,\n    \"space_type\": \"booth\",\n    \"payment_system\": \"full\",\n    \"rental_duration\": \"daily\",\n    \"floor_number\": 1,\n    \"status\": \"available\",\n    \"is_featured\": false,\n    \"latitude\": null,\n    \"longitude\": null,\n    \"address\": null,\n    \"address_ar\": null,\n    \"services\": [\"{{service_id}}\"]\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/my/spaces", "host": ["{{expo_url}}"], "path": ["v1", "my", "spaces"] }, "description": "Create a space.\n\n**Permission:** spaces.create\n\n**Required:** event_id, section_id, name, name_ar, location_code, area_sqm" } },
        { "name": "Show Space", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/spaces/{{space_id}}", "host": ["{{expo_url}}"], "path": ["v1", "my", "spaces", "{{space_id}}"] }, "description": "Show space.\n\n**Permission:** spaces.view" } },
        { "name": "Update Space", "request": { "method": "PUT", "header": [], "body": { "mode": "raw", "raw": "{\n    \"name\": \"Updated Booth\",\n    \"name_ar\": \"جناح محدث\",\n    \"description\": \"Updated description\",\n    \"description_ar\": \"وصف محدث\",\n    \"location_code\": \"A-201\",\n    \"area_sqm\": 25,\n    \"price_per_day\": 500,\n    \"price_total\": 2500,\n    \"space_type\": \"booth\",\n    \"payment_system\": \"full\",\n    \"rental_duration\": \"daily\",\n    \"floor_number\": 1,\n    \"status\": \"available\",\n    \"is_featured\": true,\n    \"services\": [\"{{service_id}}\"]\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/my/spaces/{{space_id}}", "host": ["{{expo_url}}"], "path": ["v1", "my", "spaces", "{{space_id}}"] }, "description": "Update.\n\n**Permission:** spaces.update" } },
        { "name": "Delete Space", "request": { "method": "DELETE", "header": [], "url": { "raw": "{{expo_url}}/v1/my/spaces/{{space_id}}", "host": ["{{expo_url}}"], "path": ["v1", "my", "spaces", "{{space_id}}"] }, "description": "Delete.\n\n**Permission:** spaces.delete" } },
        { "name": "Add Services to Space", "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n    \"service_ids\": [\"{{service_id}}\"]\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/my/spaces/{{space_id}}/services", "host": ["{{expo_url}}"], "path": ["v1", "my", "spaces", "{{space_id}}", "services"] }, "description": "Add services.\n\n**Permission:** spaces.update\n\n**Required:** service_ids (array)" } },
        { "name": "Remove Services from Space", "request": { "method": "DELETE", "header": [], "body": { "mode": "raw", "raw": "{\n    \"service_ids\": [\"{{service_id}}\"]\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/my/spaces/{{space_id}}/services", "host": ["{{expo_url}}"], "path": ["v1", "my", "spaces", "{{space_id}}", "services"] }, "description": "Remove services.\n\n**Permission:** spaces.update\n\n**Required:** service_ids (array)" } }
      ]
    },
    {
      "name": "👁️ Received Visit Requests",
      "description": "Visit requests received for investor's spaces.\n\n**Permission:** visit-requests.approve, visit-requests.reject",
      "item": [
        { "name": "List Received Visit Requests", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/received-visit-requests", "host": ["{{expo_url}}"], "path": ["v1", "my", "received-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 }] }, "description": "List received visit requests.\n\n**Permission:** visit-requests.approve" } },
        { "name": "Pending Count", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/received-visit-requests/pending-count", "host": ["{{expo_url}}"], "path": ["v1", "my", "received-visit-requests", "pending-count"] }, "description": "Get pending count.\n\n**Permission:** visit-requests.approve" } },
        { "name": "Show Visit Request", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/received-visit-requests/{{visit_request_id}}", "host": ["{{expo_url}}"], "path": ["v1", "my", "received-visit-requests", "{{visit_request_id}}"] }, "description": "Show.\n\n**Permission:** visit-requests.approve" } },
        { "name": "Approve Visit Request", "request": { "method": "PUT", "header": [], "url": { "raw": "{{expo_url}}/v1/my/received-visit-requests/{{visit_request_id}}/approve", "host": ["{{expo_url}}"], "path": ["v1", "my", "received-visit-requests", "{{visit_request_id}}", "approve"] }, "description": "Approve.\n\n**Permission:** visit-requests.approve" } },
        { "name": "Reject Visit Request", "request": { "method": "PUT", "header": [], "body": { "mode": "raw", "raw": "{\n    \"reason\": \"Not available\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/my/received-visit-requests/{{visit_request_id}}/reject", "host": ["{{expo_url}}"], "path": ["v1", "my", "received-visit-requests", "{{visit_request_id}}", "reject"] }, "description": "Reject.\n\n**Permission:** visit-requests.reject\n\n**Optional:** reason" } }
      ]
    },
    {
      "name": "🏠 Received Rental Requests",
      "description": "Rental requests received for investor's spaces.\n\n**Permission:** rental-requests.approve, rental-requests.reject",
      "item": [
        { "name": "List Received Rental Requests", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/received-rental-requests", "host": ["{{expo_url}}"], "path": ["v1", "my", "received-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 }] }, "description": "List.\n\n**Permission:** rental-requests.approve" } },
        { "name": "Pending Count", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/received-rental-requests/pending-count", "host": ["{{expo_url}}"], "path": ["v1", "my", "received-rental-requests", "pending-count"] }, "description": "Pending count.\n\n**Permission:** rental-requests.approve" } },
        { "name": "Show Rental Request", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/received-rental-requests/{{rental_request_id}}", "host": ["{{expo_url}}"], "path": ["v1", "my", "received-rental-requests", "{{rental_request_id}}"] }, "description": "Show.\n\n**Permission:** rental-requests.approve" } },
        { "name": "Approve Rental Request", "request": { "method": "PUT", "header": [], "url": { "raw": "{{expo_url}}/v1/my/received-rental-requests/{{rental_request_id}}/approve", "host": ["{{expo_url}}"], "path": ["v1", "my", "received-rental-requests", "{{rental_request_id}}", "approve"] }, "description": "Approve.\n\n**Permission:** rental-requests.approve" } },
        { "name": "Reject Rental Request", "request": { "method": "PUT", "header": [], "body": { "mode": "raw", "raw": "{\n    \"reason\": \"Not available\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/my/received-rental-requests/{{rental_request_id}}/reject", "host": ["{{expo_url}}"], "path": ["v1", "my", "received-rental-requests", "{{rental_request_id}}", "reject"] }, "description": "Reject.\n\n**Permission:** rental-requests.reject\n\n**Optional:** reason" } }
      ]
    },
    {
      "name": "💰 My Payments",
      "description": "Revenue/payments for investor's spaces.\n\n**Permission:** payments.view",
      "item": [
        { "name": "List Payments", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/payments", "host": ["{{expo_url}}"], "path": ["v1", "my", "payments"], "query": [{ "key": "per_page", "value": "15", "disabled": true }, { "key": "page", "value": "1", "disabled": true }] }, "description": "List payments.\n\n**Permission:** payments.view" } },
        { "name": "Payment Summary", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/payments/summary", "host": ["{{expo_url}}"], "path": ["v1", "my", "payments", "summary"] }, "description": "Summary.\n\n**Permission:** payments.view" } },
        { "name": "Show Payment", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/payments/{{rental_request_id}}", "host": ["{{expo_url}}"], "path": ["v1", "my", "payments", "{{rental_request_id}}"] }, "description": "Show payment for rental request.\n\n**Permission:** payments.view" } }
      ]
    },
    {
      "name": "📋 My Rental Contracts",
      "description": "Rental contracts (view & sign).\n\n**Permission:** rental-contracts.view, rental-contracts.sign",
      "item": [
        { "name": "List Contracts", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/rental-contracts", "host": ["{{expo_url}}"], "path": ["v1", "my", "rental-contracts"] }, "description": "List.\n\n**Permission:** rental-contracts.view" } },
        { "name": "Show Contract", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/rental-contracts/{{rental_contract_id}}", "host": ["{{expo_url}}"], "path": ["v1", "my", "rental-contracts", "{{rental_contract_id}}"] }, "description": "Show.\n\n**Permission:** rental-contracts.view" } },
        { "name": "Sign Contract", "request": { "method": "PUT", "header": [], "url": { "raw": "{{expo_url}}/v1/my/rental-contracts/{{rental_contract_id}}/sign", "host": ["{{expo_url}}"], "path": ["v1", "my", "rental-contracts", "{{rental_contract_id}}", "sign"] }, "description": "Sign contract.\n\n**Permission:** rental-contracts.sign" } }
      ]
    },
    {
      "name": "👤 Profile",
      "item": [
        { "name": "Get Profile", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/profile", "host": ["{{expo_url}}"], "path": ["v1", "profile"] }, "description": "Get own business profile." } },
        { "name": "Create Profile", "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n    \"company_name\": \"My Company\",\n    \"company_name_ar\": \"شركتي\",\n    \"commercial_register\": \"1234567890\",\n    \"phone\": \"+966500000000\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/profile", "host": ["{{expo_url}}"], "path": ["v1", "profile"] }, "description": "Create business profile.\n\n**Required:** company_name, company_name_ar" } },
        { "name": "Update Profile", "request": { "method": "PUT", "header": [], "body": { "mode": "raw", "raw": "{\n    \"company_name\": \"Updated Company\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/profile", "host": ["{{expo_url}}"], "path": ["v1", "profile"] }, "description": "Update business profile." } }
      ]
    },
    {
      "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"] }, "description": "**Required:** favorable_type (event|space), favorable_id" } },
        { "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": "Get Preferences", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/notifications/preferences", "host": ["{{expo_url}}"], "path": ["v1", "notifications", "preferences"] } } },
        { "name": "Update Preferences", "request": { "method": "PUT", "header": [], "body": { "mode": "raw", "raw": "{\n    \"email_enabled\": true,\n    \"push_enabled\": true,\n    \"sms_enabled\": false\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/notifications/preferences", "host": ["{{expo_url}}"], "path": ["v1", "notifications", "preferences"] } } }
      ]
    },
    {
      "name": "🧾 My Invoices",
      "item": [
        { "name": "List My Invoices", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/invoices", "host": ["{{expo_url}}"], "path": ["v1", "invoices"], "query": [{ "key": "per_page", "value": "15", "disabled": true }, { "key": "page", "value": "1", "disabled": true }] }, "description": "List own invoices.\n\n**Permission:** invoices.view" } },
        { "name": "Show Invoice", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/invoices/{{invoice_id}}", "host": ["{{expo_url}}"], "path": ["v1", "invoices", "{{invoice_id}}"] }, "description": "Show invoice.\n\n**Permission:** invoices.view" } }
      ]
    },
    {
      "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\": \"Space issue\",\n    \"subject_ar\": \"مشكلة بالجناح\",\n    \"message\": \"Details here\",\n    \"category\": \"technical\",\n    \"priority\": \"medium\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/support-tickets", "host": ["{{expo_url}}"], "path": ["v1", "support-tickets"] }, "description": "**Required:** subject, message\n**Optional:** subject_ar, category, priority" } },
        { "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\": \"Additional info\"\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-here\",\n    \"device_type\": \"android\",\n    \"device_name\": \"Pixel 7\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{expo_url}}/v1/devices", "host": ["{{expo_url}}"], "path": ["v1", "devices"] }, "description": "**Required:** device_token, device_type" } },
        { "name": "Unregister Device", "request": { "method": "DELETE", "header": [], "body": { "mode": "raw", "raw": "{\n    \"device_token\": \"fcm-token-here\"\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"], "query": [{ "key": "per_page", "value": "15", "disabled": true }, { "key": "page", "value": "1", "disabled": true }] } } },
        { "name": "Activity Summary", "request": { "method": "GET", "header": [], "url": { "raw": "{{expo_url}}/v1/my/activity/summary", "host": ["{{expo_url}}"], "path": ["v1", "my", "activity", "summary"] } } }
      ]
    }
  ]
}
