# Search API

### 1. API lấy danh sách sân bay <a href="#id-1-api-lay-danh-sach-san-bay" id="id-1-api-lay-danh-sach-san-bay"></a>

GET: /metasrv/api/\_search/airports

Tìm kiếm sân bay dựa theo từ khóa liên quan hoặc mã quốc gia/vùng lãnh thổ

Cho phép sắp xếp kết quả trả về

<details>

<summary>Parameters</summary>

* query `query` (String, Optional)

  Từ khóa tìm kiếm khu vực / tên sân bay (VD: SGN, Vietnam, Tokyo)
* country `query` (String, Optional)

  Mã quốc gia / vùng lãnh thổ (VD: VN)
* page `query` (Integer, Optional)

  Số trang đang muốn lấy kết quả (VD: 0)
* size `query` (Integer, Optional)

  Số kết quả muốn lấy trong 1 trang (VD: 20)
* sort `query` (String, Optional)

  Sắp xếp kết quả theo giá trị của thuộc tính trả về tăng dần hay giảm dần (VD: propertiesName,desc / propertiesName,asc)

</details>

#### Example

```
?query=ha&country=VN&page=0&size=20&sort=name,desc
```

#### Response <a href="#response" id="response"></a>

**Code 200**

> OK

<details>

<summary>Model</summary>

`Chỉ định danh những trường/field cần thiết`

* Array\[AirportDTO] (Optional)

  Thông tin danh sách sân bay trả về

  * id (Long, Optional)

    Mã định danh danh sách sân bay
  * code (String, Optional)

    Mã ký hiệu sân bay
  * name (String, Optional)

    Tên sân bay
  * cityCode (String, Optional)

    Mã ký hiệu thành phố
  * city (String, Optional)

    Tên thành phố
  * countryCode (String, Optional)

    Mã ký hiệu quốc gia
  * country (String, Optional)

    Tên quốc gia
  * timeZone (Integer, Optional)

    Múi giờ
  * location (String, Optional)

    Vị trí
  * name2 (String, Optional)

    Tên sân bay tiếng anh (tên khác)
  * city2 (String, Optional)

    Tên thành phố tiếng anh (tên khác)

</details>

***

### 2. API tìm kiếm vé máy bay <a href="#id-2-api-tim-kiem-ve-may-bay" id="id-2-api-tim-kiem-ve-may-bay"></a>

GET: /api/air-tickets/low-fare-search-async

Tìm kiếm chuyến bay theo điểm khởi hành và điểm kết thúc / theo ngày giờ

<details>

<summary>Parameters</summary>

* origin\_code `query` (String, Required)

  Mã sân bay điểm đi

  VD: Sân bay ở Hồ Chí Minh có mã là SGN
* destination\_code `query` (String, Required)

  Mã sân bay điểm đến

  VD: Sân bay ở Hà Nội có mã là HAN
* departure\_date `query` (String, Required)

  Ngày khởi hành

  Định dạng theo MM-dd-YYYY

  VD: 07-07-2021
* returnure\_date `query` (String, Required)

  Ngày về

  Định dạng theo MM-dd-YYYY

  VD: 08-20-2021
* cabin\_class `query` (String, Required)

  Hạng ghế vé

  Truyền giá trị là E
* route\_type `query` (String, Required)

  Loại hành trình:

  * `ONEWAY`: Một chiều
  * `ROUNDTRIP`: Khứ hồi

  Nếu không truyền thì có giá trị là `ONEWAY`
* aduts\_qtt `query` (Integer, Required)

  Số lượng hành khách là người lớn ( `12 tuổi trở lên` )

  Nếu không truyền giá trị mặc định là 1
* children\_qtt `query` (Integer, Required)

  Số lượng hành khách là trẻ em ( `từ 2 tuổi và nhỏ hơn 12 tuổi` )

  Nếu không truyền giá trị mặc định là 0
* infants\_qtt `query` (Integer, Required)

  Số lượng hành khách là trẻ sơ sinh ( `dưới 2 tuổi` )

  Nếu không truyền giá trị mặc định là 0
* skip\_filter `query` (Boolean, Optional)\
  Mặc định là false sẽ trả về kết quả groupPricedItineraries thông tin danh sách hành trình trả về theo kết quả tìm kiếm. Ngược lại sẽ không hiển thị.
* time `query` (String, Required)

  Thời điểm gọi API (UnixTimeStamp)

  VD: 1625545845
