Booking API

Ticket Status Check API

POST: /api/air-tickets/revalidate

Check ticket availability before booking

Request Body

ParameterDescription

searchId(String, Required)

Data used to refer to search results

This data is taken from the return results of airline ticket search

groupId(String, Required)

Journey identifier in the list of journeys returned by search results

fareSourceCode(String, Required)

Journey identifier information

Example

    {
        "fareSourceCode": "dom07b2da7b-3232-4294-9278-b35fb6307714",
        "groupId": "27b091a7-62b8-4ce2-b45b-eda3340d7673",
        "searchId": "ATD::210720::dc96e1a9-c39e-4f48-974e-e0be6abb45c7"
    }

Response

ParameterDescription

valid(Boolean, Required)

Is the ticket information still useful?

duration(Integer, Optional)

errors (Array[Error], Optional)

infos(Array[Info], Optional)

success(Boolean, Optional)

textMessage(String, Optional)

Example

{
    "duration" : 858,
    "errors" : null,
    "infos" : null,
    "itinerary" : null,
    "success" : true,
    "textMessage" : null,
    "valid" : true
}

Create draft booking API

POST: /api/air-tickets/draft-booking

Create draft booking with ticket info

Request Body

ParameterDescription

itineraryInfos (Array[ItineraryInfo], Required)

Outbound + return journey information (if any)

searchId(String, Required)

Data used to refer to search results

This data is taken from the return results of airline ticket search

groupId(String, Required)

Journey identifier in the list of journeys returned by search results

fareSourceCode(String, Required)

Journey identifier information

Example

    {
        "itineraryInfos": [
            {
                "fareSourceCode": "dom07b2da7b-3232-4294-9278-b35fb6307714",
                "groupId": "27b091a7-62b8-4ce2-b45b-eda3340d7673",
                "searchId": "ATD::210720::dc96e1a9-c39e-4f48-974e-e0be6abb45c7"
            },
            {
                "fareSourceCode": "domb771ff7f-57b5-4bd5-9443-e43b79f61aaa",
                "groupId": "8ceaa3c5-bbcf-451a-95ae-cd0a81e60993",
                "searchId": "ATD::210720::dc96e1a9-c39e-4f48-974e-e0be6abb45c7-R"
            }
        ]
    }

Response

ParameterDescription

bookingCode (BookingCode, Required)

Booking identifier information

bookingCode(String, Required)

Booking Identifier

bookingNumber(String, Required)

Code used to refer to booking. This code is unique.

bookingType(String, Required)

Information showing the type of booking: Domestic or international

DOME: Domestic

INTE: International

departDraftItineraryInfo (DraftItineraryInfo, Required)

Outbound itinerary information

bookingDirection(String, Required)

Direction information

DEPARTURE: Departure direction

RETURN: Return direction

TRIP: Used for international tickets (outbound + return)

fareSourceCode(String, Required)

Journey identifier information

groupId(String, Required)

Journey identifier in the list of journeys returned by search results

itinTotalFare (ItinTotalFare, Required)

Information about the prices of the journey

baseFare(FareInfo, required)

Basic fare information

amount (Double, Required)

Amount of money

decimalPlaces(Integer, Optional)

Decimal places rounded to

equivFare (FareInfo, Optional)

Similar to baseFare

Ticketing fee information

serviceTax (FareInfo, Required)

Similar to baseFare

Service fee information

totalTax (FareInfo, Required)

Similar to baseFare

Information about total service fee

totalFare (FareInfo, Required)

Similar to baseFare

Total ticket price information

returnDraftItineraryInfo (DraftItineraryInfo, Optional)

Similar to the detailed information of the outbound journey

Return journey information

duration(Integer, Optional)

errors (Array[Error], Optional)

infos(Array[Info], Optional)

success(Boolean, Optional)

textMessage(String, Optional)

Example

    {
        "bookingCode": {
            "bookingCode": "BOD::210720::b87fd70e-4a9b-4532-9cb6-7d8142822ac3",
            "bookingNumber": "ADCO2107201223803"
        },
        "bookingType": "DOME",
        "departDraftItineraryInfo": {
            "bookingDirection": "DEPARTURE",
            "fareSourceCode": "dom07b2da7b-3232-4294-9278-b35fb6307714",
            "groupId": "27b091a7-62b8-4ce2-b45b-eda3340d7673",
            "itinTotalFare": {
            "baseFare": {
                "amount": 399000,
                "currencyCode": null,
                "decimalPlaces": 2
            },
            "comboMarkup": null,
            "equivFare": {
                "amount": 0,
                "currencyCode": null,
                "decimalPlaces": 2
            },
            "serviceTax": {
                "amount": 512000,
                "currencyCode": null,
                "decimalPlaces": 2
            },
            "totalFare": {
                "amount": 911000,
                "currencyCode": null,
                "decimalPlaces": 2
            },
            "totalPaxFee": null,
            "totalTax": {
                "amount": 0,
                "currencyCode": null,
                "decimalPlaces": 2
            }
            },
            "searchId": "ATD::210720::dc96e1a9-c39e-4f48-974e-e0be6abb45c7"
        },
        "duration": 3498,
        "errors": null,
        "infos": null,
        "isPerBookingType": true,
        "isRoundTripType": true,
        "isSuccess": true,
        "markupType": "PER_BOOKING",
        "returnDraftItineraryInfo": {
            "bookingDirection": "RETURN",
            "fareSourceCode": "domb771ff7f-57b5-4bd5-9443-e43b79f61aaa",
            "groupId": "8ceaa3c5-bbcf-451a-95ae-cd0a81e60993",
            "itinTotalFare": {
            "baseFare": {
                "amount": 1319000,
                "currencyCode": null,
                "decimalPlaces": 2
            },
            "comboMarkup": null,
            "equivFare": null,
            "serviceTax": {
                "amount": 350900,
                "currencyCode": null,
                "decimalPlaces": 2
            },
            "totalFare": {
                "amount": 1669900,
                "currencyCode": null,
                "decimalPlaces": 2
            },
            "totalPaxFee": null,
            "totalTax": {
                "amount": 0,
                "currencyCode": null,
                "decimalPlaces": 2
            }
            },
            "searchId": "ATD::210720::dc96e1a9-c39e-4f48-974e-e0be6abb45c7-R"
        },
        "roundType": "RoundTrip",
        "success": true,
        "textMessage": null
    }

