{
  "info": {
    "name": "Hello Syria API v1",
    "description": "Phase 1 content API.\n\n**Locale:** set collection variable `locale` to `ar` or `en` (injected as Accept-Language).\nYou can also send header `X-Locale: en` or query `?lang=en`.\n\nDemo: demo@hellosyria.test / password\nAdmin panel: admin@hellosyria.test / password",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "const locale = (pm.collectionVariables.get('locale') || 'ar').trim().toLowerCase();",
          "pm.request.headers.upsert({ key: 'Accept-Language', value: locale });",
          "pm.request.headers.upsert({ key: 'Accept', value: 'application/json' });",
          "// Do NOT force X-Locale here — it used to override ?lang= and confuse testing.",
          "pm.request.headers.remove('X-Locale');",
          "pm.request.headers.remove('X-Language');"
        ]
      }
    }
  ],
  "variable": [
    { "key": "baseUrl", "value": "http://127.0.0.1:8000/api/v1" },
    { "key": "locale", "value": "ar" },
    { "key": "token", "value": "" },
    { "key": "reviewable_id", "value": "1" },
    { "key": "place_id", "value": "1" },
    { "key": "city_id", "value": "1" },
    { "key": "event_id", "value": "1" }
  ],
  "item": [
    {
      "name": "Auth",
      "item": [
        {
          "name": "Register",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"first_name\": \"Sara\",\n  \"last_name\": \"Test\",\n  \"email\": \"sara{{$timestamp}}@test.com\",\n  \"phone\": \"+963911111111\",\n  \"password\": \"password\",\n  \"password_confirmation\": \"password\",\n  \"preferred_locale\": \"ar\",\n  \"device_name\": \"postman\"\n}"
            },
            "url": "{{baseUrl}}/auth/register",
            "description": "preferred_locale values: `ar` | `en`"
          }
        },
        {
          "name": "Login (demo)",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "if (json.data && json.data.token) { pm.collectionVariables.set('token', json.data.token); }"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"demo@hellosyria.test\",\n  \"password\": \"password\",\n  \"device_name\": \"postman\"\n}"
            },
            "url": "{{baseUrl}}/auth/login"
          }
        },
        {
          "name": "Me",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{baseUrl}}/auth/me"
          }
        },
        {
          "name": "Update profile",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"first_name\": \"Demo\",\n  \"last_name\": \"User\",\n  \"preferred_locale\": \"en\"\n}"
            },
            "url": "{{baseUrl}}/auth/profile",
            "description": "preferred_locale values: `ar` | `en`"
          }
        },
        {
          "name": "Logout",
          "request": {
            "method": "POST",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{baseUrl}}/auth/logout"
          }
        }
      ]
    },
    
    {
      "name": "Discovery",
      "item": [
        {
          "name": "Home stats",
          "request": {
            "method": "GET",
            "url": "{{baseUrl}}/home"
          }
        },
        {
          "name": "Cities",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/cities?per_page=50",
              "host": ["{{baseUrl}}"],
              "path": ["cities"],
              "query": [
                { "key": "per_page", "value": "50", "description": "Pagination size (default 50)" },
                { "key": "lang", "value": "", "disabled": true, "description": "Allowed values: `ar` | `en`" }
              ]
            }
          }
        },
        {
          "name": "Places (filter)",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/places?city_id={{city_id}}&type=restaurant&q=&per_page=20",
              "host": ["{{baseUrl}}"],
              "path": ["places"],
              "query": [
                { "key": "city_id", "value": "{{city_id}}", "description": "Filter by city id" },
                {
                  "key": "type",
                  "value": "restaurant",
                  "description": "Allowed values: `destination` | `embassy` | `airport` | `transport_provider` | `neighborhood` | `cultural_venue` | `entertainment_activity` | `medical_destination` | `medical_center` | `accommodation` | `restaurant` | `cafe`"
                },
                { "key": "q", "value": "", "description": "Text search in place name (ar/en)" },
                { "key": "per_page", "value": "20", "description": "Pagination size (default 15)" },
                { "key": "lang", "value": "", "disabled": true, "description": "Allowed values: `ar` | `en`" }
              ]
            }
          }
        },
        {
          "name": "Place show",
          "request": {
            "method": "GET",
            "url": "{{baseUrl}}/places/{{place_id}}"
          }
        },
        {
          "name": "Nearby",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/nearby?lat=33.5138&lng=36.2765&radius_km=10&per_page=15",
              "host": ["{{baseUrl}}"],
              "path": ["nearby"],
              "query": [
                { "key": "lat", "value": "33.5138", "description": "Required. Latitude" },
                { "key": "lng", "value": "36.2765", "description": "Required. Longitude" },
                { "key": "radius_km", "value": "10", "description": "Optional. Range: 0.1–200 (default 25)" },
                { "key": "per_page", "value": "15", "description": "Optional. Range: 1–50 (default 15)" }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Directory",
      "item": [
        {
          "name": "Accommodations",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/accommodations?city_id=&q=&per_page=15",
              "host": ["{{baseUrl}}"],
              "path": ["accommodations"],
              "query": [
                { "key": "city_id", "value": "", "description": "Optional city id filter" },
                { "key": "q", "value": "", "description": "Text search" },
                { "key": "per_page", "value": "15", "description": "Pagination size" }
              ]
            }
          }
        },
        {
          "name": "Restaurants",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/restaurants?city_id=&q=&per_page=15",
              "host": ["{{baseUrl}}"],
              "path": ["restaurants"],
              "query": [
                { "key": "city_id", "value": "", "description": "Optional city id filter" },
                { "key": "q", "value": "", "description": "Text search" },
                { "key": "per_page", "value": "15", "description": "Pagination size" }
              ]
            }
          }
        },
        { "name": "Cafes", "request": { "method": "GET", "url": "{{baseUrl}}/cafes" } },
        { "name": "Destinations", "request": { "method": "GET", "url": "{{baseUrl}}/destinations" } },
        { "name": "Neighborhoods", "request": { "method": "GET", "url": "{{baseUrl}}/neighborhoods" } },
        { "name": "Cultural venues", "request": { "method": "GET", "url": "{{baseUrl}}/cultural-venues" } },
        { "name": "Entertainment", "request": { "method": "GET", "url": "{{baseUrl}}/entertainment-activities" } },
        { "name": "Airports", "request": { "method": "GET", "url": "{{baseUrl}}/airports" } },
        { "name": "Embassies", "request": { "method": "GET", "url": "{{baseUrl}}/embassies" } },
        {
          "name": "Transport providers",
          "request": {
            "method": "GET",
            "url": "{{baseUrl}}/transport-providers",
            "description": "Subtype category values in data: `airline` | `travel_agency`"
          }
        },
        { "name": "Medical destinations", "request": { "method": "GET", "url": "{{baseUrl}}/medical/destinations" } },
        { "name": "Medical centers", "request": { "method": "GET", "url": "{{baseUrl}}/medical/centers" } },
        { "name": "Medical specialties", "request": { "method": "GET", "url": "{{baseUrl}}/medical/specialties" } }
      ]
    },
    {
      "name": "Events & Experiences",
      "item": [
        {
          "name": "Events",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/events?status=upcoming&city_id=&category_id=&from=&to=&is_free=&price_max=&q=&per_page=15",
              "host": ["{{baseUrl}}"],
              "path": ["events"],
              "query": [
                {
                  "key": "status",
                  "value": "upcoming",
                  "description": "Allowed values: `draft` | `upcoming` | `ongoing` | `ended`"
                },
                { "key": "city_id", "value": "", "description": "Optional city id" },
                { "key": "category_id", "value": "", "description": "Optional event category id" },
                { "key": "from", "value": "", "description": "Optional start date (YYYY-MM-DD)" },
                { "key": "to", "value": "", "description": "Optional end date (YYYY-MM-DD)" },
                { "key": "is_free", "value": "", "description": "Optional `1` / `0`" },
                { "key": "price_max", "value": "", "description": "Optional max price_from" },
                { "key": "q", "value": "", "description": "Optional bilingual name search" },
                { "key": "per_page", "value": "15", "description": "Pagination size" }
              ]
            }
          }
        },
        {
          "name": "Event show",
          "request": {
            "method": "GET",
            "url": "{{baseUrl}}/events/{{event_id}}"
          }
        },
        { "name": "Tour guides", "request": { "method": "GET", "url": "{{baseUrl}}/tour-guides" } },
        {
          "name": "Event organizers",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/event-organizers?kind=&q=&per_page=15",
              "host": ["{{baseUrl}}"],
              "path": ["event-organizers"],
              "query": [
                { "key": "kind", "value": "", "description": "Optional: `event` | `celebration` | `both`" },
                { "key": "q", "value": "", "description": "Optional bilingual name search" },
                { "key": "per_page", "value": "15", "description": "Pagination size" }
              ]
            }
          }
        },
        {
          "name": "Celebration venues",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/celebration-venues?city_id=&venue_style=&q=&per_page=15",
              "host": ["{{baseUrl}}"],
              "path": ["celebration-venues"],
              "query": [
                { "key": "city_id", "value": "", "description": "Optional city id" },
                { "key": "venue_style", "value": "", "description": "Optional: traditional|modern|beach|mountain|luxury|hall" },
                { "key": "q", "value": "", "description": "Optional bilingual name search" },
                { "key": "per_page", "value": "15", "description": "Pagination size" }
              ]
            }
          }
        },
        {
          "name": "Experiences",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/experiences?city_id=&tour_guide_id=&per_page=15",
              "host": ["{{baseUrl}}"],
              "path": ["experiences"],
              "query": [
                { "key": "city_id", "value": "", "description": "Optional city id" },
                { "key": "tour_guide_id", "value": "", "description": "Optional tour guide id" },
                { "key": "per_page", "value": "15", "description": "Pagination size" }
              ]
            }
          }
        },
        {
          "name": "Travel deals",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/travel-deals?city_id=&deal_type_id=&per_page=15",
              "host": ["{{baseUrl}}"],
              "path": ["travel-deals"],
              "query": [
                { "key": "city_id", "value": "", "description": "Optional city id" },
                { "key": "deal_type_id", "value": "", "description": "Optional deal type id" },
                { "key": "per_page", "value": "15", "description": "Pagination size" }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Traveler Essentials",
      "item": [
        {
          "name": "Important numbers",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/important-numbers?city_id=&category=&per_page=50",
              "host": ["{{baseUrl}}"],
              "path": ["important-numbers"],
              "query": [
                { "key": "city_id", "value": "", "description": "Includes nationwide + city-specific numbers" },
                { "key": "category", "value": "", "description": "emergency|police|ambulance|fire|utility|tourism|other" },
                { "key": "per_page", "value": "50", "description": "Pagination size" }
              ]
            }
          }
        },
        {
          "name": "Videos",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/videos?city_id=&q=&per_page=15",
              "host": ["{{baseUrl}}"],
              "path": ["videos"],
              "query": [
                { "key": "city_id", "value": "", "description": "Optional city id" },
                { "key": "q", "value": "", "description": "Optional bilingual title search" },
                { "key": "per_page", "value": "15", "description": "Pagination size" }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "CMS & Climate & Investment",
      "item": [
        {
          "name": "CMS sections",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/cms/sections?page_key=about-syria&group_key=",
              "host": ["{{baseUrl}}"],
              "path": ["cms", "sections"],
              "query": [
                {
                  "key": "page_key",
                  "value": "about-syria",
                  "description": "Seeded: `about-syria` | `home` | `terms` | `privacy` | `history-heritage` | `arts-culture` | `celebrations`"
                },
                { "key": "group_key", "value": "", "description": "Seeded: `intro` | `culture` | `hero` | `body` | `crafts` | `music` | `guide`" }
              ]
            }
          }
        },
        { "name": "Country facts", "request": { "method": "GET", "url": "{{baseUrl}}/cms/country-facts" } },
        { "name": "Historical events", "request": { "method": "GET", "url": "{{baseUrl}}/cms/historical-events" } },
        { "name": "Seasons", "request": { "method": "GET", "url": "{{baseUrl}}/climate/seasons" } },
        {
          "name": "Live forecast",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/climate/forecast?city_id=1",
              "host": ["{{baseUrl}}"],
              "path": ["climate", "forecast"],
              "query": [
                { "key": "city_id", "value": "1", "description": "Required city id with coordinates" }
              ]
            }
          }
        },
        {
          "name": "Map POIs",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/map/pois?north=33.6&south=33.4&east=36.4&west=36.1&types=destination,restaurant&limit=100",
              "host": ["{{baseUrl}}"],
              "path": ["map", "pois"],
              "query": [
                { "key": "north", "value": "33.6", "description": "Required north latitude" },
                { "key": "south", "value": "33.4", "description": "Required south latitude" },
                { "key": "east", "value": "36.4", "description": "Required east longitude" },
                { "key": "west", "value": "36.1", "description": "Required west longitude" },
                { "key": "types", "value": "destination,restaurant", "description": "Optional comma-separated place types" },
                { "key": "limit", "value": "100", "description": "Optional max markers (max 300)" }
              ]
            }
          }
        },
        {
          "name": "Assistant chat",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept-Language", "value": "en" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"message\": \"What are emergency numbers in Syria?\",\n  \"locale\": \"en\"\n}"
            },
            "url": "{{baseUrl}}/assistant/chat"
          }
        },
        {
          "name": "Weather tips",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/climate/weather-tips?season_id=",
              "host": ["{{baseUrl}}"],
              "path": ["climate", "weather-tips"],
              "query": [
                { "key": "season_id", "value": "", "description": "Optional season id filter" }
              ]
            }
          }
        },
        {
          "name": "FAQs",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/faqs?scope=general",
              "host": ["{{baseUrl}}"],
              "path": ["faqs"],
              "query": [
                {
                  "key": "scope",
                  "value": "general",
                  "description": "Allowed/seeded values: `general` | `medical` | `services`"
                }
              ]
            }
          }
        },
        { "name": "Investment sectors", "request": { "method": "GET", "url": "{{baseUrl}}/investment/sectors" } },
        {
          "name": "Investment request (guest)",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Investor Demo\",\n  \"email\": \"invest@example.com\",\n  \"phone\": \"+963900123456\",\n  \"message\": \"Interested in tourism sector\",\n  \"sector_id\": 1\n}"
            },
            "url": "{{baseUrl}}/investment/requests"
          }
        }
      ]
    },
    {
      "name": "Engagement (auth)",
      "item": [
        {
          "name": "List favorites",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
            "url": "{{baseUrl}}/favorites"
          }
        },
        {
          "name": "Toggle favorite",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reviewable_id\": {{reviewable_id}}\n}"
            },
            "url": "{{baseUrl}}/favorites/toggle"
          }
        },
        {
          "name": "List reviews",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/reviews?reviewable_id={{reviewable_id}}",
              "host": ["{{baseUrl}}"],
              "path": ["reviews"],
              "query": [
                { "key": "reviewable_id", "value": "{{reviewable_id}}", "description": "Required. Reviewable id" }
              ]
            }
          }
        },
        {
          "name": "Create review",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Authorization", "value": "Bearer {{token}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reviewable_id\": {{reviewable_id}},\n  \"rating\": 4,\n  \"comment\": \"Nice place\"\n}"
            },
            "url": "{{baseUrl}}/reviews",
            "description": "rating allowed values: `1` | `2` | `3` | `4` | `5`"
          }
        }
      ]
    }
  ]
}