* key `query` (String, Required)

  Key để checksum

  Cách tạo giá trị:

  `MAC (Message Authentication Code)-> SHA256(<origin_code><destination_code><departure_time><returnure_date><cabin_class><route_type><aduts_qtt><children_qtt><infants_qtt><page><size><time>, 'Gotadi')`
* include-equivfare `query` (Boolean, Optional)

  Yêu cầu trả thêm thông tin phí xuất vé (EquivFare)
* suppliers `query` (Array\[string])\
  VN (vietnamairline), VJ (Vietjet), QH  &#x20;(Bamboo), 1A….
* page `query` (Integer, Required)

  Số trang đang muốn lấy kết quả (VD: 0)
* size `query` (Integer, Required)

  Số kết quả muốn lấy trong 1 trang (VD: 20)
* sort `query` (String, Optional)

  Sắp xếp kết quả theo giá trị của thuộc tính trả về tăng dần hay giảm dần (VD: propertiesName,desc / propertiesName,asc)

</details>

#### Response <a href="#response_1" id="response_1"></a>

**Code 200**

> OK

<details>

<summary>Model</summary>

`Chỉ định danh những trường/field cần thiết`

* searchId (String, Required)

  Mã tham chiếu đến search vé máy bay, được lấy từ kết quả search vé máy bay
* departureSearchId (String, Required)

  Mã tham chiếu đến search chiều đi vé máy bay

  Được lấy từ searchId
* returnSearchId (String, Required)

  Mã tham chiếu đến search chiều về vé máy bay

  Được lấy từ searchID kết hợp với `-R` ở phía cuối
* groupPricedItineraries (Array\[GroupPricedItineraryDTO], Optional)

  Thông tin danh sách hành trình trả về theo kết quả tìm kiếm

  * airSupplier (String, Required)

    Hãng cung cấp (VietnamAirline - VNA, VjetJet - VJ, BamBoo - QH, …)
  * aircraft (String, Optional)

    Loại máy bay (Airbus A330, Boeing 787, .....)
  * airline (String, Optional)

    Hãng bay (VJ, VNA, …)
  * airlineName (String, Optional)

    Tên hãng bay (Vietjet Air, Vietnam Airline, Bamboo, …)
  * arrivalDateTime (String, Required)

    Ngày giờ đến, sử dụng múi giờ UTC/GMT+7
  * departureDateTime (String, Required)

    Ngãy giờ bay, sử dụng múi giờ UTC/GMT+7
  * destinationLocationCode (String, Optional)

    Mã thành phố kết thúc chuyến bay
  * destinationCountry (String, Optional)

    Tên quốc gia kết thúc chuyến bay
  * destinationCountryCode (String, Optional)

    Mã quốc gia kết thúc chuyến bay
  * destinationCity (String, Optional)

    Tên thành phố kết thúc chuyến bay
  * destinationLocationName (String, Optional)

    Tên sân bay ở điểm dừng
  * flightNo (String, Optional)

    Số hiệu máy bay
  * flightNo (String, Optional)

    Số hiệu máy bay
  * flightType (String, Optional)

    Loại hình bay bay trong nước hay quốc tế

    Loại hình bay:

    * `DOMESTIC`: trong nước
    * `INTERNATIONAL`: quốc tế
  * groupId (String, Required)

    Mã định danh hành trình trong danh sách hành trình trả về theo kết quả tìm kiếm
  * originCity (String, Optional)

    Tên thành phố ở điểm khởi hành
  * originCountry (String, Optional)

    Tên quốc gia ở điểm khởi hành
  * originCountryCode (String, Optional)

    Mã ký hiệu quốc gia ở điểm khởi hành
  * originLocationCode (String, Optional)

    Mã thành phố khởi hành chuyến bay
  * originLocationName (String, Optional)

    Tên sân bay ở điểm khởi hành
  * totalPricedItinerary (Integer, Required)

    Tổng số lượng hành trình chi tiết
  * pricedItineraries (Array\[PricedItineraries], Required)

    Chi tiết hành trình

    * airItineraryPricingInfo (AirItineraryPricingInfo, Required)

      Thông tin giá chi tiết của hành trình

      * adultFare (FareBreakdown, Required)
        * passengerFare (PassengerFare, Required)

          Thông tin giá vé người lớn

          * baseFare (FareInfo, required)

            Thông tin giá vé cơ bản

            * amount (Double, Required)

              Số tiền
            * decimalPlaces (Integer, Optional)

              Vị trí số thập phân làm tròn đến
          * equivFare (FareInfo, Optional)

            Tương tự như baseFare

            Thông tin phí xuất vé
          * serviceTax (FareInfo, Required)

            Tương tự như baseFare

            Thông tin phí dịch vụ
          * totalFare (FareInfo, Required)

            Tương tự như baseFare

            Thông tin tổng cộng giá vé
          * surcharges (Array\[Surcharge], Required)

            Thông tin phụ phí tính trên mỗi booking / mỗi segment
        * passengerTypeQuantities (PassengerTypeQuantities, Optional)

          Số lượng / loại của hành khách

          * code (String, Required)

            Mã định danh người lớn / trẻ em / trẻ sơ sinh

            Bao gồm: `ADT` - người lớn / `CHD` - trẻ em / `INF` - trẻ sơ sinh
          * quantity (Integer, Required)

            Số lượng người lớn / trẻ em / trẻ sơ sinh
      * childFare (PassengerFare, Optional)

        Thông tin giá vé trẻ em

        Tương tự thông tin giá vé người lớn
      * infantFare (PassengerFare, Optional)

        Thông tin giá vé trẻ sơ sinh

        Tương tự thông tin giá vé người lớn
      * itinTotalFare (PassengerFare, Required)

        Thông tin tổng giá vé của hành trình

        Tương tự thông tin giá vé người lớn
      * fareSourceCode (String, Required)

        Thông tin mã định danh hành trình

        Được sử dụng để đi lấy thông tin điều kiện vé
    * allowHold (Boolean, Required)

      Thông tin cho phép giữ đặt chỗ hay không
    * cabinClassName (String, Required)

      Thông tin hạng ghế:

      * `ECONOMY` - ghế phổ thông
      * `PREMIUM` - ghế phổ thông đặc biệt
      * `BUSINESS` - ghế thương gia
    * fightNo (String, Optional)

      Thể hiện thông tin số hiệu máy bay
    * originDestinationOptions (Array(OriginDestinationOptions), Required)

      Thông tin chặn / dừng của hành trình

      * flightDirection (String, Required)

        Thể hiện thông tin chiều bay của hành trình

        * `D` - chiều đi
        * `R` - chiều về
      * journeyDuration (Integer, Required)

        Thể hiện thời gian bay
      * flightSegments (Array(FlightSegments), Required)

        Thể hiện thông tin chi tiết điểm khởi hành / điểm kết thúc trong hành trình