Get booking detail API

GET: /api/products/booking-detail

Get details of booking

Parameter

ParameterDescription

bookingNumber (String, Required)

Reference code to booking

Example

?bookingNumber=ADCO2107201223969

Response

ParameterDescription

id (String, Optional)

Booking identifier code

agencyCode (String, Optional)

Agent code. Code used to refer to the author of the booking

agentCode (String, Optional)

Agent employee code. Code used to refer to the author of the booking

bookingCode(String, Required)

Code used to describe basic information of booking

bookingDate (String, Optional)

Create booking date

bookingDirection(String, Required)

Direction information

DEPARTURE: Departure direction

RETURN: Return direction

TRIP: Used for international tickets (outbound + return)

bookingInfo (BookingInfo, Optional)

Booking information

additionalFee (Number, Optional)

Other fees

agencyCode(String, Optional)

Dealer code. Code used to refer to the author of the booking

agentCode(String, Optional)

Agent employee code. Code used to refer to the author of the booking

agentId(Integer, Optional)

Agent employee id

agentName(String, Optional)

Agent staff name

allowHold(Boolean, Optional)

Is it allowed to keep the plane ticket?

true: allow to keep tickets

false: Not allowed to keep tickets

itinTotalFare (ItinTotalFare, Required)

Information about the prices of the journey

baseFare(Number, Optional)

Basic fare information

bookBy(String, Optional)

The person who booked the booking

bookByCode(String, Optional)

Orderer code

bookingCode(String, Optional)

Code used to describe basic information of booking

bookingDate(String, Optional)

Booking creation date

bookingNote(String, Optional)

Notes of booking

bookingNumber(String, Optional)

Code used to refer to booking. This code is unique.

bookingType(String, Optional) = [‘DOME’, ‘INTE’]

Determine whether the destination is domestic or international

DOME: Domestic

INTE: International

branchCode(String, Optional)

Branch code

cancellationBy(String, Optional)

Ticket cancellation by…

cancellationDate(String, Optional)

Cancellation date

cancellationFee(Number, Optional)

Cancellation fee

cancellationNotes(String, Optional)

Cancellation Notes

channelType(String, Optional) = [‘ONLINE’, ‘OFFLINE’]

Booking channel type

contactInfos(Array[BookingContactInfo], Optional)

Array of objects with contact information

bookingNumber(String, Optional)

Reference code to booking

contactLevel(String, Optional) = [‘PRIMARY’, ‘SECONDARY’, ‘OTHER’],

Level of contact

contactType(String, Optional) = [‘CUSTOMER’, ‘AGENCY’]

Type of contact person

email(String, Optional)

Email address

firstName(String, Optional)

Night name and contact name

phoneCode1(String, Optional)

Country code

phoneNumber1(String, Optional)

Phone number 1

surName(String, Optional)

Contact person’s last name

customerCode(String, Optional)

Customer’s code

customerEmail(String, Optional)

Customer’s email

customerFirstName(String, Optional)

Client’s last name

customerId(Integer, Optional)

Customer id

customerLastName(String, Optional)

Customer’s name

customerPhoneNumber1(String, Optional)

Customer’s phone number 1

customerPhoneNumber2(String, Optional)

Customer’s phone number 2

departureDate(String, Optional)

Departure day

discountAmount (Number, Optional)

Amount to be reduced

discountDate(String, Optional)

Date to use discount code

discountRedeemCode(String, Optional)

Redemption Link Code

discountRedeemId(String, Optional)

Normal link identifier id

discountVoucherCode(String, Optional)

Voucher code

discountVoucherName(String, Optional)

Name of the voucher

equivFare (FareInfo, Optional)

Similar to baseFare

Ticketing fee information

etickets(String, Optional)

Supplier link code, used to receive air tickets

fromCity(String, Optional)

Departure city name

fromLocationCode(String, Optional),

Departure Airport Identifier

fromLocationName(String, Optional),

Departure airport name

id(integer, Optional),

Id of booking

issuedByCode(String, Optional),

Tickets issued by…

issuedDate(String, Optional)

Check-out date

