Seat Book API Reference
POST |
book/airoffer/reservationworkbench/{workbenchId}/offers/buildancillaryoffersfromcatalogofferings For {workbenchID} send the workbench identifier returned in ReservationResponse/Identifer/value in the workbench create response. Base path: Pre-production https://api.pp.travelport.com/11/air/ Production https://api.travelport.com/11/air/ |
Related Content: Seats Guide, Seat Map API Reference
After retrieving available seats with a Seat Map request, you send a Seat Book request to add a selected seat to the workbench. See the Seats Guide for the workflow description.
You can include multiple travelers in the same seat book request; however, you must send a separate book request for each flight on the itinerary.
Request
Also see Authorization and Common Headers.
Query Parameters
None.
Request Body
Object |
Description |
Required/Optional |
---|---|---|
OfferQueryBuildAncillaryOffersFromCatalogOfferings |
Top level object. |
Required |
BuildAncillaryOffersFromCatalogOfferings |
Details for one seat on one flight. Send one instance for each traveler on each flight. Includes CatalogOfferingsIdentifier, CatalogOfferingIdentifier, TravelerIdentifierRef, and SeatAssignment objects. |
Required |
CatalogOfferingsIdentifier |
Top level object. |
Required |
CatalogOfferingsIdentifier/Identifier |
The identifier value for the seat map response. Key value pairs:
|
Required |
CatalogOfferingIdentifier |
Top level object. |
Required |
CatalogOfferingIdentifier/Identifier |
The identifier value for the seat map offer in the response. Key value pairs:
|
Required |
TravelerIdentifier |
The traveler for whom to book the seat. |
Required |
TravelerIdentifier/Identifier |
Traveler ID. Key value pairs:
Send the traveler identifier returned in the Add Traveler response. For the post-reservation workflow the traveler identifier is returned in the response when the post-commit workbench is created. |
|
SeatAssignment |
Seat number to book. |
Required |
Response
GDS Seat Book Response
For GDS, the seat book response returns full details for each seat booked.
Object |
Description |
---|---|
OfferListResponse |
Top level object for response. Includes OfferID, Identifier, and ReferenceList objects. |
OfferListResponse/Identifier |
Identifier for response. Key value pairs:
|
OfferID |
Top level object for booked seat details. One instance returned for each booked seat. If Seat Book is sent for a flight that already has a seat assignment, returned with @type OfferAncillaryModify instead of Offer when there is no current seat assignment. This seat replaces the held seat at workbench commit. Key value pairs:
Includes Identifier, Product, Price, and TermsAndConditionsFull objects. If there is a current seat assignment, also returns ModifyPrice. |
OfferID/Identifier |
Identifier for booked seat offer. Key value pairs:
|
Product |
Top level object for product (one leg of the itinerary; multiple instances are returned if there are multiple legs). Key value pairs:
Includes Identifier, Ancillary, and SeatAssignment objects. A Quantity object may also be returned to note the number of seats booked. |
Product/Identifier |
Identifier for the product. Key value pairs:
|
Ancillary |
Top level object. Includes FlightRef and SeatAssignment object. |
FlightRef |
Flight reference matching to ReferenceListFlight/Flight/id. |
SeatAssignment |
Includes Seat object. |
Seat |
String. Row and seat number of assigned seat. |
Price |
Top level object for price details; 0 amounts are free seats. Includes CurrencyCode, Base, TotalTaxes, TotalPrice, and PriceBreakdown objects. |
CurrencyCode |
The currency in which the price is returned. Currency is the default associated with your provisioned PCC from Travelport. Key value pairs:
|
Base |
Base price before taxes and fees; 0 for free seats. |
TotalPrice |
Total price for seat including base price, taxes and fees; 0 for free seats. |
TermsAndConditionsFull |
Any terms and conditions applicable to the seat. Includes ApplicationLimit. |
ApplicationLimit |
Any restrictions on the number of this seat product that can be purchased. Key value pairs:
|
ModifyPrice |
Ancillaries 24.11.32 and later. GDS only; not supported for NDC. Not supported for changing a paid seat to a free seat, modifying a seat book request sent in the same workbench session, or modifying a seat when the current workbench contains another seat book request. You must add payment and issue tickets at commit; you cannot hold the booking with the modified seats.
Returned if the Seat Book request replaces an existing seat assignment. Includes the same standard CurrencyCode, Base, TotalTaxes, TotalFees, and TotalPrice objects as the Price object above. Amounts in these objects indicate price changes from the existing seat assignment as follows:
When Seat Book is sent to replace an existing seat assignment, the current seat assignment is held until the new seat book request is successful at commit; the existing seat assignment is canceled at that time. |
ReferenceList |
Top level object for flight details. Includes Flight object. |
Flight |
One instance per flight. Key value pairs:
Includes Identifier, Departure, Arrival, and Status objects. |
Flight/Identifier |
Internal identifier for the flight. Key value pairs:
|
Departure |
Departure details. Key value pairs are the location, date, time, and terminal of departure. |
Arrival |
Arrival details. Key value pairs are the location, date, time, and terminal of arrival. |
Status |
Returns status of seat booking in the following:
|
NDC Seat Book Response
NDC responses return an identifier for each booked seat. You can send a reservation retrieve request to return booked seat details.
Object |
Description |
---|---|
OfferListResponse |
Top level object for response. Includes OfferID object. |
OfferID |
Top level object for seat confirmation. One instance returned for each seat booked. Includes Identifier. |
OfferID/Identifier |
Internal identifier for seat confirmation:
|
Example Request
You can include multiple travelers in the same seat book request; however, you must send a separate book request for each flight on the itinerary.
The following example sends seat assignments for two travelers on the same flight. This example is for GDS; however, the seat book request is the same for both GDS and NDC, and for both free and paid seats.
{
"OfferQueryBuildAncillaryOffersFromCatalogOfferings": {
"BuildAncillaryOffersFromCatalogOfferings": [
{
"@type": "BuildAncillaryOffersFromCatalogOfferingsAirSeat",
"CatalogOfferingsIdentifier": {
"Identifier": {
"value": "844cf72e-5dcf-4905-959c-ae416ba7a4ea"
}
},
"CatalogOfferingIdentifier": {
"Identifier": {
"value": "8a1072cf-f3e1-4f04-9dcf-db55f60dc487"
}
},
"TravelerIdentifierRef": {
"value": "1b74e411-1eb1-483e-a06b-c9333efd02df"
},
"SeatAssignment": "3A"
},
{
"@type": "BuildAncillaryOffersFromCatalogOfferingsAirSeat",
"CatalogOfferingsIdentifier": {
"Identifier": {
"value": "844cf72e-5dcf-4905-959c-ae416ba7a4ea"
}
},
"CatalogOfferingIdentifier": {
"Identifier": {
"value": "8a1072cf-f3e1-4f04-9dcf-db55f60dc487"
}
},
"TravelerIdentifierRef": {
"value": "1a1269df-44e5-43b3-ab7b-4d6336b9e68f"
},
"SeatAssignment": "3C"
}
]
}
}
Example Response
For GDS, the seat book response returns details for all booked seats, including seat assignments and price details for both paid and free seats.
{"OfferListResponse": {
"@type": "OfferListResponse",
"transactionId": "951ce15b-a2e9-49db-939f-36eeefe8ac92",
"traceId": "7a87fa9f-f21a-4ee8-b1ec-fd65a7d8f51f",
"OfferID": [
{
"@type": "Offer",
"id": "seatOffer_Flight_01_1",
"Identifier": {
"authority": "Travelport",
"value": "e265b566-9ee3-4e0d-aaf7-b9e365503d62"
},
"Product": [
{
"@type": "ProductAncillary",
"id": "product_seat_Flight_01_1",
"Identifier": {
"authority": "Travelport",
"value": "c8b26650-6e12-4d96-b88a-404441828d6d"
},
"Ancillary": {
"@type": "AncillaryAirSeat",
"FlightRef": [
"Flight_01"
],
"SeatAssignment": {
"@type": "SeatAssignment",
"Seat": "003A"
}
}
}
],
"Price": {
"@type": "PriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 0,
"TotalPrice": 0
},
"TermsAndConditionsFull": [
{
"@type": "TermsAndConditionsFullAncillary",
"ApplicationLimit": {
"start": "1",
"end": "1",
"value": "PassengerSegment"
}
}
]
},
{
"@type": "Offer",
"id": "seatOffer_Flight_01_2",
"Identifier": {
"authority": "Travelport",
"value": "247b8ec3-5df7-4688-9d46-a754b3f1c9e5"
},
"Product": [
{
"@type": "ProductAncillary",
"id": "product_seat_Flight_01_2",
"Identifier": {
"authority": "Travelport",
"value": "a08a39d5-9f54-4678-8e8c-6c6c764ba687"
},
"Ancillary": {
"@type": "AncillaryAirSeat",
"FlightRef": [
"Flight_01"
],
"SeatAssignment": {
"@type": "SeatAssignment",
"Seat": "003C"
}
}
}
],
"Price": {
"@type": "PriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 0,
"TotalPrice": 0
},
"TermsAndConditionsFull": [
{
"@type": "TermsAndConditionsFullAncillary",
"ApplicationLimit": {
"start": "1",
"end": "1",
"value": "PassengerSegment"
}
}
]
}
],
"Identifier": {
"authority": "Travelport",
"value": "844cf72e-5dcf-4905-959c-ae416ba7a4ea"
},
"ReferenceList": [
{
"@type": "ReferenceListFlight",
"Flight": [
{
"@type": "FlightStatus",
"carrier": "QF",
"number": "0419",
"id": "Flight_01",
"Identifier": {
"authority": "Travelport",
"value": "be15852a-963b-491c-85f9-21da034c72eb"
},
"Departure": {
"@type": "DepartureDetail",
"location": "SYD",
"date": "2023-12-20",
"time": "08:00:00"
},
"Arrival": {
"@type": "ArrivalDetail",
"location": "MEL",
"date": "2023-12-20",
"time": "09:35:00"
},
"Status": {
"@type": "StatusDetail",
"ProviderStatus": {
"providerCode": "HS",
"value": "Pending"
}
}
}
]
}
]
}
}
The NDC seat book response returns an identifier for each seat selection instead of seat details. You can send a reservation retrieve request to return booked seat details.
{"OfferListResponse": {
"transactionId": "2b41cc5d-46bb-4c52-b39a-693ed955c68c",
"OfferID": [
{
"@type": "OfferID",
"Identifier": {
"authority": "SQ",
"value": "UFJJQ0U2LVNFRzJ8UEFYMnxTRUcy"
}
},
{
"@type": "OfferID",
"Identifier": {
"authority": "SQ",
"value": "UFJJQ0UzLVNFRzJ8UEFYMXxTRUcy"
}
}
]
}
}
When Seat Book is sent for a flight that already has a seat assignment, the response returns OfferID with @type OfferAncillaryModify. It also includes the ModifyPrice object to indicate price changes from the existing seat assignment.
{
"OfferListResponse": {
"@type": "OfferListResponse",
"transactionId": "12af0294-40cf-409a-bf28-4e9e2bbba4a2",
"traceId": "ea4bdf5f-5c1b-498c-8833-5478605381e6",
"OfferID": [
{
"@type": "OfferAncillaryModify",
"id": "seatOffer_Flight_01_1",
"Identifier": {
"authority": "Travelport",
"value": "b5ba269b-6f58-4268-b257-f493d61894f0"
},
"Product": [
{
"@type": "ProductAncillary",
"id": "product_seat_Flight_01_1",
"Ancillary": {
"@type": "AncillaryAirSeat",
"Description": [
{
"code": "A",
"subCode": "0B5",
"codeContext": "ATPCO",
"value": "PREFERRED SEAT"
}
],
"FlightRef": [
"Flight_01"
],
"SeatAssignment": {
"@type": "SeatAssignment",
"Seat": "9B"
}
}
}
],
"Price": {
"@type": "PriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 17.27,
"TotalTaxes": 1.73,
"TotalPrice": 19,
"PriceBreakdown": [
{
"@type": "PriceBreakdownAncillaryAir",
"Amount": {
"@type": "Amount",
"Taxes": {
"@type": "TaxesDetail",
"Tax": [
{
"taxCode": "UO",
"value": 1.73
}
]
}
},
"Description": {
"code": "A",
"subCode": "0B5",
"codeContext": "ATPCO",
"value": "PREFERRED SEAT"
},
"TravelerIdentifierRef": {
"name": "-RAMESH",
"passengerTypeCode": "ADT",
"id": "travelerRefId_1",
"value": "-KK"
}
}
]
},
"TermsAndConditionsFull": [
{
"@type": "TermsAndConditionsFullAncillary",
"ApplicationLimit": {
"start": "1",
"end": "1",
"value": "PassengerSegment"
}
}
],
"ModifyPrice": {
"@type": "ModifyPrice",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 0,
"TotalTaxes": 0,
"TotalFees": 0,
"TotalPrice": 0
}
}
],
"Identifier": {
"authority": "Travelport",
"value": "4be2cd8b-2dda-40b0-8ad0-f5045277ec8f"
},
"ReferenceList": [
{
"@type": "ReferenceListFlight",
"Flight": [
{
"@type": "Flight",
"duration": "PT4H20M",
"carrier": "QF",
"number": "932",
"equipment": "73H",
"id": "Flight_01",
"Identifier": {
"authority": "Travelport",
"value": "993380cc-efc3-4f56-bdf9-8d0a1c176599"
},
"Departure": {
"@type": "Departure",
"location": "PER",
"date": "2024-09-25",
"time": "06:00:00"
},
"Arrival": {
"@type": "Arrival",
"location": "BNE",
"date": "2024-09-25",
"time": "12:20:00"
}
}
]
}
]
}
}