* page (AirPage, Required)

  Đối tượng mô tả các thông tin về phân trang.

  Số thứ tự của mỗi trang được trả về, phần tử của mỗi trang, tổng số trang
* duration (Integer, Optional),
* errors (Array\[Error], Optional),
* infos (Array\[Info], Optional),
* success (Boolean, Optional),
* textMessage (String, Optional)

</details>

***

### 3. API lấy thông tin danh sách bộ lọc <a href="#id-3-api-lay-thong-tin-danh-sach-bo-loc" id="id-3-api-lay-thong-tin-danh-sach-bo-loc"></a>

POST: /api/air-tickets/filter-options

Lấy danh sách các giá trị có thể tham áp dụng trên bộ lọc trên kết quả tìm kiếm

<details>

<summary>Request Body</summary>

* searchId (String, Required)

  Dữ liệu dùng để tham chiếu đến kết quả tìm kiếm

  Dữ liệu này lấy từ kết quả trả về của tìm vé máy bay
* departureItinerary (AirItineraryInfo, Optional)

  Thông tin vé chiều đi trong trường hợp lấy filter-options cho vé chiều về

  * airlineCode (String, Required)

    Ký hiệu hãng bay

    * `VN`: VietNam Airline
    * `VJ`: VietJet
    * `QH`: Bamboo
    * `BL`: Pacific Airline …
  * groupId (String, Required)

    Mã định danh hành trình trong danh sách hành trình trả về theo kết quả tìm kiếm
  * fareSourceCode (String, Required)

    Thông tin mã định danh hành trình
  * supplierCode (String, Required)

    Mã hãng cũng cấp
  * searchId (String, Required)

    Dữ liệu dùng để tham chiếu đến kết quả tìm kiếm

</details>

#### Response <a href="#response_2" id="response_2"></a>

**Code 200**

> OK

<details>

<summary>Model</summary>

`Chỉ định danh những trường/field cần thiết`

* searchId (String, Required)

  Mã tham chiếu đến search vé máy bay, được lấy từ kết quả search vé máy bay