issuedStatus(String, Optional) = [‘PENDING’, ‘TICKET_ON_PROCESS’, ‘SUCCEEDED’, ‘FAILED’],

Ticketing Status

PENDING: Waiting to issue tickets

TICKET_ON_PROCESS: Ticket issue is being processed

SUCCEEDED: Successfully issued tickets

FAILED: Ticket issue failed

orgCode (String, Optional)

Organization code

passengerNameRecords(String, Optional)

Supplier link code, used to receive air tickets

paymentBy(String, Optional)

Paid by…

paymentByCode(String, Optional)

Payer code

paymentDate(String, Optional)

Payment time

paymentFee (Number, Optional)

Payment Fees

paymentRefNumber(String, Optional)

Payment reference code

paymentStatus(String, Optional) = [‘SUCCEEDED’, ‘FAILED’, ‘REFUNDED’, ‘PENDING’],

Payment Status

PENDING: Waiting for payment

SUCCEEDED: Successful payment

FAILED: Payment failed

REFUNDED: Refunds

paymentTotalAmount(Number, Optional)

Total payment amount

paymentType(String, Optional) = [‘BALANCE’, ‘CREDIT’, ‘ATM_DEBIT’, ‘AIRPAY’, ‘VNPAYQR’, ‘VIETTELPAY’, ‘MOMO’, ‘ZALO’, ‘PAYOO’, ‘CASH’, ‘TRANSFER ‘, ‘PARTNER’, ‘OTHER’],

Payment method

refundBy(String, Optional)

Refunder

refundByCode(String, Optional),

Code of the person making the refund

refundable (Boolean, Optional)

Refund date

returnDate(String, Optional)

Check-out date

roundType(String, Optional) = [‘RoundTrip]

saleChannel(String, Optional) = [‘B2B’, ‘B2C’, ‘B2B2C’, ‘B2C_WEB’, ‘B2C_WEB_APP’, ‘B2C_MOBILE’]

Distribution channel

serviceTax(Number, Optional)

Taxes and fees

status (String, Optional) = [‘PENDING’, ‘BOOKING_ON_PROCESS’, ‘BOOKED’, ‘FAILED’, ‘CANCELLED’, ‘EXPIRED’],

Status of booking

PENDING: Waiting for booking confirmation

BOOKING_ON_PROCESS: Booking is being processed

BOOKED: Booking confirmed

FAILED: Booking failed

EXPIRED: Expired Booking

CANCELLED: Booking has been canceled

supplierType(String, Optional) = [‘AIR’, ‘HOTEL’, ‘TOURS’, ‘TRAIN’, ‘SHIP’, ‘OTHER’],

Supplier Type

taxAddress1(String, Optional)

Invoicing address line 1

taxAddress2(String, Optional)

Invoicing address line 2

taxCompanyName(String, Optional)

Invoice company name

taxNumber (String, Optional)

Tax code to be invoiced

taxPersonalInfoContact(String, Optional)

Invoice recipients

taxReceiptRequest(Boolean, Optional)

Request an invoice or not?

timeToLive(String, Optional)

Waiting time for payment, after this time booking status will change to EXPIRED

toCity(String, Optional)

Name of destination province, city

toLocationCode(String, Optional)

Destination Identifier

toLocationName(String, Optional)

Destination airport name

totalFare(Number, Optional)

Total room rate

totalSsrValue(Number, Optional)

Total price of luggage/extra service

totalTax(Number, Optional)

Total amount of taxes and fees

transactionInfos(Array[BookingTransactionInfo], Optional)

Array of objects containing transaction information

id(integer, Optional)

Transaction identifier id

allowHold(Boolean, Optional)

Is it allowed to keep tickets?

bookingCode(String, Optional)

Code used to describe basic information of booking

bookingDate(String, Optional)

Booking creation date

bookingDirection(String, Optional) = [‘DEPARTURE’, ‘RETURN’]

bookingNumber(String, Optional)

Code used to refer to booking.

bookingRefNo(String, Optional)

Supplier link code

channelType(String, Optional) = [‘ONLINE’, ‘OFFLINE’]

Type of sales channel

checkIn(String, Optional)

Flight date and time

checkOut(String, Optional)

Time and date come

destinationLocationCode(String, Optional)

Stadium Identifier

detail(String, Optional)

Location name

etickets(String, Optional)

Vendor affiliate code, used to receive tickets

issuedDate(String, Optional)

Ticket issue date

issuedStatus(String, Optional) = [‘PENDING’, ‘TICKET_ON_PROCESS’, ‘SUCCEEDED’, ‘FAILED’]

Ticketing Status

PENDING: Waiting to issue tickets

TICKET_ON_PROCESS: Ticket issue is being processed

SUCCEEDED: Successfully issued tickets

FAILED: Ticket issue failed

noAdult(integer, Optional)

Number of adults

noChild(integer, Optional)

Number of children

onlyPayLater(Boolean, Optional)

Postpaid or not allowed?

passengerNameRecord(String, Optional),

Vendor affiliate code, used to receive tickets

paymentAmount(Number, Optional)

Payment amount

productSeqNumber(String, Optional)

Product code

refundable (Boolean, Optional)

Is there a refund for ticket cancellation?

