# GET /v2/charter/services/list

# Charter: List Service Categories &amp; Services

این اندپوینت برای دریافت لیست دسته‌بندی‌های خدمات چارتر به‌همراه سرویس‌های زیرمجموعه هر دسته استفاده می‌شود. داده‌ها از جداول `charter_service_categories` و `charter_services` بارگذاری شده و فقط مواردی که `status = 1` دارند بازگردانده می‌شوند.

<div class="api-docs" id="bkmrk-"></div>## Request Overview

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Fcharter%2Fser"><div class="endpoint-info"><div>**URL:** `/v2/charter/services/list`</div><div>**Method:** <span class="method-get">GET</span></div><div>**Controller:** CharterController@listServicesCharter</div><div>**Middleware Stack:** authWithJwt</div></div></div>## Access Control

<div class="api-docs" id="bkmrk-jwt-%D9%85%D8%B9%D8%AA%D8%A8%D8%B1-%D9%84%D8%A7%D8%B2%D9%85-%D8%A7%D8%B3%D8%AA-%D9%87">- JWT معتبر لازم است
- هیچ محدودیت branch یا core middleware وجود ندارد
- اطلاعات اپراتور از طریق JWT تزریق می‌شود: <div class="code-inline">$request-&gt;get('operator')</div>

</div>## Query Parameters

این اندپوینت هیچ پارامتر ورودی (Query / Body) ندارد.

<div class="api-docs" id="bkmrk--1"></div>## Response Structure

خروجی موفق شامل کلیدهای زیر است:

<div class="api-docs" id="bkmrk-field-type-descripti"><table class="schema-table"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>status</td><td>boolean</td><td>وضعیت موفقیت درخواست</td></tr><tr><td>time</td><td>integer</td><td>Unix timestamp زمان تولید پاسخ</td></tr><tr><td>data</td><td>array</td><td>آرایه‌ای از دسته‌بندی‌ها به همراه سرویس‌های هر دسته</td></tr></tbody></table>

</div>## Category Object Schema

<div class="api-docs" id="bkmrk-field-type-descripti-1"><table class="schema-table"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>integer</td><td>شناسه دسته‌بندی</td></tr><tr><td>title.fa</td><td>string</td><td>عنوان فارسی</td></tr><tr><td>title.en</td><td>string</td><td>عنوان انگلیسی</td></tr><tr><td>services</td><td>array</td><td>لیست سرویس‌های زیرمجموعه (در صورت نبود، آرایه خالی)</td></tr></tbody></table>

</div>## Service Object Schema

<div class="api-docs" id="bkmrk-field-type-descripti-2"><table class="schema-table"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>integer</td><td>شناسه سرویس</td></tr><tr><td>title</td><td>string</td><td>عنوان سرویس</td></tr><tr><td>type</td><td>string</td><td>نوع سرویس</td></tr><tr><td>description</td><td>string|null</td><td>توضیحات سرویس (می‌تواند null باشد)</td></tr></tbody></table>

</div>## Core Processing Logic

```
$categories = DB::table('charter_service_categories')
    ->select('id','title_fa','title_en')
    ->where('status', 1)
    ->get();

foreach ($categories as $category) {
    $services = DB::table('charter_services')
        ->select('id','title','type','description')
        ->where('category', $category->id)
        ->where('status', 1)
        ->get();
}
  
```

<div class="api-docs" id="bkmrk-%D8%A7%D8%A8%D8%AA%D8%AF%D8%A7-%D8%AF%D8%B3%D8%AA%D9%87%E2%80%8C%D9%87%D8%A7-%D8%A8%D8%A7-sta">- ابتدا دسته‌ها با `status=1` واکشی می‌شوند
- برای هر دسته، سرویس‌های فعال لود می‌شوند
- اگر سرویس وجود نداشته باشد → آرایه خالی برگردانده می‌شود
- خروجی نهایی شامل تمام دسته‌ها + سرویس‌هایشان است

</div>## Response (Success)

```
{
  "status": true,
  "time": 1710000000,
  "data": [
    {
      "id": 1,
      "title": {
        "fa": "عنوان فارسی",
        "en": "English Title"
      },
      "services": [
        {
          "id": 100,
          "title": "VIP Lounge",
          "type": "lounge",
          "description": "Access to VIP lounge"
        }
      ]
    }
  ]
}
  
```

<div class="api-docs" id="bkmrk--2"></div>## Response (Error)

در صورت Exception (به دلیل وجود try/catch):

```
{
  "status": false,
  "time": 1710000000,
  "message": "Exception message here",
  "trace": [ ... ]
}
  
```

<div class="api-docs" id="bkmrk--3"></div>## Flowchart

<div class="api-docs" id="bkmrk-validate-jwt-%E2%86%93-load-"><div class="flowchart"><div class="flow-item">Validate JWT</div><div class="flow-arrow">↓</div><div class="flow-item">Load Active Categories</div><div class="flow-arrow">↓</div><div class="flow-item">For Each Category → Load Services</div><div class="flow-arrow">↓</div><div class="flow-item">Assemble Response Array</div><div class="flow-arrow">↓</div><div class="flow-item">Return JSON (status=true)</div></div></div>