* itineraryFilter (ItineraryFilter, Required)

  Thông tin thể hiện các giá trị có thể áp dụng trên kết quả bộ lọc tìm kiếm

  * airlineOptions (Array\[String], Optional)

    Thông tin thể hiện các hãng bay với vé có giá thấp nhất
  * cabinClassOptions (Array\[String], Optional)

    Thông tin thể hiện hạng ghế hiện hành
  * stopOptions (Array\[String], Optional)

    Thông tin thể hiện chặn dừng hiện hành
  * filterToPrice (Double, Optional)

    Thông tin thể hiện giá vé cao nhất hiện hành
  * filterFromPrice (Double, Optional)

    Thông tin thể hiện giá vé thấp nhất hiện hành
* duration (Integer, Optional),
* errors (Array\[Error], Optional),
* infos (Array\[Info], Optional),
* success (Boolean, Optional),
* textMessage (String, Optional)

</details>

***

### 4.API lọc / sắp xếp kết quả tìm kiếm chuyến bay <a href="#id-4api-loc-sap-xep-ket-qua-tim-kiem-chuyen-bay" id="id-4api-loc-sap-xep-ket-qua-tim-kiem-chuyen-bay"></a>

POST: /api/air-tickets/filter-availability

Lọc và sắp xếp kết quả tìm kiếm chuyến bay

#### Paramaters <a href="#paramaters" id="paramaters"></a>

<details>

<summary>Parameters</summary>

* include-equivfare `query` (Boolean, Optional)

  Yêu cầu trả thêm thông tin phí xuất vé
* page `query` (Integer, Optional)

  Số trang đang muốn lấy kết quả (VD: 0)
* size `query` (Integer, Optional)

  Số kết quả muốn lấy trong 1 trang (VD: 20)
* sort `query` (String, Optional)

  Sắp xếp kết quả theo giá trị của thuộc tính trả về tăng dần hay giảm dần (VD: propertiesName,desc / propertiesName,asc)

</details>

#### Request Body <a href="#request-body_1" id="request-body_1"></a>

<details>

<summary>Request Body</summary>

* searchId (String, Required)

  Dữ liệu dùng để tham chiếu đến kết quả tìm kiếm

  Dữ liệu này lấy từ kết quả trả về của tìm vé máy bay
* departureItinerary (AirItineraryInfo, Optional)

  Thông tin vé chiều đi trong trường hợp lấy filter-availability cho vé chiều về

  * airlineCode (String, Required)

    Ký hiệu hãng bay

    * `VN`: VietNam Airline
    * `VJ`: VietJet
    * `QH`: Bamboo
    * `BL`: Pacific Airline …
  * groupId (String, Optional)

    Mã định danh hành trình trong danh sách hành trình trả về theo kết quả tìm kiếm
  * fareSourceCode (String, Required)

    Thông tin mã định danh hành trình
  * supplierCode (String, Required)

    Mã hãng cũng cấp
  * searchId (String, Required)

    Dữ liệu dùng để tham chiếu đến kết quả tìm kiếm
* filter (ItineraryFilter, Required)

  Dùng để đưa các tiêu chí lọc và sắp xếp mong muốn vào

  * cabinClassOptions (Array\[String], Optional)

    Thông tin hạng ghế muốn đưa vào lọc và sắp xếp
  * step (String, Required)

    Thông tin dùng để phân biệt giữa chiều đi và chiều về

    * `1` : chiều đi
    * `2` : chiều về
  * flightType (String, Required)

    Thông tin loại chuyến bay

    * `DOMESTIC`: trong nước
    * `INTERNATIONAL`: quốc tế
  * stopOption (Array\[String], Optional)

    Thông tin điểm dừng
  * airlineOptions (Array\[String], Optional)

    Thông tin hãng bay
  * departureDateTimeOptions (Array\[String], Optional)

    Thông tin giờ khởi hành bắt đầu ở khoảng hay thời điểm nào

    VD: departureDateTimeOptions: `["+18", "+12-18"]`

    * `+18`: từ 18h đến 24h
    * `+12-18`: từ 12h đến 18h
  * arrivalDateTimeReturnOptions (Array\[String], Optional)

    Thông tin giờ kết thúc bắt đầu ở khoảng hay thời điểm nào

    VD: arrivalDateTimeReturnOptions: `["+18", "+12-18"]`

    * `+18`: từ 18h đến 24h
    * `+12-18`: từ 12h đến 18h

</details>

#### Response <a href="#response_3" id="response_3"></a>

**Code 200**

> OK

<details>