saleChannel(String, Optional) = [‘B2B’, ‘B2C’, ‘B2B2C’, ‘B2C_WEB’, ‘B2C_WEB_APP’, ‘B2C_MOBILE’]

Distribution channel

serviceTax(Number, Optional)

Taxes and fees

status (String, Optional) = [‘PENDING’, ‘BOOKING_ON_PROCESS’, ‘BOOKED’, ‘FAILED’, ‘CANCELLED’, ‘EXPIRED’],

Status of booking

PENDING: Waiting for booking confirmation

BOOKING_ON_PROCESS: Booking is being processed

BOOKED: Booking confirmed

FAILED: Booking failed

EXPIRED: Expired Booking

CANCELLED: Booking has been canceled

supplierCode(String, Optional)

Supplier code

supplierName(String, Optional)

Supplier Name

supplierType(String, Optional) = [‘AIR’, ‘HOTEL’, ‘TOURS’, ‘TRAIN’, ‘SHIP’, ‘OTHER’]

Product Type

totalFare(Number, Optional)

Total fare

totalTax(Number, Optional)

Total taxes and fees

baseFare(Number, Optional)

Ticket price does not include taxes

travelerInfos(Array[BookingTravelerInfo], Optional)

Array of objects containing passenger information.

bookingNumber(String)

Reference code to booking

firstName(String)

Night name and passenger name

surName(String)

Passenger’s surname

bookingNumber(String, Optional)

Code used to refer to booking. This code is unique.

bookingType(String, Optional)

Determine whether the destination is domestic or international

DOME: Domestic

INTE: International

branchCode(String, Optional)

Branch code

groupPricedItineraries (Array[GroupPricedItinerary], Optional),

Information about the list of journeys returned by search results

Similar to getting flight ticket search information

OrgCode(String, Optional)

Organization code

saleChannel(String, Optional) = [‘B2B’, ‘B2C’, ‘B2B2C’, ‘B2C_WEB’, ‘B2C_WEB_APP’, ‘B2C_MOBILE’],

Distribution channel

supplierType(String, Optional) = [‘AIR’, ‘HOTEL’, ‘TOURS’, ‘TRAIN’, ‘SHIP’, ‘OTHER’],

Supplier Type

