Flight Booking API Documentation
Overview
This API enables flight booking confirmation with full itinerary details, passenger information, and payment preparation. It returns PNR details, fare rules, and order status.
API Endpoint
- URL:
{{host}}/hub/flight/book
- Method:
POST
- Content-Type:
application/json
| Key |
Value |
Description |
Authorization |
Bearer {token} |
Access token (Required) |
Content-Type |
application/json |
Request/Response format |
Request Body
{
"Type": "ROUND_TRIP",
"Adults": 1,
"Children": 0,
"Infants": 0,
"solutions": [
{
"provider": "flight.provider2.1A",
"solutionId": "a81ade09f74200b6264a5b1391845a4a442b3e7b081702602581fbc1a6eeb71e+QgHAWyLWSGSeDu7w5Z7YCQ+c61e8dee-1213-40c4-af4f-e4fa267a7f81+++1A|a81ade09f74200b6264a5b1391845a4a442b3e7b081702602581fbc1a6eeb71e+QgHAWyLWSGSeDu7w5Z7YCQ+c61e8dee-1213-40c4-af4f-e4fa267a7f81+++1A",
"requireEnrichment": false,
"allowPayLater": true,
"isNDC": false,
"fare": {
"adultFare": {
"fare": 9698000,
"tax": 8690000,
"fee": 0,
"currency": "VND",
"discountAmount": 0,
"count": 1,
"total": 18388000,
"point": 0,
"totalPoint": 0
},
"childFare": {
"fare": 0,
"tax": 0,
"fee": 0,
"currency": "USD",
"discountAmount": 0,
"count": 0,
"total": 0,
"point": 0,
"totalPoint": 0
},
"infantFare": {
"fare": 0,
"tax": 0,
"fee": 0,
"currency": "USD",
"discountAmount": 0,
"count": 0,
"total": 0,
"point": 0,
"totalPoint": 0
},
"totalFare": 9698000,
"totalTax": 8690000,
"totalFee": 0,
"totalPrice": 18388000,
"totalDiscountAmount": 0,
"totalPoint": 0
},
"flights": [
{
"sequence": 1,
"flightDuration": 940,
"travelDuration": 1280,
"journeyId": "00000000-0000-0000-0000-000000000000",
"segments": [
{
"segmentId": "1",
"sequence": 1,
"bookingCode": "B",
"cabinClass": "ECONOMY",
"available": 9,
"departureCode": "HAN",
"departureName": "Hanoi",
"departureDate": "2025-11-07",
"departureTime": "02:45",
"departureTerminal": "2",
"arrivalCode": "PVG",
"arrivalName": "Shanghai",
"arrivalDate": "2025-11-07",
"arrivalTime": "06:45",
"arrivalTerminal": "1",
"airlines": "MU",
"airlinesName": "CHINA EASTERN AIRLINES",
"equipment": "73L",
"flightNumber": "5076",
"flightTime": 180,
"stopTime": 340,
"baggageRules": {
"adults": [
{
"baggageAmount": "1PC",
"carryOnAmount": "1PC"
}
]
},
"miniRules": {},
"fareBasis": "VSE00CSF"
},
{
"segmentId": "2",
"sequence": 2,
"bookingCode": "V",
"cabinClass": "ECONOMY",
"available": 9,
"departureCode": "PVG",
"departureName": "Shanghai",
"departureDate": "2025-11-07",
"departureTime": "12:25",
"departureTerminal": "1",
"arrivalCode": "CDG",
"arrivalName": "Paris",
"arrivalDate": "2025-11-07",
"arrivalTime": "18:05",
"arrivalTerminal": "2E",
"airlines": "MU",
"airlinesName": "CHINA EASTERN AIRLINES",
"equipment": "77W",
"flightNumber": "569",
"flightTime": 760,
"stopTime": 0,
"baggageRules": {
"adults": [
{
"baggageAmount": "1PC",
"carryOnAmount": "1PC"
}
]
},
"miniRules": {},
"fareBasis": "VSE00CSF"
}
]
},
{
"sequence": 2,
"flightDuration": 895,
"travelDuration": 1420,
"journeyId": "00000000-0000-0000-0000-000000000000",
"segments": [
{
"segmentId": "3",
"sequence": 1,
"bookingCode": "T",
"cabinClass": "ECONOMY",
"available": 9,
"departureCode": "CDG",
"departureName": "Paris",
"departureDate": "2025-11-29",
"departureTime": "20:05",
"departureTerminal": "2E",
"arrivalCode": "PVG",
"arrivalName": "Shanghai",
"arrivalDate": "2025-11-30",
"arrivalTime": "14:20",
"arrivalTerminal": "1",
"airlines": "MU",
"airlinesName": "CHINA EASTERN AIRLINES",
"equipment": "77W",
"flightNumber": "570",
"flightTime": 675,
"stopTime": 525,
"baggageRules": {
"adults": [
{
"baggageAmount": "1PC",
"carryOnAmount": "1PC"
}
]
},
"miniRules": {},
"fareBasis": "TSE00CSF"
},
{
"segmentId": "4",
"sequence": 2,
"bookingCode": "B",
"cabinClass": "ECONOMY",
"available": 9,
"departureCode": "PVG",
"departureName": "Shanghai",
"departureDate": "2025-11-30",
"departureTime": "23:05",
"departureTerminal": "1",
"arrivalCode": "HAN",
"arrivalName": "Hanoi",
"arrivalDate": "2025-12-01",
"arrivalTime": "01:45",
"arrivalTerminal": "2",
"airlines": "MU",
"airlinesName": "CHINA EASTERN AIRLINES",
"equipment": "73L",
"flightNumber": "5075",
"flightTime": 220,
"stopTime": 0,
"baggageRules": {
"adults": [
{
"baggageAmount": "1PC",
"carryOnAmount": "1PC"
}
]
},
"miniRules": {},
"fareBasis": "TSE00CSF"
}
]
}
]
}
],
"passengers": [
{
"Index": 1,
"FirstName": "NGUYEN",
"LastName": "THAI VAN",
"Gender": "M",
"Type": 1,
"Nationality": "VN",
"IdNumber": "1231ASD",
"IdType": "passport",
"IdExpiryDate": "2030-11-28",
"DependantIndex": -1,
"IdIssuedCountry": "EG"
}
],
"ContactInfo": {
"PhoneNumber": "0123456789",
"Email": "van.nguyen@tripdata.vn",
"CountryTelCode": "84",
"Name": "Nguyen Thai Van"
}
}
Request Body Description
The request body is a JSON object containing the following key-value pairs:
| Field |
Type |
Required |
Description |
Type |
String |
✅ Yes |
The type of the trip. Example: "ROUND_TRIP" |
Adults |
Integer |
✅ Yes |
Number of adult passengers. |
Children |
Integer |
❌ No |
Number of child passengers. Defaults to 0 if not provided. |
Infants |
Integer |
❌ No |
Number of infant passengers. Defaults to 0 if not provided. |
solutions |
Array |
✅ Yes |
An array containing the selected flight solution. This array must contain exactly one object. See the solutions Array Structure. |
ContactInfo |
Object |
✅ Yes |
Contact information for the booking. See the ContactInfo Object Structure. |
passengers |
Array |
✅ Yes |
An array of passenger objects, each containing details for a single passenger. See the passengers Array Structure. |
CallbackUrl |
String |
❌ No |
(Optional) If provided, the system will use this URL to send booking order information to the client via HTTP callback after booking is processed. |
CallbackUrl Usage
If the client includes the CallbackUrl field in the booking request payload, the system will perform an HTTP callback to the specified URL after the booking is completed. The callback payload will contain the order information for the booking. This allows the client to receive booking status and details asynchronously.
solutions Array Structure
The solutions array contains a single JSON object that represents the chosen flight solution for booking:
| Field |
Type |
Required |
Description |
provider |
String |
✅ Yes |
The ID of the flight provider for this solution. Example: "flight.provider1" |
solutionId |
String |
✅ Yes |
A unique identifier for this particular flight solution. This ID is provided by the flight search API. |
requireEnrichment |
Bool |
✅ Yes |
Require enrich information for this flight solution. If it's true, you must call Enrich API ({{host}}/hub/flight/enrich). |
allowPayLater |
Bool |
✅ Yes |
Allow to pay later. |
isNDC |
Bool |
✅ Yes |
Indicates whether the flight is distributed through an NDC (New Distribution Capability) channel. |
fare |
Object |
✅ Yes |
Detailed fare information for this flight solution. See fare Object Structure. |
flights |
Array |
✅ Yes |
Array of objects detailing the flight legs. See flights Array Structure. |
fare Object Structure
This object provides a detailed breakdown of the fare for the flight solution:
| Field |
Type |
Required |
Description |
adultFare |
Object |
✅ Yes |
Contains fare breakdown specific to adult passengers. See the adultFare Object Structure below. |
childFare |
Object |
❌ No |
Contains fare breakdown specific to child passengers. Omitted if there are no child passengers. See the childFare Object Structure below. |
infantFare |
Object |
❌ No |
Contains fare breakdown specific to infant passengers. Omitted if there are no infant passengers. See the infantFare Object Structure below. |
totalFare |
Number |
✅ Yes |
The sum of the base fares for all passengers (excluding taxes and fees). |
totalTax |
Number |
✅ Yes |
The sum of the taxes for all passengers. |
totalFee |
Number |
✅ Yes |
The sum of the fees for all passengers. |
totalPrice |
Number |
✅ Yes |
The grand total price including base fare, taxes, and fees. |
totalDiscountAmount |
Number |
✅ Yes |
The sum of the discounts for all passengers. |
totalPoint |
Number |
✅ Yes |
The sum of the points for all passengers. |
adultFare, childFare, infantFare Object Structure
These objects provide the specific fare breakdown for each passenger type:
| Field |
Type |
Required |
Description |
fare |
Number |
✅ Yes |
The base fare for the passenger type. |
tax |
Number |
✅ Yes |
Taxes applicable to the passenger type. |
fee |
Number |
✅ Yes |
Fees applicable to the passenger type. |
currency |
String |
✅ Yes |
The currency code for the fare elements (e.g., "USD"). This is usually "USD" even when fareVND, taxVND, and feeVND are present. |
discountAmount |
Number |
✅ Yes |
The discount for the passenger type. |
count |
Integer |
✅ Yes |
The number of passengers of this type (e.g., 2 adults). |
total |
Number |
✅ Yes |
The total price for the passenger type (base (fare + taxes + fees) * count). |
point |
Integer |
✅ Yes |
Points of the voucher. |
totalPoint |
Integer |
✅ Yes |
The total points (point * count). |
flights Array Structure
This array contains objects representing each leg of the flight itinerary.
| Field |
Type |
Required |
Description |
sequence |
Integer |
✅ Yes |
Flight leg sequence. This number indicates the order of the flight leg within the itinerary. The sequence starts at 1 and increments for each subsequent flight leg in the itinerary. |
flightDuration |
Integer |
✅ Yes |
Total flight time in minutes for the entire leg. |
travelDuration |
Integer |
✅ Yes |
Total travel time in minutes for the entire leg (including layovers). |
journeyId |
Guid |
✅ Yes |
The journey object that groups all flight segments of a single trip. |
segments |
Array |
✅ Yes |
Array of flight segments. See segments Array Structure below. |
segments Array Structure
Each object represents a flight segment:
| Field |
Type |
Required |
Description |
segmentId |
String |
✅ Yes |
Unique identifier for the segment. |
sequence |
Integer |
✅ Yes |
Segment order within the leg. |
bookingCode |
String |
✅ Yes |
Fare class code (e.g., "X"). This code represents the specific fare class that applies to this flight segment. Contact the airline for decode the real meaning of bookingCode. |
cabinClass |
String |
✅ Yes |
Cabin class for the segment (e.g., "ECONOMY"). |
available |
Integer |
✅ Yes |
Number of seats available in this class. |
departureCode |
String |
✅ Yes |
IATA departure airport code (e.g., "SGN"). |
departureName |
String |
✅ Yes |
Departure airport name (e.g., "Ho Chi Minh City"). |
departureDate |
String |
✅ Yes |
Departure date (YYYY-MM-DD) (e.g., "2025-06-20"). |
departureTime |
String |
✅ Yes |
Departure time (HH:mm) (e.g., "12:50"). |
departureTerminal |
String |
✅ Yes |
Departure terminal (e.g., "1"). |
arrivalCode |
String |
✅ Yes |
IATA arrival airport code (e.g., "HAN"). |
arrivalName |
String |
✅ Yes |
Arrival airport name (e.g., "Hanoi"). |
arrivalDate |
String |
✅ Yes |
Arrival date (YYYY-MM-DD) (e.g., "2025-06-20"). |
arrivalTime |
String |
✅ Yes |
Arrival time (HH:mm) (e.g., "15:00"). |
arrivalTerminal |
String |
✅ Yes |
Arrival terminal (e.g., "1"). |
airlines |
String |
✅ Yes |
2-letter airline code (e.g., "QH"). |
airlinesName |
String |
✅ Yes |
Airline name (e.g., "BAMBOO AIRWAYS"). |
equipment |
String |
✅ Yes |
Aircraft type (e.g., "320"). |
flightNumber |
String |
✅ Yes |
Flight number (e.g., "242"). |
flightTime |
Integer |
✅ Yes |
Flight time in minutes. |
stopTime |
Integer |
✅ Yes |
Layover time in minutes (0 for direct flights). |
baggageRules |
Object |
✅ Yes |
Baggage rules for the segment. See baggageRules Structure below. |
miniRules |
Object |
✅ Yes |
Penalty rules for the segment. See miniRules Structure below. |
fareBasis |
String |
❌ No |
Indicates the fare basis code that defines the fare type and rules applied to the ticket. |
baggageRules Structure
| Field |
Type |
Description |
adults |
Array |
Baggage rules for adults |
children |
Array |
Baggage rules for children |
infants |
Array |
Baggage rules for infants |
Baggage Rule Object:
| Field |
Type |
Example |
Description |
baggageAmount |
String |
"0PC" |
Checked baggage allowance (e.g., "0PC" = 0 pieces) |
baggageWeight |
String |
"8KG" |
Checked baggage weight limit (e.g., "7KG" = 7 kilograms) |
carryOnAmount |
String |
"1PC" |
Cabin baggage allowance (e.g., "1PC" = 1 piece) |
carryOnWeight |
String |
"7KG" |
Cabin baggage weight limit (e.g., "7KG" = 7 kilograms) |
miniRules Structure
| Field |
Type |
Description |
adults |
Array |
Change/refund rules for adults |
children |
Array |
Change/refund rules for children |
infants |
Array |
Change/refund rules for infants |
Rule Object:
| Field |
Type |
Example |
Description |
miniruleText |
String |
"example rule" |
The text rule. |
miniruleHtml |
String |
" example html rule " |
The html rule. |
penaltyType |
String |
"REFUND" |
Fee type (REFUND, REISSUE). |
allowRefund |
String |
"NOT_ALLOWED" |
Indicates if a refund is allowed (ALLOW, NOT_ALLOWED). |
situation |
String |
"BEFORE_DEPARTURE" |
When the penalty applies (BEFORE_DEPARTURE, AFTER_DEPARTURE). |
noShowTime |
String |
"BEFORE" |
No-show timing relative to departure. |
noShowTimeUnit |
String |
"H" |
Time unit for the no-show period. |
amount |
Number |
0.0 |
Fee amount. |
currency |
String |
"USD" |
The currency code. |
percent |
Number |
0.0 |
Fee percentage of the base fare. |
baseType |
String |
"FARE" |
Fee calculation base (FARE = total fare). |
| Field |
Type |
Required |
Description |
Name |
String |
✅ Yes |
Full name of the contact person. |
PhoneNumber |
String |
✅ Yes |
Phone number of the contact person. |
Email |
String |
✅ Yes |
Email address of the contact person. |
CountryTryCode |
String |
✅ Yes |
The international telephone code of the contact's phone number (e.g., "84" for Vietnam). |
passengers Array Structure
This array specifies information about each passenger for whom the booking is being made.
| Field |
Type |
Required |
Description |
Index |
Integer |
✅ Yes |
A unique number identifier for the passenger, starting from 1. |
FirstName |
String |
✅ Yes |
Passenger's first name. |
LastName |
String |
✅ Yes |
Passenger's last name. |
Gender |
String |
✅ Yes |
Passenger's gender. Possible values: "M" (Male), "F" (Female) |
Type |
Integer |
✅ Yes |
Passenger Type. Possible values: 1 (Adult), 2 (Child), 3 (Infant) |
DateOfBirth |
String |
✅ Yes |
Passenger's date of birth (YYYY-MM-DD). |
Nationality |
String |
✅ Yes |
Passenger's nationality (ISO 3166-1 alpha-2 country code, e.g., "VN" for Vietnam). |
IdNumber |
String |
✅ Yes |
Passenger's ID card or Passport number. |
IdType |
String |
✅ Yes |
Type of ID used. Possible values: "passport", "idcard" etc. |
IdExpiryDate |
String |
✅ Yes |
Expiry date of the ID (YYYY-MM-DD). |
Ancillaries |
Object |
❌ No |
A empty Object of ancillary services selected for this passenger. |
Sample Response
{
"id": "74f2c086-fb93-4dd9-8024-10f91573c1ed",
"readableId": "FGVSO6",
"isInternational": false,
"orderBaseInfo": {
"providerCode": "flight.provider2.1A",
"providerReferenceId": "9beb90ec-edfcf9e5-9cd68787-90878787-878787",
"status": "TO_BE_PAID",
"statusIsFinal": false,
"bookingType": "flight",
"totalAmount": 18388000,
"totalSalesAmount": 0,
"totalOriginalAmount": 18388000,
"totalPriceModifier": 0,
"totalServiceFee": 0,
"refundAmount": 0,
"refundFee": 0,
"currency": "VND",
"convertionRate": 1,
"type": "ROUND_TRIP",
"pnr": "FGVSO6",
"airlinePNR": "",
"orderType": "O",
"bookingCode": "B",
"isNeedRebookPNR": false,
"passengerCount": 1,
"totalAmountAtHotel": 0,
"refunded": false
},
"orderFlightInfo": {
"id": "78da141d-d446-4e0e-8f51-52bd0614f10b",
"orderId": "74f2c086-fb93-4dd9-8024-10f91573c1ed",
"flightJourneys": [
{
"id": "541034fe-4bcb-4f31-14a9-08de1cde858d",
"flightBookingInfoId": "78da141d-d446-4e0e-8f51-52bd0614f10b",
"sequence": 1,
"arrivalDate": "2025-11-07T00:00:00:0000",
"arrivalTime": "18:05",
"arrivalCode": "CDG",
"arrivalName": "Paris",
"departureDate": "2025-11-07T00:00:00:0000",
"departureTime": "02:45",
"departureCode": "HAN",
"departureName": "Hanoi",
"travelTime": 1280,
"isNDC": false,
"isChange": false,
"pnrNumber": "FGVSO6",
"status": "TO_BE_PAID",
"fareHoldTime": "2025-11-07T16:59:00:0000",
"flightSegments": [
{
"id": "83d41cd8-dfae-4104-9b02-1923d2f3b7ec",
"flightJourneyId": "541034fe-4bcb-4f31-14a9-08de1cde858d",
"sequence": 1,
"airlinesCode": "MU",
"airlinesName": "CHINA EASTERN AIRLINES",
"arrivalCode": "PVG",
"arrivalName": "Shanghai",
"arrivalDate": "2025-11-07T00:00:00:0000",
"arrivalTime": "06:45",
"departureCode": "HAN",
"departureName": "Hanoi",
"departureDate": "2025-11-07T00:00:00:0000",
"departureTime": "02:45",
"bookingCode": "B",
"cabinClass": "ECONOMY",
"equipment": "73L",
"flightNumber": "5076",
"flightTime": 180,
"departureTerminal": "2",
"arrivalTerminal": "1",
"codeShare": false,
"stopTime": 340,
"hasStop": true,
"operatingFlightAirlinesName": "CHINA EASTERN AIRLINES",
"operatingFlightNumber": "5076",
"operatingFlightAirlinesCode": "MU",
"baggageRules": {
"adults": [
{
"baggageAmount": "1PC",
"carryOnAmount": "1PC"
}
],
"children": [],
"infants": []
},
"miniRules": {
"adults": [],
"children": [],
"infants": []
},
"fareBasis": "VSE00CSF"
},
{
"id": "60f5c9d7-870d-42d6-9e6f-5881b3817289",
"flightJourneyId": "541034fe-4bcb-4f31-14a9-08de1cde858d",
"sequence": 2,
"airlinesCode": "MU",
"airlinesName": "CHINA EASTERN AIRLINES",
"arrivalCode": "CDG",
"arrivalName": "Paris",
"arrivalDate": "2025-11-07T00:00:00:0000",
"arrivalTime": "18:05",
"departureCode": "PVG",
"departureName": "Shanghai",
"departureDate": "2025-11-07T00:00:00:0000",
"departureTime": "12:25",
"bookingCode": "V",
"cabinClass": "ECONOMY",
"equipment": "77W",
"flightNumber": "569",
"flightTime": 760,
"departureTerminal": "1",
"arrivalTerminal": "2E",
"codeShare": false,
"stopTime": 0,
"hasStop": false,
"operatingFlightAirlinesName": "CHINA EASTERN AIRLINES",
"operatingFlightNumber": "569",
"operatingFlightAirlinesCode": "MU",
"baggageRules": {
"adults": [
{
"baggageAmount": "1PC",
"carryOnAmount": "1PC"
}
],
"children": [],
"infants": []
},
"miniRules": {
"adults": [],
"children": [],
"infants": []
},
"fareBasis": "VSE00CSF"
}
]
},
{
"id": "a1dfa208-96f9-4aee-14aa-08de1cde858d",
"flightBookingInfoId": "78da141d-d446-4e0e-8f51-52bd0614f10b",
"sequence": 2,
"arrivalDate": "2025-12-01T00:00:00:0000",
"arrivalTime": "01:45",
"arrivalCode": "HAN",
"arrivalName": "Hanoi",
"departureDate": "2025-11-29T00:00:00:0000",
"departureTime": "20:05",
"departureCode": "CDG",
"departureName": "Paris",
"travelTime": 1420,
"isNDC": false,
"isChange": false,
"pnrNumber": "FGVSO6",
"status": "TO_BE_PAID",
"fareHoldTime": "2025-11-07T16:59:00:0000",
"flightSegments": [
{
"id": "cadba6f8-bdf1-4e52-9939-fd9347985ed1",
"flightJourneyId": "a1dfa208-96f9-4aee-14aa-08de1cde858d",
"sequence": 1,
"airlinesCode": "MU",
"airlinesName": "CHINA EASTERN AIRLINES",
"arrivalCode": "PVG",
"arrivalName": "Shanghai",
"arrivalDate": "2025-11-30T00:00:00:0000",
"arrivalTime": "14:20",
"departureCode": "CDG",
"departureName": "Paris",
"departureDate": "2025-11-29T00:00:00:0000",
"departureTime": "20:05",
"bookingCode": "T",
"cabinClass": "ECONOMY",
"equipment": "77W",
"flightNumber": "570",
"flightTime": 675,
"departureTerminal": "2E",
"arrivalTerminal": "1",
"codeShare": false,
"stopTime": 525,
"hasStop": true,
"operatingFlightAirlinesName": "CHINA EASTERN AIRLINES",
"operatingFlightNumber": "570",
"operatingFlightAirlinesCode": "MU",
"baggageRules": {
"adults": [
{
"baggageAmount": "1PC",
"carryOnAmount": "1PC"
}
],
"children": [],
"infants": []
},
"miniRules": {
"adults": [],
"children": [],
"infants": []
},
"fareBasis": "TSE00CSF"
},
{
"id": "fc76f1b5-95fb-41f8-b4fa-4ed6d2e0d93f",
"flightJourneyId": "a1dfa208-96f9-4aee-14aa-08de1cde858d",
"sequence": 2,
"airlinesCode": "MU",
"airlinesName": "CHINA EASTERN AIRLINES",
"arrivalCode": "HAN",
"arrivalName": "Hanoi",
"arrivalDate": "2025-12-01T00:00:00:0000",
"arrivalTime": "01:45",
"departureCode": "PVG",
"departureName": "Shanghai",
"departureDate": "2025-11-30T00:00:00:0000",
"departureTime": "23:05",
"bookingCode": "B",
"cabinClass": "ECONOMY",
"equipment": "73L",
"flightNumber": "5075",
"flightTime": 220,
"departureTerminal": "1",
"arrivalTerminal": "2",
"codeShare": false,
"stopTime": 0,
"hasStop": false,
"operatingFlightAirlinesName": "CHINA EASTERN AIRLINES",
"operatingFlightNumber": "5075",
"operatingFlightAirlinesCode": "MU",
"baggageRules": {
"adults": [
{
"baggageAmount": "1PC",
"carryOnAmount": "1PC"
}
],
"children": [],
"infants": []
},
"miniRules": {
"adults": [],
"children": [],
"infants": []
},
"fareBasis": "TSE00CSF"
}
]
}
]
},
"orderESimInfos": [],
"passengers": [
{
"flightBookingId": "74f2c086-fb93-4dd9-8024-10f91573c1ed",
"index": 1,
"type": 1,
"dependantIndex": -1,
"idIssuedCountry": "EG",
"idIssueDate": "0001-01-01T00:00:00:0000",
"idExpiryDate": "2030-11-28T00:00:00:0000",
"frequentFlyerNumbers": [],
"ticketList": [],
"ancillaries": [],
"seats": [],
"id": "3a6458d9-3031-4811-94c7-06c8ea45d282",
"firstName": "NGUYEN",
"lastName": "THAI VAN",
"gender": "M",
"dateOfBirth": "0001-01-01T00:00:00:0000",
"nationality": "VN",
"idNumber": "1231ASD",
"idType": "passport",
"updatedUtc": "2025-11-06T07:01:58:1166",
"deleted": false
}
],
"contactInfo": {
"id": "03bdbe65-013c-40ea-bf7c-ef01bcaf0f99",
"name": "Nguyen Thai Van",
"countryTelCode": "84",
"phoneNumber": "0123456789",
"email": "van.nguyen@tripdata.vn",
"flightBookingId": "74f2c086-fb93-4dd9-8024-10f91573c1ed",
"deleted": false
},
"priceInfo": {
"id": "3e79e664-8c9b-428b-924e-5307cc8b0064",
"orderId": "74f2c086-fb93-4dd9-8024-10f91573c1ed",
"pricingType": 1,
"couponId": "00000000-0000-0000-0000-000000000000",
"itemType": 0,
"passengerTotalAmount": 18388000,
"ancillaryTotalAmount": 0,
"seatTotalAmount": 0,
"ticketFeeAmount": 0,
"totalAmount": 18388000,
"totalOriginalAmount": 18388000,
"priceModifier": 0,
"couponAmount": 0,
"handlingFee": 0,
"totalFare": 9698000,
"convertionRate": 1,
"totalServiceFee": 0,
"currency": "VND",
"totalTax": 0,
"surcharges": 0,
"amount": 9698000,
"numberOfRooms": 1,
"averagePerNightAmount": 0,
"numberOfNights": 0,
"priceDetails": [
{
"id": "cd37f332-8254-48c3-92d7-9d5ef3bab819",
"priceInfoId": "3e79e664-8c9b-428b-924e-5307cc8b0064",
"count": 1,
"type": 1,
"amount": 9698000,
"originalAmount": 9698000,
"priceModifier": 0,
"serviceFee": 0,
"tax": 8690000,
"fee": 0,
"totalAmount": 18388000,
"averagePerNightAmount": 0,
"taxAmount": 0,
"numberOfNights": 0,
"surcharges": 0,
"discount": 0,
"hotelPricePerNights": [],
"taxes": [],
"discounts": []
}
],
"createdBy": "van.nguyen@tripdata.vn",
"createdUtc": "2025-11-06T07:01:58:0923",
"updatedUtc": "2025-11-06T07:01:58:0901",
"refundable": false,
"hasBreakfast": false,
"extraBed": false,
"nonSmoking": false
},
"createdBy": "van.nguyen@tripdata.vn",
"createdUtc": "2025-11-06T07:01:58:1033",
"updatedBy": "van.nguyen@tripdata.vn",
"updatedUtc": "2025-11-06T07:02:35:7343",
"agentPath": "NV9999"
}
Response Field Description
The response is a JSON object containing information about the flight booking:
| Field |
Type |
Description |
id |
String |
Unique identifier for the booking (UUID). Example: "fe05e6cd-c3d9-4cb9-9546-3ae648f0b723" |
readableId |
String |
The readable id. |
isInternational |
Bool |
Indicates whether the flight is international. |
orderBaseInfo |
Object |
Basic information about the order. See orderBaseInfo Object Structure. |
orderFlightInfo |
Object |
Information about the flights in the order. See orderFlightInfo Object Structure. |
passengers |
Array |
Array containing passenger information. See passengers Array Structure. |
contactInfo |
Object |
Contact information for the booking. See contactInfo Object Structure. |
priceInfo |
Object |
Detailed pricing information. See priceInfo Object Structure. |
createdBy |
String |
Email address of the user who created the booking. Example: "thanh.nguyen1@tripdata.vn" |
createdUtc |
String |
Date and time the booking was created (UTC, ISO 8601 format). Example: "2025-06-05T08:38:19:4900" |
updatedBy |
String |
Email address of the user who last updated the booking. Example: "thanh.nguyen1@tripdata.vn" |
updatedUtc |
String |
Date and time the booking was last updated (UTC, ISO 8601 format). Example: "2025-06-05T08:38:21:7477" |
agentPath |
String |
Path or identifier of the agent. |
orderBaseInfo Object Structure
| Field |
Type |
Description |
providerCode |
String |
ID of the flight provider. Example: "flight.provider1" |
providerReferenceId |
String |
Provider's unique identifier for the booking. Example: "917491127052815601" |
status |
String |
Current status of the booking. Example: "TO_BE_PAID". Possible values depend on the system's workflow. |
statusIsFinal |
Boolean |
Indicates if the current status is a final state (e.g., true if booked successfully). |
bookingType |
String |
Type of booking. Example: "flight" |
totalAmount |
Number |
Total amount for the booking. Example: 148.74 |
totalSaleAmount |
Number |
Total sale amount for booking. |
totalOriginalAmount |
Number |
The originally requested total amount for the booking. This can differ from totalAmount after a price change. Example: 148.74 |
totalPriceModifier |
Number |
Amount the total price was modified (e.g., with a coupon). Example: 0 |
totalServiceFee |
Number |
Total service fee for booking. |
refundAmount |
Number |
Refund amount for booking. |
refundFee |
Number |
Refund fee for booking. |
currency |
String |
Currency code used for the booking. Example: "USD" |
convertionRate |
Number |
Conversion rate from USD to VND. Example: 26244 |
type |
String |
Trip type. Example: "ROUND_TRIP" |
pnr |
String |
Passenger Name Record (PNR) code for the booking. Example: "WC2A6H" |
airlinePNR |
String |
Airline PNR code (if different from pnr). Example: "" (empty string if same as pnr) |
orderType |
String |
Order type. Example: "O" (May represent a standard order). |
bookingCode |
String |
Fare class code (e.g., "T"). Contact the airline for decode the real meaning of bookingCode. Example: "T" |
isNeedRebookPNR |
Boolean |
Indicates if it's need to rebook PNR. Example: false |
passengerCount |
Integer |
Total number of passengers in the booking. Example: 1 |
totalAmountAtHotel |
Number |
Total amount for hotel or any other. Example: 0 |
refunded |
Boolean |
Is refunded or not. Example:false |
orderFlightInfo Object Structure
| Field |
Type |
Description |
id |
String |
Unique identifier for the flight information (UUID). Example: "cae6e870-6204-48c7-a008-e6459804e47f" |
orderId |
String |
ID of the associated order (matches the top-level id field). Example: "fe05e6cd-c3d9-4cb9-9546-3ae648f0b723" |
flightJourneys |
Array |
Array of flight journey objects, detailing each flight leg. See flightJourneys Array Structure. |
flightJourneys Array Structure
Each object represents a leg of the flight itinerary:
| Field |
Type |
Description |
id |
String |
Unique identifier for this flight journey (UUID). Example: "2b2c6be2-7068-4fac-9098-4e6574ed6a66" |
flightBookingInfoId |
String |
ID of the flight booking information (matches orderFlightInfo.id). Example: "cae6e870-6204-48c7-a008-e6459804e47f" |
sequence |
Integer |
Sequence number of the flight journey (1, 2, ...). Starts from 1. Example: 1 |
arrivalDate |
String |
Arrival date (YYYY-MM-DDTHH:mm:ss.SSSS format). Example: "2025-07-08T00:00:00:0000" |
arrivalTime |
String |
Arrival time (HH:mm). Example: "07:55" |
arrivalCode |
String |
IATA code of the arrival airport. Example: "HAN" |
arrivalName |
String |
Name of the arrival airport. Example: "Hanoi" |
departureDate |
String |
Departure date (YYYY-MM-DDTHH:mm:ss.SSSS format). Example: "2025-07-08T00:00:00:0000" |
departureTime |
String |
Departure time (HH:mm). Example: "05:45" |
departureCode |
String |
IATA code of the departure airport. Example: "SGN" |
departureName |
String |
Name of the departure airport. Example: "Ho Chi Minh City" |
travelTime |
Integer |
Total travel time in minutes. Example: 130 |
isNDC |
Bool |
Indicates whether the flight is distributed through an NDC (New Distribution Capability) channel. |
isChange |
Boolean |
Check if flight have change or not. Example: false |
pnrNumber |
String |
The pnr number. |
status |
String |
The status of journey. |
fareHoldTime |
String |
The time can hold fare. |
flightSegments |
Array |
Array of flight segment objects. See flightSegments Array Structure. |
fare |
Object |
The detailed pricing and cost information for this journey. See Journey Fare Object Structure. |
Journey Fare Object Structure
This object provides detailed pricing and cost information for a specific journey. The structure matches the sample fare model from booking/order response.
| Field |
Type |
Description |
id |
String |
Unique identifier for the fare info (UUID). |
orderId |
String |
ID of the order this fare info belongs to. |
couponId |
String |
ID of the coupon applied to the booking. |
itemType |
Integer |
Type of item being priced (e.g., flight, ancillary, etc.). |
passengerTotalAmount |
Number |
Total amount for all passengers in this journey. |
ancillaryTotalAmount |
Number |
Total amount for ancillary services in this journey. |
seatTotalAmount |
Number |
Total amount for seat reservations in this journey. |
ticketFeeAmount |
Number |
Total amount for ticket issuance fees. |
totalAmount |
Number |
The final total amount for the journey. |
couponAmount |
Number |
Amount reduced due to coupons. |
handlingFee |
Number |
Handling fee. |
totalFare |
Number |
Total fare excluding tax and fee. |
totalTax |
Number |
Total tax. |
amount |
Number |
Total amount. |
priceDetails |
Array |
Array of ticket price details. Each item includes a type field: 1 = Adult, 2 = Children, 3 = Infant. |
createdBy |
String |
Creator of this fare info. |
createdUtc |
String |
Created datetime. |
updatedUtc |
String |
Updated datetime. |
refundable |
Boolean |
Indicates if the journey is refundable. |
Notes
- The
fare field is only present in each journey if the booking/order returns journey-level pricing.
- The structure and fields are similar to the top-level
priceInfo object, but scoped to the specific journey.
- If journey-level pricing is not available, the
fare field will be omitted or null.
Example
"flightJourneys": [
{
"id": "2b2c6be2-7068-4fac-9098-4e6574ed6a66",
"sequence": 1,
// ...existing fields...,
"fare": {
"id": "088b8ab3-f09c-4860-b9ee-39ef662d610a",
"orderId": "bf20f9e9-f5f2-4587-9aa4-9bb746fd2e62",
"flightJourneyId": "643d8c99-1656-452d-8442-03d29d186c31",
"pricingType": 2,
"couponId": "00000000-0000-0000-0000-000000000000",
"itemType": 0,
"passengerTotalAmount": 2128000.0,
"ancillaryTotalAmount": 0.0,
"seatTotalAmount": 0.0,
"ticketFeeAmount": 0.0,
"totalAmount": 2128000.0,
"totalOriginalAmount": 2128000.0,
"priceModifier": 0.0,
"couponAmount": 0.0,
"handlingFee": 0.0,
"totalFare": 1419000.0,
"convertionRate": 1.0,
"totalTax": 0.0,
"amount": 1419000.0,
"priceDetails": [
{
"id": "74e9eb8d-7ec1-48a8-9705-62632225cf6d",
"priceInfoId": "088b8ab3-f09c-4860-b9ee-39ef662d610a",
"count": 1,
"type": 1,
"amount": 1419000.0,
"originalAmount": 1419000.0,
"priceModifier": 0.0,
"tax": 709000.0,
"fee": 0.0,
"totalAmount": 2128000.0,
"taxAmount": 0.0,
}
],
"createdBy": "694E6C9E-ED3C-43EB-A50F-389ADE398E85",
"createdUtc": "0001-01-01T00:00:00:0000",
"updatedUtc": "2025-07-15T19:43:08:7959",
},
}
]
flightSegments Array Structure
Each object represents a segment within a flight journey:
| Field |
Type |
Description |
id |
String |
Unique identifier for the flight segment (UUID). Example: "f95a2ce8-baa2-41c2-a9c6-543ecca78e4a" |
flightJourneyId |
String |
ID of the flight journey this segment belongs to (matches flightJourneys.id). Example: "2b2c6be2-7068-4fac-9098-4e6574ed6a66" |
sequence |
Integer |
Segment order within the leg (starting from 1). Example: 1 |
airlinesCode |
String |
2-letter airline code. Example: "VU" |
airlinesName |
String |
Airline name. Example: "VIETRAVEL AIRLINES" |
arrivalCode |
String |
IATA arrival airport code. Example: "HAN" |
arrivalName |
String |
Arrival airport name. Example: "Hanoi" |
arrivalDate |
String |
Arrival date (YYYY-MM-DDTHH:mm:ss.SSSS format). Example: "2025-07-08T00:00:00:0000" |
arrivalTime |
String |
Arrival time (HH:mm). Example: "07:55" |
departureCode |
String |
IATA departure airport code. Example: "SGN" |
departureName |
String |
Departure airport name. Example: "Ho Chi Minh City" |
departureDate |
String |
Departure date (YYYY-MM-DDTHH:mm:ss.SSSS format). Example: "2025-07-08T00:00:00:0000" |
departureTime |
String |
Departure time (HH:mm). Example: "05:45" |
bookingCode |
String |
Fare class code. Example: "T". Contact the airline to decode the real meaning of bookingCode. |
cabinClass |
String |
Cabin class. Example: "ECONOMY" |
equipment |
String |
Aircraft type. Example: "32S" |
flightNumber |
String |
Flight number. Example: "750" |
flightTime |
Integer |
Flight time in minutes. Example: 130 |
departureTerminal |
String |
Departure Terminal. Example: 1 |
arrivalTerminal |
String |
Arrival Terminal. Example: 1 |
codeShare |
Boolean |
Check if the the flights segments have code share,Example: false |
stopTime |
Integer |
Layover time in minutes (0 for direct flights). Example: 0 |
hasStop |
Boolean |
hasStop check the the flights segments have stop,Example: false |
operatingFlightAirlinesName |
String |
Name of the operating airline. |
operatingFlightNumber |
String |
Flight number operated by the airline. |
operatingFlightAirlinesCode |
String |
Airline code. |
baggageRules |
Object |
Baggage allowance rules for the segment. See baggageRules Structure. |
miniRules |
Object |
Rules regarding penalties, refunds, and reissues for the segment. See miniRules Structure. |
baggageRules Structure
This object specifies baggage allowances for adults, children, and infants.
| Field |
Type |
Description |
adults |
Array |
Array of baggage rule objects for adults. See Baggage Rule Object. |
children |
Array |
Array of baggage rule objects for children (if any). |
infants |
Array |
Array of baggage rule objects for infants (if any). |
Baggage Rule Object
| Field |
Type |
Example |
Description |
baggageAmount |
String |
"0PC" |
Checked baggage allowance (e.g., "0PC" = 0 pieces) |
baggageWeight |
String |
"8KG" |
Checked baggage weight limit (e.g., "7KG" = 7 kilograms) |
carryOnAmount |
String |
"1PC" |
Cabin baggage allowance (e.g., "1PC" = 1 piece) |
carryOnWeight |
String |
"7KG" |
Cabin baggage weight limit (e.g., "7KG" = 7 kilograms) |
miniRules Structure
| Field |
Type |
Description |
adults |
Array |
Array of penalty rule objects for adults. See Rule Object. |
children |
Array |
Array of penalty rule objects for children (if any). |
infants |
Array |
Array of penalty rule objects for infants (if any). |
Rule Object
| Field |
Type |
Example |
Description |
miniruleText |
String |
"example rule" |
The text rule. |
miniruleHtml |
String |
" example html rule " |
The html rule. |
penaltyType |
String |
"REFUND" |
Fee type (REFUND, REISSUE). |
allowRefund |
String |
"NOT_ALLOWED" |
Indicates if a refund is allowed (ALLOW, NOT_ALLOWED). |
situation |
String |
"BEFORE_DEPARTURE" |
When the penalty applies (BEFORE_DEPARTURE, AFTER_DEPARTURE). |
noShowTime |
String |
"BEFORE" |
No-show timing relative to departure. |
noShowTimeUnit |
String |
"H" |
Time unit for the no-show period. |
amount |
Number |
0.0 |
Fee amount. |
penaltyPercent |
Number |
0.0 |
Fee percentage of the base fare. |
baseType |
String |
"FARE" |
Fee calculation base (FARE = total fare). |
| Field |
Type |
Description |
id |
String |
Unique identifier for contact (UUID). Example: "41b419aa-e9c0-4bc0-95f2-f1b9710dd578" |
Name |
String |
Full name of the contact person. Example: "NGUYEN CONG THANH" |
PhoneNumber |
String |
Phone number of the contact person. Example: "2929292929" |
Email |
String |
Email address of the contact person. Example: "thanh.nguyen1@tripdata.vn" |
CountryTelCode |
String |
International telephone code of the contact's phone number. Example: "84" |
flightBookingId |
String |
Flight booking unique identification. Example:"fe05e6cd-c3d9-4cb9-9546-3ae648f0b723" |
deleted |
Boolean |
Check if contact info is deleted or not. Example:false |
passengers Array Structure
This array specifies information about each passenger for whom the booking is being made.
| Field |
Type |
Description |
flightBookingId |
String |
Id of the flight booking unique. Example: "fe05e6cd-c3d9-4cb9-9546-3ae648f0b723" |
index |
Integer |
A unique number identifier for the passenger, starting from 1. Example: "1" |
type |
Integer |
Passenger Type. Possible values: 1 (Adult), 2 (Child), 3 (Infant) Example: "1" |
idIssueDate |
String |
Unknow data. Example: "0001-01-01T00:00:00:0000" |
idExpiryDate |
String |
Expiry date of the ID (YYYY-MM-DDTHH:mm:ss.SSSS format). Example: "2026-08-19T00:00:00:0000" |
ticketList |
Object |
List of ticket associated. Example:[] |
ancillaries |
Object |
Object contains ancillary services. Example:[] |
seats |
Array |
object contains passenger seats. Example:[] |
id |
String |
unique passenger ID. Example: "785c1ff9-4b36-4cf8-9025-85ae5e345d60" |
firstName |
String |
Passenger's first name. Example: "CONG THANH" |
lastName |
String |
Passenger's last name. Example: "NGUYEN" |
gender |
String |
Passenger's gender. Possible values: "M" (Male), "F" (Female). Example: "M" |
dateOfBirth |
String |
Passenger's date of birth (YYYY-MM-DDTHH:mm:ss.SSSS format). Example: "1993-08-19T00:00:00:0000" |
nationality |
String |
Passenger's nationality (ISO 3166-1 alpha-2 country code). Example: "VN" |
idNumber |
String |
Passenger's ID card or Passport number. Example: "123456789" |
idType |
String |
Type of ID used. Possible values: "passport".Example: "passport" |
updatedUtc |
String |
update time. Example: "2025-06-05T08:38:19:5033" |
deleted |
Boolean |
check if it deleted or not. Example: false |
priceInfo Object Structure
This object provides detailed pricing and cost information.
| Field |
Type |
Description |
id |
String |
Unique identifier for the price information (UUID). Example: "9fab6075-8b22-4e7d-aa1d-2813d6ecc2e9" |
orderId |
String |
ID of the order this price information belongs to (matches the top-level id field). Example: "fe05e6cd-c3d9-4cb9-9546-3ae648f0b723" |
pricingType |
Integer |
Type of pricing. |
couponId |
String |
ID of the coupon applied to the booking. Example: "00000000-0000-0000-0000-000000000000" (all zeros indicates no coupon) |
itemType |
Integer |
Type of item being priced (e.g., might represent a flight, ancillary service, etc.). Example: 0 |
passengerTotalAmount |
Number |
Total amount for all passengers. Example: 148.74 |
ancillaryTotalAmount |
Number |
Total amount for ancillary services. Example: 0 |
seatTotalAmount |
Number |
Total amount for seat reservations. Example: 0 |
ticketFeeAmount |
Number |
Total amount for ticket issuance fees. Example: 0 |
totalAmount |
Number |
The final total amount for the booking. Example: 148.74 |
couponAmount |
Number |
Amount reduced due to coupons. Example: 0 |
handlingFee |
Number |
Handling fee. Example: 0 |
totalFare |
Number |
Total Fare exclude tax and fee. Example: 92.48 |
convertionRate |
Number |
Conversion rate from USD to VND. Example: 26244 |
currency |
String |
Currency code for the amounts (e.g., "USD"). Example: "USD" |
totalTax |
Number |
Total tax. Example: 0 |
surcharges |
Number |
More expense if have. |
amount |
Number |
Total Amount |
numberOfRooms |
Number |
Number of rooms for hotel information |
averagePerNightAmount |
Number |
Per night amount. |
numberOfNights |
Number |
Number of nights. |
priceDetails |
Object |
Object contains ticket price details. |
createdBy |
String |
Person create for these price. Example: "thanh.nguyen1@tripdata.vn" |
createdUtc |
String |
Created Datetime . Example: "0001-01-01T00:00:00:0000" |
updatedUtc |
String |
Update Datetime. Example: "2025-06-05T08:38:19:2970" |
refundable |
Boolean |
Check this conditions or not. |
hasBreakfast |
Boolean |
Check this if have breakfast or not. |
extraBed |
Boolean |
check if have extra bed or not. |
nonSmoking |
Boolean |
check non smoking or not |