<summary>Model</summary>

`Chỉ định danh những trường/field cần thiết`

* searchId (String, Required)

  Mã tham chiếu đến search vé máy bay, được lấy từ kết quả search vé máy bay
* groupPricedItineraries (Array\[GroupPricedItineraryDTO], Optional)

  Thông tin danh sách hành trình trả về theo kết quả tìm kiếm

  * airSupplier (String, Required)

    Hãng cung cấp (VietnamAirline - VNA, VjetJet - VJ, BamBoo - QH, …)
  * aircraft (String, Optional)

    Loại máy bay (Airbus A330, Boeing 787, .....)
  * airline (String, Optional)

    Hãng bay (VJ, VNA, …)
  * airlineName (String, Optional)

    Tên hãng bay (Vietjet Air, Vietnam Airline, Bamboo, …)
  * arrivalDateTime (String, Required)

    Ngày giờ đến, sử dụng múi giờ UTC/GMT+7
  * departureDateTime (String, Required)

    Ngãy giờ bay, sử dụng múi giờ UTC/GMT+7
  * destinationLocationCode (String, Optional)

    Mã thành phố kết thúc chuyến bay
  * destinationCountry (String, Optional)

    Tên quốc gia kết thúc chuyến bay
  * destinationCountryCode (String, Optional)

    Mã quốc gia kết thúc chuyến bay
  * destinationCity (String, Optional)

    Tên thành phố kết thúc chuyến bay
  * destinationLocationName (String, Optional)

    Tên sân bay ở điểm dừng
  * flightNo (String, Optional)

    Số hiệu máy bay
  * flightNo (String, Optional)

    Số hiệu máy bay
  * flightType (String, Optional)

    Loại hình bay bay trong nước hay quốc tế

    Loại hình bay:

    * `DOMESTIC`: trong nước
    * `INTERNATIONAL`: quốc tế
  * groupId (String, Required)

    Mã định danh hành trình trong danh sách hành trình trả về theo kết quả tìm kiếm
  * originCity (String, Optional)

    Tên thành phố ở điểm khởi hành
  * originCountry (String, Optional)

    Tên quốc gia ở điểm khởi hành
  * originCountryCode (String, Optional)

    Mã ký hiệu quốc gia ở điểm khởi hành
  * originLocationCode (String, Optional)

    Mã thành phố khởi hành chuyến bay
  * originLocationName (String, Optional)

    Tên sân bay ở điểm khởi hành
  * totalPricedItinerary (Integer, Required)

    Tổng số lượng hành trình chi tiết
  * pricedItineraries (Array\[PricedItineraries], Required)

    Chi tiết hành trình

    * airItineraryPricingInfo (AirItineraryPricingInfo, Required)

      Thông tin giá chi tiết của hành trình

      * adultFare (FareBreakdown, Required)
        * passengerFare (PassengerFare, Required)

          Thông tin giá vé người lớn

          * baseFare (FareInfo, required)

            Thông tin giá vé cơ bản

            * amount (Double, Required)

              Số tiền
            * decimalPlaces (Integer, Optional)

              Vị trí số thập phân làm tròn đến
          * equivFare (FareInfo, Optional)

            Tương tự như baseFare

            Thông tin phí xuất vé
          * serviceTax (FareInfo, Required)

            Tương tự như baseFare

            Thông tin phí dịch vụ
          * totalFare (FareInfo, Required)

            Tương tự như baseFare

            Thông tin tổng cộng giá vé
          * surcharges (Array\[Surcharge], Required)

            Thông tin phụ phí tính trên mỗi booking / mỗi segment
        * passengerTypeQuantities (PassengerTypeQuantities, Optional)

          Số lượng / loại của hành khách

          * code (String, Required)

            Mã định danh người lớn / trẻ em / trẻ sơ sinh

            Bao gồm: `ADT` - người lớn / `CHD` - trẻ em / `INF` - trẻ sơ sinh
          * quantity (Integer, Required)

            Số lượng người lớn / trẻ em / trẻ sơ sinh
      * childFare (PassengerFare, Optional)

        Thông tin giá vé trẻ em

        Tương tự thông tin giá vé người lớn
      * infantFare (PassengerFare, Optional)

        Thông tin giá vé trẻ sơ sinh

        Tương tự thông tin giá vé người lớn
      * itinTotalFare (PassengerFare, Required)

        Thông tin tổng giá vé của hành trình

        Tương tự thông tin giá vé người lớn
      * fareSourceCode (String, Required)

        Thông tin mã định danh hành trình

        Được sử dụng để đi lấy thông tin điều kiện vé
    * allowHold (Boolean, Required)

      Thông tin cho phép giữ đặt chỗ hay không
    * cabinClassName (String, Required)

      Thông tin hạng ghế:

      * `ECONOMY` - ghế phổ thông
      * `PREMIUM` - ghế phổ thông đặc biệt
      * `BUSINESS` - ghế thương gia
    * fightNo (String, Optional)

      Thể hiện thông tin số hiệu máy bay
    * originDestinationOptions (Array(OriginDestinationOptions), Required)

      Thông tin chặn / dừng của hành trình

      * flightDirection (String, Required)

        Thể hiện thông tin chiều bay của hành trình

        * `D` - chiều đi
        * `R` - chiều về
      * journeyDuration (Integer, Required)

        Thể hiện thời gian bay
      * flightSegments (Array(FlightSegments), Required)

        Thể hiện thông tin chi tiết điểm khởi hành / điểm kết thúc trong hành trình