Example

    {
        "id": "BOD::210720::157f1341-5a66-4b0e-a6fb-a2d39b99dfdf",
        "updatedDate": "2021-07-20T07:11:49.524Z",
        "cacheType": "COMBO",
        "orgCode": "A::1",
        "agencyCode": "A::1",
        "branchCode": null,
        "saleChannel": "B2C_WEB",
        "channelType": "ONLINE",
        "supplierType": "AIR",
        "bookingCode": "BOD::210720::157f1341-5a66-4b0e-a6fb-a2d39b99dfdf",
        "bookingType": "DOME",
        "agentCode": null,
        "customerCode": "C::A::1|-1",
        "bookingNumber": "ADCO2107201223969",
        "bookingDate": "2021-07-20T07:11:49.52Z",
        "markupType": "PER_BOOKING",
        "bookingInfo": {
            "id": 1223969,
            "orgCode": "A::1",
            "agencyCode": "A::1",
            "saleChannel": "B2C_WEB",
            "channelType": "ONLINE",
            "supplierType": "AIR",
            "bookingCode": "BOD::210720::157f1341-5a66-4b0e-a6fb-a2d39b99dfdf",
            "bookingType": "DOME",
            "agentCode": null,
            "agentId": null,
            "agentName": null,
            "branchCode": null,
            "customerCode": "C::A::1|-1",
            "customerId": -1,
            "bookingNumber": "ADCO2107201223969",
            "roundType": "RoundTrip",
            "fromLocationCode": "HAN",
            "fromLocationName": "Sân bay Nội Bài",
            "fromCity": "Hà Nội",
            "toLocationCode": "SGN",
            "toLocationName": "Sân bay Tân Sơn Nhất",
            "toCity": "Hồ Chí Minh",
            "status": "PENDING",
            "bookingDate": "2021-07-20T07:11:49.52Z",
            "departureDate": "2021-08-16T05:10:00Z",
            "returnDate": "2021-08-24T05:25:00Z",
            "baseFare": 2638000,
            "equivFare": 0,
            "serviceTax": 701800,
            "vat": null,
            "totalFare": 3339800,
            "totalTax": 701800,
            "agencyMarkupValue": 0,
            "markupValue": 0,
            "totalSsrValue": 0,
            "totalCombo": null,
            "paymentTotalAmount": 0,
            "paymentFee": 0,
            "paymentType": "OTHER",
            "paymentStatus": "PENDING",
            "paymentDate": null,
            "paymentRefNumber": null,
            "issuedStatus": "PENDING",
            "issuedDate": null,
            "customerFirstName": null,
            "customerLastName": null,
            "customerPhoneNumber1": null,
            "customerPhoneNumber2": null,
            "customerEmail": null,
            "taxReceiptRequest": null,
            "taxCompanyName": null,
            "taxAddress1": null,
            "taxAddress2": null,
            "taxNumber": null,
            "paymentBy": null,
            "paymentByCode": null,
            "issuedByCode": null,
            "refundBy": null,
            "refundByCode": null,
            "bookBy": "GUEST",
            "bookByCode": "C::A::1|-1",
            "displayPriceInfo": {
            "bookingNumber": "ADCO2107201223969",
            "baseFare": 2638000,
            "equivFare": 0,
            "serviceTax": 701800,
            "totalFare": 3339800,
            "totalTax": 701800,
            "agencyMarkupValue": 0,
            "markupValue": 0,
            "totalSsrValue": 0,
            "cancellationFee": 0,
            "paymentFee": 0,
            "discountAmount": 0,
            "additionalFee": 0,
            "additionalTaxPerTraveler": 0,
            "vat": null
            },
            "transactionInfos": [
            {
                "id": 1224043,
                "saleChannel": "B2C_WEB",
                "channelType": "ONLINE",
                "supplierType": "AIR",
                "bookingCode": "ADCO2107201223969::HAN-SGN::domd879a3f6-f3cb-40d6-8e95-52dd0a7d47a5",
                "bookingNumber": "ADCO2107201223969",
                "status": "PENDING",
                "bookingDate": "2021-07-20T07:11:49.52Z",
                "supplierCode": "VJ",
                "supplierName": "Vietjet Air",
                "bookingRefNo": null,
                "passengerNameRecord": null,
                "timeToLive": null,
                "signature": null,
                "detail": "HAN-SGN :: VJ 135",
                "originLocationCode": "HAN",
                "destinationLocationCode": "SGN",
                "carrierNo": "135",
                "checkIn": "2021-08-16T07:20:00Z",
                "checkOut": "2021-08-16T05:10:00Z",
                "baseFare": 1319000,
                "equivFare": 0,
                "serviceTax": 350900,
                "totalFare": 1669900,
                "totalTax": 350900,
                "agencyMarkupValue": 0,
                "markupValue": null,
                "totalSsrValue": 0,
                "markupKey": "F2C|A::1|A|DOME|BAS|VIETJET|ECONOMY|-1",
                "markupCode": null,
                "markupFormula": null,
                "paymentAmount": null,
                "issuedStatus": "PENDING",
                "issuedDate": null,
                "etickets": null,
                "listETickets": null,
                "productSeqNumber": "ibe4754299335928434",
                "productClass": "ECONOMY",
                "bookingDirection": "DEPARTURE",
                "noAdult": 1,
                "noChild": 0,
                "noInfant": 0,
                "b2cBasePrice": 0,
                "b2cTaxAndFees": 0,
                "adjustNet": 0,
                "adjustContract": 0,
                "b2cTotalPrice": 0,
                "supplierBookingStatus": "PENDING",
                "supplierPaymentStatus": null,
                "onlyPayLater": false,
                "allowHold": true,
                "refundable": false
            },
            {
                "id": 1224044,
                "saleChannel": "B2C_WEB",
                "channelType": "ONLINE",
                "supplierType": "AIR",
                "bookingCode": "ADCO2107201223969::SGN-HAN::dom389dca01-c0fd-466b-8a98-daaa4d5a06d4",
                "bookingNumber": "ADCO2107201223969",
                "status": "PENDING",
                "bookingDate": "2021-07-20T07:11:49.52Z",
                "supplierCode": "VJ",
                "supplierName": "Vietjet Air",
                "bookingRefNo": null,
                "passengerNameRecord": null,
                "timeToLive": null,
                "signature": null,
                "detail": "SGN-HAN :: VJ 176",
                "originLocationCode": "SGN",
                "destinationLocationCode": "HAN",
                "carrierNo": "176",
                "checkIn": "2021-08-24T07:35:00Z",
                "checkOut": "2021-08-24T05:25:00Z",
                "baseFare": 1319000,
                "equivFare": 0,
                "serviceTax": 350900,
                "totalFare": 1669900,
                "totalTax": 350900,
                "agencyMarkupValue": 0,
                "markupValue": null,
                "totalSsrValue": 0,
                "markupKey": "F2C|A::1|A|DOME|BAS|VIETJET|ECONOMY|-1",
                "markupCode": null,
                "markupFormula": null,
                "paymentAmount": null,
                "issuedStatus": "PENDING",
                "issuedDate": null,
                "etickets": null,
                "listETickets": null,
                "productSeqNumber": "ibe4754299329767108",
                "productClass": "ECONOMY",
                "bookingDirection": "RETURN",
                "noAdult": 1,
                "noChild": 0,
                "noInfant": 0,
                "b2cBasePrice": 0,
                "b2cTaxAndFees": 0,
                "adjustNet": 0,
                "adjustContract": 0,
                "b2cTotalPrice": 0,
                "supplierBookingStatus": "PENDING",
                "supplierPaymentStatus": null,
                "onlyPayLater": false,
                "allowHold": true,
                "refundable": false
            }
            ],
            "agencyMarkupInfos": [
            {
                "agencyCode": "A::1",
                "baseFare": 2638000,
                "equivFare": 0,
                "serviceTax": 701800,
                "totalFare": 3339800,
                "totalTax": 701800,
                "markupValue": 0,
                "agencyMarkupValue": 0
            }
            ],
            "contactInfos": [],
            "travelerInfos": [],
            "timeToLive": null,
            "supplierBookingStatus": "PENDING",
            "passengerNameRecords": "",
            "etickets": "",
            "cancellationFee": 0,
            "cancellationNotes": null,
            "cancellationBy": null,
            "cancellationDate": null,
            "discountAmount": 0,
            "discountVoucherCode": null,
            "discountVoucherName": null,
            "discountRedeemId": null,
            "discountRedeemCode": null,
            "discountDate": null,
            "additionalFee": null,
            "taxPersonalInfoContact": null,
            "bookingNote": null,
            "internalBookingNote": null,
            "promotionID": null,
            "reasonCodePaymentFailed": null,
            "bookingFinalStatus": null,
            "bookingIssuedType": null,
            "deleted": null,
            "onlyPayLater": false,
            "allowHold": true,
            "refundable": false,
            "ownerBooking": false,
            "showPayLaterOption": true,
            "showPayNowOption": true
        },
        "groupPricedItineraries": [
            {
            "groupId": "061f0408-ddb8-4462-ada0-d7aacac4154f",
            "airline": "VJ",
            "airlineName": "VietJet Air",
            "airSupplier": "VJ",
            "fightNo": "135",
            "flightType": "DOMESTIC",
            "roundType": "ROUNDTRIP",
            "originLocationCode": "HAN",
            "originLocationName": "Sân bay Nội Bài",
            "originCity": "Hà Nội",
            "originCountryCode": null,
            "originCountry": null,
            "destinationLocationCode": "SGN",
            "destinationLocationName": "Sân bay Tân Sơn Nhất",
            "destinationCity": "Hồ Chí Minh",
            "destinationCountryCode": null,
            "destinationCountry": null,
            "requiredFields": null,
            "aircraft": "Airbus A321",
            "vnaArea": null,
            "arrivalDateTime": "2021-08-16T07:20:00Z",
            "returnDateTime": null,
            "departureDateTime": "2021-08-16T05:10:00Z",
            "totalPricedItinerary": 1,
            "pricedItineraries": [
                {
                "sequenceNumber": "ibe4754299335928434",
                "directionInd": "DEPARTURE",
                "ticketType": "ETICKET",
                "validatingAirlineCode": "VJ",
                "validatingAirlineName": "VietJet Air",
                "fightNo": "135",
                "airItineraryPricingInfo": {
                    "fareSourceCode": "domd879a3f6-f3cb-40d6-8e95-52dd0a7d47a5",
                    "fareType": "PUBLIC",
                    "divideInPartyIndicator": false,
                    "fareInfoReferences": null,
                    "itinTotalFare": {
                    "baseFare": {
                        "amount": 1319000,
                        "currencyCode": null,
                        "decimalPlaces": 2
                    },
                    "comboMarkup": null,
                    "equivFare": {
                        "amount": 0,
                        "currencyCode": null,
                        "decimalPlaces": 2
                    },
                    "serviceTax": {
                        "amount": 350900,
                        "currencyCode": null,
                        "decimalPlaces": 2
                    },
                    "totalFare": {
                        "amount": 1669900,
                        "currencyCode": null,
                        "decimalPlaces": 2
                    },
                    "totalTax": {
                        "amount": 0,
                        "currencyCode": null,
                        "decimalPlaces": 2
                    },
                    "totalPaxFee": {
                        "amount": 0,
                        "currencyCode": null,
                        "decimalPlaces": 2
                    }
                    },
                    "adultFare": {
                    "passengerTypeQuantities": {
                        "code": "ADT",
                        "quantity": 1
                    },
                    "fareBasisCodes": null,
                    "passengerFare": {
                        "baseFare": {
                        "amount": 1319000,
                        "currencyCode": null,
                        "decimalPlaces": 2
                        },
                        "comboMarkup": null,
                        "equivFare": null,
                        "serviceTax": {
                        "amount": 350900,
                        "currencyCode": null,
                        "decimalPlaces": 2
                        },
                        "taxes": null,
                        "totalFare": {
                        "amount": 1669900,
                        "currencyCode": null,
                        "decimalPlaces": 2
                        },
                        "totalPaxFee": {
                        "amount": 0,
                        "currencyCode": null,
                        "decimalPlaces": 2
                        },
                        "surcharges": [
                        {
                            "amount": 0,
                            "indicator": "Ticket fee per segment",
                            "type": "Ticket fee per segment"
                        }
                        ]
                    }
                    },
                    "childFare": null,
                    "infantFare": null
                },
                "originDestinationOptions": [
                    {
                    "originLocationCode": "HAN",
                    "originLocationName": "Sân bay Nội Bài",
                    "originCity": "Hà Nội",
                    "originDateTime": "2021-08-16T05:10:00Z",
                    "destinationLocationCode": "SGN",
                    "destinationLocationName": "Sân bay Tân Sơn Nhất",
                    "destinationCity": "Hồ Chí Minh",
                    "destinationDateTime": "2021-08-16T07:20:00Z",
                    "flightDirection": "D",
                    "journeyDuration": 130,
                    "flightSegments": [
                        {
                        "departureAirportLocationCode": "HAN",
                        "departureAirportLocationName": "Sân bay Nội Bài",
                        "departureCity": "Hà Nội",
                        "departureDateTime": "2021-08-16T05:10:00Z",
                        "arrivalAirportLocationCode": "SGN",
                        "arrivalAirportLocationName": "Sân bay Tân Sơn Nhất",
                        "arrivalCity": "Hồ Chí Minh",
                        "arrivalDateTime": "2021-08-16T07:20:00Z",
                        "cabinClassCode": "L1_ECO",
                        "cabinClassName": "ECONOMY",
                        "cabinClassText": "Economy",
                        "eticket": true,
                        "flightNumber": "135",
                        "journeyDuration": 130,
                        "marketingAirlineCode": "VJ",
                        "marriageGroup": null,
                        "mealCode": null,
                        "adultBaggage": null,
                        "childBaggage": null,
                        "infantBaggage": null,
                        "operatingAirline": {
                            "code": "VJ",
                            "name": "VietJet Air",
                            "equipment": null,
                            "flightNumber": "135"
                        },
                        "resBookDesignCode": "L1_ECO",
                        "seatsRemaining": null,
                        "stopQuantity": 0,
                        "stopQuantityInfo": null,
                        "flightDirection": "D",
                        "fareCode": null,
                        "fareBasicCode": null,
                        "supplierJourneyKey": "FE1G3mI6J96guNcAzJB8ySOHAwhKeuKrPN1RLIvlkec0JkXEWMPy6ItOC426vmwQR43zYvZ9J8VI6zaG7lw0LKmEHsO80BsCMC3Wd8iolbƒTmtG8M6L7bPi0uz2tkYAvXDMXc9HUGkG8lApWnPe3xpTBrE0U39yauxXCYdc1n9FtG7gDƒ01dSwfrBCjwi0vgtFCse3gS3k17xSKp05Uw44REYTvb82JA3bgQdkƒBFAmNfeceBsSG9xMBDMdYNrMIO¥oiODBDxq5ƒz06gIaktCwk0PN8BM5mGwƒ2LgRBYV0JrBwBdrM6oOcgDgC4OYyLgrDH9Knfns1ƒgDj27Ac0HAXbdbZ7XqkrzKbM4r9Q8cg8X47a9lNO4KƒqIvTnUvEY8M0c1wwuOOHYJTsJABLzVPo3kahvuxmO3QlZuBy4fOB8MXrƒzbqks9wZ46RcMmvj8rz2U¥hysKqksRuCInqmdWYetrTHeziXe1Hj2i44979g=",
                        "supplierFareKey": null,
                        "aircraft": "Airbus A321"
                        }
                    ],
                    "cabinClassName": "ECONOMY"
                    }
                ],
                "cabinClassName": "ECONOMY",
                "validReturnCabinClasses": null,
                "baggageItems": [
                    {
                    "id": "air-tickets.baggage-items.vietnam.vj.economy.baggage.adult.free",
                    "name": "7kg xách tay",
                    "code": "air-tickets.baggage-items.vietnam.vj.economy.baggage.adult.free",
                    "amount": 0,
                    "serviceType": "BAGGAGE",
                    "fareCode": null,
                    "direction": null,
                    "note": ""
                    }
                ],
                "mealItems": null,
                "passportMandatory": true,
                "onlyPayLater": false,
                "allowHold": true,
                "refundable": false
                }
            ],
            "tourCode": null,
            "osiCode": null
            },
            {
            "groupId": "59136e62-a451-491c-bf57-1495a5eb8053",
            "airline": "VJ",
            "airlineName": "VietJet Air",
            "airSupplier": "VJ",
            "fightNo": "176",
            "flightType": "DOMESTIC",
            "roundType": "ROUNDTRIP",
            "originLocationCode": "SGN",
            "originLocationName": "Sân bay Tân Sơn Nhất",
            "originCity": "Hồ Chí Minh",
            "originCountryCode": null,
            "originCountry": null,
            "destinationLocationCode": "HAN",
            "destinationLocationName": "Sân bay Nội Bài",
            "destinationCity": "Hà Nội",
            "destinationCountryCode": null,
            "destinationCountry": null,
            "requiredFields": null,
            "aircraft": "Airbus A321",
            "vnaArea": null,
            "arrivalDateTime": "2021-08-24T07:35:00Z",
            "returnDateTime": null,
            "departureDateTime": "2021-08-24T05:25:00Z",
            "totalPricedItinerary": 1,
            "pricedItineraries": [
                {
                "sequenceNumber": "ibe4754299329767108",
                "directionInd": "DEPARTURE",
                "ticketType": "ETICKET",
                "validatingAirlineCode": "VJ",
                "validatingAirlineName": "VietJet Air",
                "fightNo": "176",
                "airItineraryPricingInfo": {
                    "fareSourceCode": "dom389dca01-c0fd-466b-8a98-daaa4d5a06d4",
                    "fareType": "PUBLIC",
                    "divideInPartyIndicator": false,
                    "fareInfoReferences": null,
                    "itinTotalFare": {
                    "baseFare": {
                        "amount": 1319000,
                        "currencyCode": null,
                        "decimalPlaces": 2
                    },
                    "comboMarkup": null,
                    "equivFare": null,
                    "serviceTax": {
                        "amount": 350900,
                        "currencyCode": null,
                        "decimalPlaces": 2
                    },
                    "totalFare": {
                        "amount": 1669900,
                        "currencyCode": null,
                        "decimalPlaces": 2
                    },
                    "totalTax": {
                        "amount": 0,
                        "currencyCode": null,
                        "decimalPlaces": 2
                    },
                    "totalPaxFee": {
                        "amount": 0,
                        "currencyCode": null,
                        "decimalPlaces": 2
                    }
                    },
                    "adultFare": {
                    "passengerTypeQuantities": {
                        "code": "ADT",
                        "quantity": 1
                    },
                    "fareBasisCodes": null,
                    "passengerFare": {
                        "baseFare": {
                        "amount": 1319000,
                        "currencyCode": null,
                        "decimalPlaces": 2
                        },
                        "comboMarkup": null,
                        "equivFare": null,
                        "serviceTax": {
                        "amount": 350900,
                        "currencyCode": null,
                        "decimalPlaces": 2
                        },
                        "taxes": null,
                        "totalFare": {
                        "amount": 1669900,
                        "currencyCode": null,
                        "decimalPlaces": 2
                        },
                        "totalPaxFee": {
                        "amount": 0,
                        "currencyCode": null,
                        "decimalPlaces": 2
                        },
                        "surcharges": [
                        {
                            "amount": 0,
                            "indicator": "Ticket fee per segment",
                            "type": "Ticket fee per segment"
                        }
                        ]
                    }
                    },
                    "childFare": null,
                    "infantFare": null
                },
                "originDestinationOptions": [
                    {
                    "originLocationCode": "HAN",
                    "originLocationName": "Sân bay Nội Bài",
                    "originCity": "Hà Nội",
                    "originDateTime": "2021-08-24T05:25:00Z",
                    "destinationLocationCode": "SGN",
                    "destinationLocationName": "Sân bay Tân Sơn Nhất",
                    "destinationCity": "Hồ Chí Minh",
                    "destinationDateTime": "2021-08-24T07:35:00Z",
                    "flightDirection": "R",
                    "journeyDuration": 130,
                    "flightSegments": [
                        {
                        "departureAirportLocationCode": "SGN",
                        "departureAirportLocationName": "Sân bay Tân Sơn Nhất",
                        "departureCity": "Hồ Chí Minh",
                        "departureDateTime": "2021-08-24T05:25:00Z",
                        "arrivalAirportLocationCode": "HAN",
                        "arrivalAirportLocationName": "Sân bay Nội Bài",
                        "arrivalCity": "Hà Nội",
                        "arrivalDateTime": "2021-08-24T07:35:00Z",
                        "cabinClassCode": "L1_ECO",
                        "cabinClassName": "ECONOMY",
                        "cabinClassText": "Economy",
                        "eticket": true,
                        "flightNumber": "176",
                        "journeyDuration": 130,
                        "marketingAirlineCode": "VJ",
                        "marriageGroup": null,
                        "mealCode": null,
                        "adultBaggage": null,
                        "childBaggage": null,
                        "infantBaggage": null,
                        "operatingAirline": {
                            "code": "VJ",
                            "name": "VietJet Air",
                            "equipment": null,
                            "flightNumber": "176"
                        },
                        "resBookDesignCode": "L1_ECO",
                        "seatsRemaining": null,
                        "stopQuantity": 0,
                        "stopQuantityInfo": null,
                        "flightDirection": "R",
                        "fareCode": null,
                        "fareBasicCode": null,
                        "supplierJourneyKey": "qPHglSL8tSGƒ3tYhxs32uoafExuaR6¥D8DPJRmgypKWbSPECY06rnAXXpKJGOuZb7NEUz4HasidS6Kcff52bObVg9sDEUOLmHkeV1TaDv58k1CDTNƒyCESrKIDxxmqYUmuLSƒffYjj90rjE3zanJvDlCWjzbJ0DBYAszIKjG¥o7RMqlwoq6wrrJdOd4WNgPiooIUl4X14bZwOJmwqCDLLQDkqSQEcF1¥9rRzwbHQskz1QbtcUSpjbSrCyzB¥dsN4QEz0q6cFXltqF¥kr1pa¥HPƒqJkPVl35AkZjpH5n9KIQrPeVQbFskIp3Qi¥Mgc3S¥gfRBdNwWHAGFWU00HmhtmMI5uEEJCxEvhs28wq2yƒQi9U0HMXqWHfKhaRG788ƒLgXn3nIiM¥T514T9ƒWW0uv1wckVgDkdYKN4X9Dzi1oF0lhKTUlinhfxz3NPh2VdhI¥Hg2f6ƒb3Zz1Ggt8Kl2bKz15PdYBNJvd3j4h314KYP9g=",
                        "supplierFareKey": null,
                        "aircraft": "Airbus A321"
                        }
                    ],
                    "cabinClassName": "ECONOMY"
                    }
                ],
                "cabinClassName": "ECONOMY",
                "validReturnCabinClasses": null,
                "baggageItems": [
                    {
                    "id": "air-tickets.baggage-items.vietnam.vj.economy.baggage.adult.free",
                    "name": "7kg xách tay",
                    "code": "air-tickets.baggage-items.vietnam.vj.economy.baggage.adult.free",
                    "amount": 0,
                    "serviceType": "BAGGAGE",
                    "fareCode": null,
                    "direction": null,
                    "note": ""
                    }
                ],