# GET /b2c/v1/base/data

<div class="api-docs" id="bkmrk-">  <div class="endpoint-section">  
</div></div>## Get Base Data (Cities, Trains, Configs)

این اندپوینت مرکزی برای دریافت داده‌های پایه (Base Data) و لیست‌های انتخابی (Select Options) در سیستم استفاده می‌شود.   
<span style="color: #0275d8; font-weight: bold;">عملکرد داینامیک:</span> خروجی این سرویس کاملاً وابسته به پارامتر ورودی `subject` است. این متد برای پر کردن لیست شهرها، ایستگاه‌های قطار، فرودگاه‌ها و تنظیمات هتل کاربرد دارد.

<div class="api-docs" id="bkmrk--1"><div class="endpoint-section">  
</div>  
---

  </div># Fetch Base Data

<div class="api-docs" id="bkmrk-url%3A-%2Fb2c%2Fv1%2Fbase%2Fda"><div class="endpoint-info"><div>**URL:** `/b2c/v1/base/data`</div><div>**Method:** <span class="method-get">GET</span></div><div>**Controller:** V1BaseController@baseData</div><div>**Auth:** Public / Optional</div></div></div>### Query Parameters (پارامترهای ورودی)

<div class="api-docs" id="bkmrk-parameter-type-requi"><table class="schema-table" dir="rtl"><thead><tr><th>Parameter</th><th>Type</th><th>Required</th><th>Description</th></tr></thead><tbody><tr><td dir="ltr">subject</td><td>String</td><td><span style="color: red;">Yes\*</span></td><td>نوع داده درخواستی. مقادیر مجاز: - `cities` (لیست شهرها)
- `train_companies` (شرکت‌های ریلی)
- `train_types` (انواع قطار: ۴ ستاره و...)
- `train_stations` (ایستگاه‌های قطار)
- `room_rate` (انواع نرخ اتاق هتل)
- `room_view` (انواع چشم‌انداز اتاق)
- `airports` (لیست فرودگاه‌ها)

</td></tr><tr><td dir="ltr">search</td><td>String</td><td>No</td><td>عبارت جستجو (برای شهرها، ایستگاه‌ها و شرکت‌ها).</td></tr><tr><td dir="ltr">state</td><td>Integer</td><td>No</td><td>شناسه استان (جهت فیلتر کردن شهرها یا ایستگاه‌ها بر اساس استان).</td></tr><tr><td dir="ltr">type</td><td>String</td><td>No</td><td>فقط برای `subject=cities` کاربرد دارد.  
اگر مقدار `train` ارسال شود، فقط شهرهایی که دارای ایستگاه قطار هستند بازگردانده می‌شوند.</td></tr><tr><td dir="ltr">action</td><td>String</td><td>No</td><td>حالت خاص: اگر مقدار `airports` باشد، فرمت خروجی جیسون تغییر می‌کند.</td></tr><tr><td dir="ltr">route</td><td>Integer</td><td>No</td><td>فقط برای فرودگاه‌ها (1 یا 2) - جهت سورت یا فیلتر خاص (در کد فعلی منطق مشابه است).</td></tr></tbody></table>

  </div>### Response Structure

ساختار پاسخ بسته به `subject` متفاوت است، اما به طور کلی در فرمت زیر است:

```json
{
    "items": [ ...Array of Data... ],
    "meta": {
        "timestamp": 1702123456
    }
}
```

### Examples per Subject (مثال‌ها بر اساس موضوع)

**۱. شهرها (subject=cities):**

```json
{
    "items": [
        {
            "id": 10,
            "title": { "fa": "تهران", "en": "Tehran" },
            "category": {
                "id": 5,
                "title": { "fa": "تهران", "en": "Tehran" } // نام استان
            }
        }
    ],
    "meta": { ... }
}
```

**۲. انواع قطار (subject=train\_types):**

```json
{
    "items": [
        {
            "id": 1,
            "title": { "fa": "4 ستاره اتوبوسی", "en": false },
            "details": {
                "type": "bus",
                "star": 4
            }
        }
    ],
    "meta": { ... }
}
```

**۳. نرخ/دید اتاق (subject=room\_rate / room\_view):**

```json
{
    "items": [
        {
            "title": { "fa": "برد", "en": "Board" },
            "status": "1",
            "selected": "0"
        }
    ],
    "meta": { ... }
}
```

**۴. حالت خاص فرودگاه (action=airports):**

اگر پارامتر `action=airports` ارسال شود، ساختار پاسخ متفاوت است:

```json
{
    "status": true,
    "time": 1702123456,
    "data": {
        "titles": [
            {
                "id": 1,
                "iata": "MHD",
                "title": "Mashhad",
                "title_fa": "مشهد",
                "country": 1,
                "group_by": "ایران",
                "state": "خراسان رضوی"
                ...
            }
        ]
    }
}
```

<div class="api-docs" id="bkmrk--2">---

  </div>### Technical Logic

<div class="api-docs" id="bkmrk-request-%28get%29-%E2%86%93-chec"><div class="flowchart"><div class="flow-item">Request (GET)</div><div class="flow-arrow">↓</div><div class="flow-item-decision">Check `subject`?</div><div style="display: flex; flex-wrap: wrap; justify-content: center; gap: 10px;"><div style="border: 1px solid #ddd; padding: 5px; border-radius: 4px; width: 140px;">**cities**  
<span style="font-size: 10px;">If type='train' → Filter IDs from `train\_stations`</span>  
<span style="font-size: 10px;">Search/State Filter</span></div><div style="border: 1px solid #ddd; padding: 5px; border-radius: 4px; width: 140px;">**train\_\***  
<span style="font-size: 10px;">Query `train\_companies`, `types`, or `stations`</span></div><div style="border: 1px solid #ddd; padding: 5px; border-radius: 4px; width: 140px;">**room\_\***  
<span style="font-size: 10px;">Decode JSON from `hotel\_titles` table</span></div><div style="border: 1px solid #ddd; padding: 5px; border-radius: 4px; width: 140px;">**airports**  
<span style="font-size: 10px;">Join Countries &amp; States</span></div></div><div class="flow-arrow">↓</div><div class="flow-item-decision">Is `action` == 'airports'?</div><div style="display: flex; justify-content: space-between; width: 500px; margin: 0 auto;"><div style="text-align: center;"><div class="flow-arrow">↓ Yes</div><div class="flow-item-process">**Custom Format**  
{"status": true, "data": ...}</div></div><div style="text-align: center;"><div class="flow-arrow">↓ No</div><div class="flow-item-success">**Standard Format**  
{"items": [...], "meta": ...}</div></div></div></div></div>