* page (AirPage, Required)

  Đối tượng mô tả các thông tin về phân trang.

  Số thứ tự của mỗi trang được trả về, phần tử của mỗi trang, tổng số trang
* duration (Integer, Optional),
* errors (Array\[Error], Optional),
* infos (Array\[Info], Optional),
* success (Boolean, Optional),
* textMessage (String, Optional)

</details>

***

### 5.API lấy danh sách vé mở bán trên một chuyến bay <a href="#id-5api-lay-danh-sach-ve-mo-ban-tren-mot-chuyen-bay" id="id-5api-lay-danh-sach-ve-mo-ban-tren-mot-chuyen-bay"></a>

POST: /api/air-tickets/group-itinerary/{id}

Lấy danh sách vé được mở bán trên một chuyến bay cụ thể

#### Paramaters <a href="#paramaters_1" id="paramaters_1"></a>

<details>

<summary>Parameters</summary>

* id `path` (String, Required)

  Dùng để tham chiếu đến danh sách các vé được mở bán trên một chuyến bay
* include-equivfare `query` (Boolean, Optional)

  Yêu cầu trả thêm thông tin phí xuất vé
* page `query` (Integer, Optional)

  Số trang đang muốn lấy kết quả (VD: 0)
* size `query` (Integer, Optional)

  Số kết quả muốn lấy trong 1 trang (VD: 20)
* sort `query` (String, Optional)

  Sắp xếp kết quả theo giá trị của thuộc tính trả về tăng dần hay giảm dần (VD: propertiesName,desc / propertiesName,asc)

</details>

#### Request Body <a href="#request-body_2" id="request-body_2"></a>

<details>

<summary>Request Body</summary>

* searchId (String, Required)

  Dữ liệu dùng để tham chiếu đến kết quả tìm kiếm

  Dữ liệu này lấy từ kết quả trả về của tìm vé máy bay
* departureItinerary (AirItineraryInfo, Optional)

  Thông tin vé chiều đi trong trường hợp lấy filter-availability cho vé chiều về

  * airlineCode (String, Required)

    Ký hiệu hãng bay

    * `VN`: VietNam Airline
    * `VJ`: VietJet
    * `QH`: Bamboo
    * `BL`: Pacific Airline …
  * groupId (String, Required)

    Mã định danh hành trình trong danh sách hành trình trả về theo kết quả tìm kiếm
  * fareSourceCode (String, Required)

    Thông tin mã định danh hành trình
  * supplierCode (String, Required)

    Mã hãng cũng cấp
  * searchId (String, Required)

    Dữ liệu dùng để tham chiếu đến kết quả tìm kiếm
* filter (ItineraryFilter, Required)

  Dùng để đưa các tiêu chí lọc và sắp xếp mong muốn vào

  * cabinClassOptions (Array\[String], Optional)

    Thông tin hạng ghế muốn đưa vào lọc và sắp xếp
  * step (String, Required)

    Thông tin dùng để phân biệt giữa chiều đi và chiều về

    * `1` : chiều đi
    * `2` : chiều về
  * flightType (String, Required)

    Thông tin loại chuyến bay

    * `DOMESTIC`: trong nước
    * `INTERNATIONAL`: quốc tế
  * stopOption (Array\[String], Optional)

    Thông tin điểm dừng
  * airlineOptions (Array\[String], Optional)

    Thông tin hãng bay
  * departureDateTimeOptions (Array\[String], Optional)

    Thông tin giờ khởi hành bắt đầu ở khoảng hay thời điểm nào

    VD: departureDateTimeOptions: `["+18", "+12-18"]`

    * `+18`: từ 18h đến 24h
    * `+12-18`: từ 12h đến 18h
  * arrivalDateTimeReturnOptions (Array\[String], Optional)

    Thông tin giờ kết thúc bắt đầu ở khoảng hay thời điểm nào

    VD: arrivalDateTimeReturnOptions: `["+18", "+12-18"]`

    * `+18`: từ 18h đến 24h
    * `+12-18`: từ 12h đến 18h
  * groupId (String, Required)

    Mã định danh hành trình trong danh sách hành trình lấy được từ kết quả tìm kiếm

