This guide will help you understand the NDC API workflow for booking with branded fares.
You will have to pay a bit more in comparison to the standard fare, to avail of this service. It is only valid for single offer or one-way offers. You also have the option to use this service for splitting your reservation.
The booking with branded fares workflow uses the following endpoints to create a booking:
- AirShopping
- AirGetBrandedOffers
- AirOfferSplit (Optional)
- AirOfferPrice
- CardManagement/Storecard
- AirOrderCreate
What do you need to start?
To start booking with branded fare, you will require various payload data to process other requests. We suggest you to collect relevant information from the responses to complete the booking workflow.
Step 1. Air Shopping
You can use the AirShopping
endpoint to get itinerary list from a variety of sources, including GDS, NDC, and direct airlines before creating an order.
Execute AirShopping to get the shopping response ID and other details required to complete the booking.
What will you get in return?
Based on the preferences applied during the flight search, multiple offers will be provided in the return. Each offer is unique in terms of itinerary and pricing. For each request made, you will receive a/an:
- Shopping response ID for the request made
- Offer ID for each offer for the request made
- Passenger ID for each passenger
Step 2. Air Get Branded Offers
You can use this service, if you wish to reserve your order with added luxuries.
To avail of this air get branded offer, you need to provide the ShoppingResponseID
and OfferID
of the selected offer as a query.
curl --location --request POST 'http://newapi.tltid.com/AirGetBrandedOffers' \
--header 'Content-Type: application/json' \
--header 'Authorization: <$auth_token>' \
--data-raw '{
"GetBrandedOffersRQ": {
"ShoppingResponseId": "1628081308802512248",
"Query": {
"Offer": [
{
"OfferID": "78064811628081310642964793"
}
]
}
}
}
Visit AirGetBrandedOffers endpoint to know more about the air get branded offers and the relevent parameters.
Note: This service is only applicable to single-ticket or one way booking.
What will you get in return?
As a result of this request, you will receive several branded offers for the selected product. You must select your preferred deals from this list.
Parameters: While passing the request payload, you must provide values for the parameters like ShoppingresponseID
and OfferID
.
OR
Step 3. Air Offer Split
You can use this service if you want to break down the multi-booking offer into single one way offers and check the details of both the inbound and outbound offers independently.
To avail of this air offer split service, you need to provide the ShoppingResponseID
and OfferID
of the selected offer as a query.
"ShoppingResponseID": "1626284443070704179",
"Query": {
"Offer": [
{
"OfferID": "1626284448323283089"
}
]
}
Visit AirOfferSplit endpoint to know more about air offer split endpoint and the relevant parameters.
What will you get in return?
As a result of this request, you will get the breakdown of your multiple booking. You will be provided with the details of both the inbound and outbound offers independently.
Parameters: While passing the request payload, you must provide values for the parameters like ShoppingresponseID
and OfferID
.
Step 4. Availing Offers
You must now finalize your offer, as you have picked branded offerings. Execute AirOfferPrice endpoint to get the OfferResponseID, Fare, Penalty, and flight details.
As a result of this request, you will get:
- Offer response ID
- Fare details
- Penalty details
- Flight details
- Payment modes available
You will need these details while creating your order.
Step 5. Adding Payment Details
Once you have finalized your offer, you can book your order. Before booking the order, you will have to provide your payment details, which will be stored in our database and a token will be generated. You can use this token for your future transactions. Visit storeCard endpoint to know more about the store card and the relevant parameters.
What will you get in return?
As a result of this request, you will get a token, which will be used for future transactions.
"card_token": "a2c4644e51fd6c526a59f129413fbb6989bb8c701149de1dce921993"
Step 6. Placing the Order
The booking process has reached the last step.
You will need three things at this stage:
- The Offer ID of the offer you want to book
- Basic information about the passengers
- Payment method and information to confirm the booking
Note: The values for the parameters like CardNumber, SeriesCode, CardHolderName, ExpirationMonth, and ExpirationYear are passed by using the token that is obtained by passing the payment details in store card endpoint. The convention to pass these values followed is as mentioned in the below example:
“CardNumber”: “card_number_<token_obtained>” “SeriesCode”: “cvv_<token_obtained>” “CardHolderName”: “card_holder_name_<token_obtained>” “ExpirationYear”: “Expiration_Year_<token_obtained>” “ExpirationMonth”: “Expiration_Month_<token_obtained>”
curl --location --request POST 'http://newapi.tltid.com/AirOrderCreate' \
--header 'Content-Type: application/json' \
--header 'Authorization: <$auth_token>' \
--data-raw '{
"OrderCreateRQ": {
"ShoppingResponseId": "1628081308802512248",
"OfferResponseId": "1628081388408685213",
"Query": {
"Order": {
"Offer": [
{
"OfferID": "7806481111628081310939197204"
}
]
}
},
"BookingType": "BOOK",
"Payments": {
"Payment": [
{
"Type": "CARD",
"PassengerID": "ALL",
"Amount": 857.71,
"Method": {
"PaymentCard": {
"CardType": "CC",
"CardCode": "VI",
"CardNumber": "card_number_a2ea5a4e51fd6c546a49f165420195678abb88731249f455ceac1dd64a059f7e",
"SeriesCode": "cvv_a2ea5a4e51fd6c546a49f165420195678abb88731249f455ceac1dd64a059f7e",
"CardHolderName": "card_holder_name_a2ea5a4e51fd6c546a49f165420195678abb88731249f455ceac1dd64a059f7e",
"EffectiveExpireDate": {
"Effective": "",
"Expiration": "exp_year_a2ea5a4e51fd6c546a49f165420195678abb88731249f455ceac1dd64a059f7e-exp_month_a2ea5a4e51fd6c546a49f165420195678abb88731249f455ceac1dd64a059f7e"
}
}
},
"Payer": {
"ContactInfoRefs": "CTC1"
}
}
]
},
"DataLists": {
"PassengerList": {
"Passenger": [
{
"PassengerID": "ADT1",
"PTC": "ADT",
"BirthDate": "2000-07-21",
"NameTitle": "Mr",
"FirstName": "downey",
"MiddleName": "",
"LastName": "Robert",
"Gender": "Male",
"ContactInfoRef": "CTC1"
}
]
},
"ContactList": {
"ContactInformation": [
{
"ContactID": "CTC1",
"AgencyName": "kathir",
"EmailAddress": "kathir@gmail.com",
"Phone": {
"ContryCode": "+91",
"AreaCode": "",
"PhoneNumber": "9854785465"
},
"Mobile": {
"ContryCode": "+91",
"MobileNumber": "9854785465"
},
"Address": {
"Street": [
"testing address1",
null
],
"CityName": "chennai",
"StateProv": "AX",
"PostalCode": "123465",
"CountryCode": "AX"
},
"PassengerContact": {
"EmailAddress": "mosris@gmail.com",
"Phone": {
"ContryCode": "",
"AreaCode": "",
"PhoneNumber": "9856325698"
}
}
}
]
}
}
}
}
Visit AirOrderCreate endpoint to know more about air order create and the relevant parameters.
What will you get in return?
As a result of this request, you will get your Order ID and other details about your order. Below is the sample response of your order:
Payment Details
"ShoppingResponseId": "1628081308802512248",
"Success": {},
"Payments": {
"Payment": [
{
"Type": "CARD",
"PassengerID": "ALL",
"Amount": 857.71,
"Method": {
"PaymentCard": {
"CardType": "CC",
"CardCode": "VI",
"CardNumber": "card_number_a2ea5a4e51fd6c546a49f165420195678abb88731249f455ceac1dd64a059f7e",
"SeriesCode": "cvv_a2ea5a4e51fd6c546a49f165420195678abb88731249f455ceac1dd64a059f7e",
"CardHolderName": "card_holder_name_a2ea5a4e51fd6c546a49f165420195678abb88731249f455ceac1dd64a059f7e",
"EffectiveExpireDate": {
"Effective": "",
"Expiration": "exp_year_a2ea5a4e51fd6c546a49f165420195678abb88731249f455ceac1dd64a059f7e-exp_month_a2ea5a4e51fd6c546a49f165420195678abb88731249f455ceac1dd64a059f7e"
}
}
},
"Payer": {
"ContactInfoRefs": "CTC1"
}
}
]
}
Order Details
"Order": [
{
"OrderID": "N1DZ8N5L",
"GdsBookingReference": "LWLSKV",
"OrderStatus": "SUCCESS",
"NeedToTicket": "N",
"OfferID": "7806481111628081310939197204",
"Owner": "WY",
"OwnerName": "Oman Air",
"IsBrandedFare": "Y",
"BrandedFareOptions": [],
"CabinOptions": [],
"IsAdditionalCabinType": "Y",
"Eticket": "true",
"TimeLimits": {
"OfferExpirationDateTime": "2021-08-04T14:53:34",
"PaymentExpirationDateTime": "2021-08-05 03:00:00"
},
"BookingCurrencyCode": "CAD",
"EquivCurrencyCode": "CAD",
"HstPercentage": "",
"RewardSettings": {
"RewardAvailable": "N",
"PointTypes": [],
"PointValues": {}
},
"BookingFeeInfo": {
"FeeType": "",
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
},
"TotalPrice": {
"BookingCurrencyPrice": 857.71,
"EquivCurrencyPrice": 857.71
},
"BasePrice": {
"BookingCurrencyPrice": 693,
"EquivCurrencyPrice": 693
},
"TaxPrice": {
"BookingCurrencyPrice": 164.71,
"EquivCurrencyPrice": 164.71
},
"Commission": {
"AgencyCommission": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
},
"AgencyYqCommission": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
}
},
"PortalCharges": {
"Markup": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
},
"Surcharge": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
},
"Discount": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
}
},
"AgentMarkupInfo": {
"OnflyMarkup": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
},
"OnflyDiscount": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
},
"OnflyHst": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
},
"PromoDiscount": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0,
"PromoCode": ""
}
},
"Penalty": {
"ChangeFee": {
"Before": {
"BookingCurrencyPrice": 50,
"EquivCurrencyPrice": 50
},
"After": {
"BookingCurrencyPrice": "NA",
"EquivCurrencyPrice": "NA"
}
},
"CancelationFee": {
"Before": {
"BookingCurrencyPrice": 67,
"EquivCurrencyPrice": 67
},
"After": {
"BookingCurrencyPrice": "NA",
"EquivCurrencyPrice": "NA"
}
}
},
"PaxSeatInfo": [],
"OfferItem": [
{
"OfferItemID": "OFFERITEMID1",
"Refundable": "true",
"PassengerType": "ADT",
"PassengerQuantity": 1,
"TotalPriceDetail": {
"TotalAmount": {
"BookingCurrencyPrice": 857.71,
"EquivCurrencyPrice": 857.71
}
},
"Service": [
{
"ServiceID": "SV1",
"PassengerRefs": "ADT1",
"FlightRefs": "Flight1"
}
],
"FareDetail": {
"PassengerRefs": "ADT1",
"Price": {
"TotalAmount": {
"BookingCurrencyPrice": 857.71,
"EquivCurrencyPrice": 857.71
},
"BaseAmount": {
"BookingCurrencyPrice": 693,
"EquivCurrencyPrice": 693
},
"TaxAmount": {
"BookingCurrencyPrice": 164.71,
"EquivCurrencyPrice": 164.71
},
"Commission": {
"AgencyCommission": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
},
"AgencyYqCommission": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
}
},
"BookingFee": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
},
"PortalCharges": {
"Markup": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
},
"Surcharge": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
},
"Discount": {
"BookingCurrencyPrice": 0,
"EquivCurrencyPrice": 0
}
},
"Taxes": [
{
"TaxCode": "YQ",
"BookingCurrencyPrice": 47.78,
"EquivCurrencyPrice": 47.78
},
{
"TaxCode": "YR",
"BookingCurrencyPrice": 7.48,
"EquivCurrencyPrice": 7.48
},
{
"TaxCode": "K3",
"BookingCurrencyPrice": 90.39,
"EquivCurrencyPrice": 90.39
},
{
"TaxCode": "IN",
"BookingCurrencyPrice": 1.38,
"EquivCurrencyPrice": 1.38
},
{
"TaxCode": "P2",
"BookingCurrencyPrice": 17.68,
"EquivCurrencyPrice": 17.68
}
]
}
},
"FareComponent": [
{
"PriceClassRef": "PCR_1",
"SegmentRefs": "Segment1",
"FareBasis": {
"FareBasisCode": {
"Refs": "FG_1",
"Code": "DBSOIA"
},
"RBD": "D",
"CabinType": "C",
"SeatLeft": "9"
}
}
]
}
],
"BaggageAllowance": [
{
"SegmentRefs": "Segment1",
"PassengerRefs": "ADT1",
"BaggageAllowanceRef": "Bag1"
}
],
"SplitPaymentInfo": [
{
"AirItineraryId": "7806481111628081310939197204",
"MultipleFop": "Y",
"MaxCardsPerPax": 2,
"MaxCardsPerPaxInMFOP": 1
}
],
"BookingToEquivExRate": 1,
"FopRef": "FOP_264_264_648_0_ALL_PUB"
}
]
Passenger Details
"PassengerList": {
"Passengers": [
{
"PassengerID": "ADT1",
"PTC": "ADT",
"OnflyMarkup": "0.00",
"OnflyDiscount": "0.00",
"BirthDate": "2000-07-21",
"NameTitle": "Mr",
"FirstName": "downey",
"MiddleName": "",
"LastName": "Robert",
"Gender": "Male",
"TravelDocument": [
{
"DocumentNumber": "9658745",
"DocumentType": "P",
"ExpiryDate": "1970-01-01",
"IssuingCountry": ""
}
],
"ContactInfoRef": "CTC1",
"PassengerRefID": "ADT1"
}
]
}
Fare Details
"FareList": {
"FareGroup": [
{
"FareGroupRef": "FG_1",
"FareCode": "70J",
"FareBasisCode": "DBSOIA"
}
]
}
Parameters: While passing the request you must provide values for the parameters like ShoppingResponseID
, OfferID
, and the Passenger
details.
Congratulations! You have successfully completed your booking with branded fares workflow.