</details>

#### Response <a href="#response_4" id="response_4"></a>

**Code 200**

> OK

<details>

<summary>Model</summary>

`Chỉ định danh những trường/field cần thiết`

* searchId (String, Required)

  Mã tham chiếu đến search vé máy bay, được lấy từ kết quả search vé máy bay
* groupPricedItineraries (Array\[GroupPricedItineraryDTO], Optional)

  Thông tin danh sách hành trình trả về theo kết quả tìm kiếm

  * airSupplier (String, Required)

    Hãng cung cấp (VietnamAirline - VNA, VjetJet - VJ, BamBoo - QH, …)
  * aircraft (String, Optional)

    Loại máy bay (Airbus A330, Boeing 787, .....)
  * airline (String, Optional)

    Hãng bay (VJ, VNA, …)
  * airlineName (String, Optional)

    Tên hãng bay (Vietjet Air, Vietnam Airline, Bamboo, …)
  * arrivalDateTime (String, Required)

    Ngày giờ đến, sử dụng múi giờ UTC/GMT+7
  * departureDateTime (String, Required)

    Ngãy giờ bay, sử dụng múi giờ UTC/GMT+7
  * destinationLocationCode (String, Optional)

    Mã thành phố kết thúc chuyến bay
  * destinationCountry (String, Optional)

    Tên quốc gia kết thúc chuyến bay
  * destinationCountryCode (String, Optional)

    Mã quốc gia kết thúc chuyến bay
  * destinationCity (String, Optional)

    Tên thành phố kết thúc chuyến bay
  * destinationLocationName (String, Optional)

    Tên sân bay ở điểm dừng
  * flightNo (String, Optional)

    Số hiệu máy bay
  * flightNo (String, Optional)

    Số hiệu máy bay
  * flightType (String, Optional)

    Loại hình bay bay trong nước hay quốc tế

    Loại hình bay:

    * `DOMESTIC`: trong nước
    * `INTERNATIONAL`: quốc tế
  * groupId (String, Required)

    Mã định danh hành trình trong danh sách hành trình trả về theo kết quả tìm kiếm
  * originCity (String, Optional)

    Tên thành phố ở điểm khởi hành
  * originCountry (String, Optional)

    Tên quốc gia ở điểm khởi hành
  * originCountryCode (String, Optional)

    Mã ký hiệu quốc gia ở điểm khởi hành
  * originLocationCode (String, Optional)

    Mã thành phố khởi hành chuyến bay
  * originLocationName (String, Optional)

    Tên sân bay ở điểm khởi hành
  * totalPricedItinerary (Integer, Required)

    Tổng số lượng hành trình chi tiết
  * pricedItineraries (Array\[PricedItineraries], Required)

    Chi tiết hành trình

    * airItineraryPricingInfo (AirItineraryPricingInfo, Required)

      Thông tin giá chi tiết của hành trình

      * adultFare (FareBreakdown, Required)
        * passengerFare (PassengerFare, Required)

          Thông tin giá vé người lớn

          * baseFare (FareInfo, required)

            Thông tin giá vé cơ bản

            * amount (Double, Required)

              Số tiền
            * decimalPlaces (Integer, Optional)

              Vị trí số thập phân làm tròn đến
          * equivFare (FareInfo, Optional)

            Tương tự như baseFare

            Thông tin phí xuất vé
          * serviceTax (FareInfo, Required)

            Tương tự như baseFare

            Thông tin phí dịch vụ
          * totalFare (FareInfo, Required)

            Tương tự như baseFare

            Thông tin tổng cộng giá vé
          * surcharges (Array\[Surcharge], Required)

            Thông tin phụ phí tính trên mỗi booking / mỗi segment
        * passengerTypeQuantities (PassengerTypeQuantities, Optional)

          Số lượng / loại của hành khách

          * code (String, Required)

            Mã định danh người lớn / trẻ em / trẻ sơ sinh

            Bao gồm: `ADT` - người lớn / `CHD` - trẻ em / `INF` - trẻ sơ sinh
          * quantity (Integer, Required)

            Số lượng người lớn / trẻ em / trẻ sơ sinh
      * childFare (PassengerFare, Optional)

        Thông tin giá vé trẻ em

        Tương tự thông tin giá vé người lớn
      * infantFare (PassengerFare, Optional)

        Thông tin giá vé trẻ sơ sinh

        Tương tự thông tin giá vé người lớn
      * itinTotalFare (PassengerFare, Required)

        Thông tin tổng giá vé của hành trình

        Tương tự thông tin giá vé người lớn
      * fareSourceCode (String, Required)

        Thông tin mã định danh hành trình

        Được sử dụng để đi lấy thông tin điều kiện vé
    * allowHold (Boolean, Required)

      Thông tin cho phép giữ đặt chỗ hay không
    * cabinClassName (String, Required)

      Thông tin hạng ghế:

      * `ECONOMY` - ghế phổ thông
      * `PREMIUM` - ghế phổ thông đặc biệt
      * `BUSINESS` - ghế thương gia
    * fightNo (String, Optional)

      Thể hiện thông tin số hiệu máy bay
    * originDestinationOptions (Array(OriginDestinationOptions), Required)

      Thông tin chặn / dừng của hành trình

      * flightDirection (String, Required)

        Thể hiện thông tin chiều bay của hành trình

        * `D` - chiều đi
        * `R` - chiều về
      * journeyDuration (Integer, Required)

        Thể hiện thời gian bay
      * flightSegments (Array(FlightSegments), Required)

        Thể hiện thông tin chi tiết điểm khởi hành / điểm kết thúc trong hành trình
* page (AirPage, Required)

  Đối tượng mô tả các thông tin về phân trang.

  Số thứ tự của mỗi trang được trả về, phần tử của mỗi trang, tổng số trang
* duration (Integer, Optional),
* errors (Array\[Error], Optional),
* infos (Array\[Info], Optional),
* success (Boolean, Optional),
* textMessage (String, Optional)

</details>

***

### 6.API lấy điều kiện vé <a href="#id-6api-lay-ieu-kien-ve" id="id-6api-lay-ieu-kien-ve"></a>

POST: /api/air-tickets/farerules

Lấy điều kiện vé của chuyến bay

#### Paramaters <a href="#paramaters_2" id="paramaters_2"></a>

<details>

<summary>Parameters</summary>

* language `query` (String, Optional)

  Ngôn ngữ muốn lấy (VI hoặc EN)

</details>

#### Request Body <a href="#request-body_3" id="request-body_3"></a>

<details>

<summary>Request Body</summary>

* searchId (String, Required)

  Dữ liệu dùng để tham chiếu đến kết quả tìm kiếm

  Dữ liệu này lấy từ kết quả trả về của tìm vé máy bay
* groupId (String, Required)

  Mã định danh hành trình trong danh sách hành trình trả về theo kết quả tìm kiếm
* fareSourceCode(String, Required)

  Thông tin mã định danh hành trình

</details>

#### Response <a href="#response_5" id="response_5"></a>

**Code 200**

> OK

<details>

<summary>Model</summary>

`Chỉ định danh những trường/field cần thiết`

* fareRules (Array\[FareRules], Required)

  Danh sách điều kiện vé trả về

  * arrivalAirportLocationCode (String, Required)

    Điểm đến
  * departureAirportLocationCode (String, Required)

    Điểm khởi hành
  * departureDateTime (String, Required)

    Giờ khởi hành

    Định danh theo `yyyy-MM-dd'T'HH:mm:ss'Z'`
  * arrivalDateTime (String, Required)

    Giờ đến

    Định dạng theo `yyyy-MM-dd'T'HH:mm:ss'Z'`
  * fareRuleItems (Array\[FareRuleItem], Required)

    Danh sách chi tiết điều kiện vé

    * detail (String, Required)

      Chi tiết thông tin điều kiện vé

      Định dạng HTML
    * title (String, Required)

      Thông tin cho biết điều kiện vé chiều đi / điều kiện vé chiều về
* duration (Integer, Optional),
* errors (Array\[Error], Optional),
* infos (Array\[Info], Optional),
* success (Boolean, Optional),
* textMessage (String, Optional)

</details>
