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 (aka segment) 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. Returned with @type Offer when there is no existing seat assignment. Returned with @type OfferAncillaryModify when a flight already has a seat assignment that is being held while modifying seats. This seat replaces the held seat upon successful booking confirmation at workbench commit. Key value pairs:
Includes Identifier, Product, Price, and TermsAndConditionsFull objects. If there is a current seat assignment on this flight, 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 |
For GDS only, you can modify an existing seat assignment by sending the Seat Book request without canceling the existing seat. If the new seat book request is successful at workbench commit, the existing seat is replaced. If not successful, the existing seat is retained. Not supported for changing a paid seat to a free seat or for modifying a seat booked in the same workbench session. You must add payment and issue tickets at commit; you cannot hold the booking with the modified seats.
Returned when the Seat Book request is sent for a flight that already has a seat assignment. Includes the same CurrencyCode, Base, TotalTaxes, TotalFees, and TotalPrice objects as the Price object above. In ModifyPrice, the amounts in these objects indicate price changes from the existing seat assignment: values of 0 indicate no change, positive numbers indicate an additional cost, negative numbers indicate a refund amount. 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 workbench 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 workbench 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 seat assignments, OfferID is returned with @type OfferAncillaryModify to indicate the modified seat assignment. The response also includes the ModifyPrice object, which indicates any price changes from the existing seat assignment. ModifyPrice values of 0 indicate no change, positive numbers indicate an additional cost, negative numbers indicate a refund amount.
Upon successfully booking the new seats at workbench commit, the previous seats are released. In case of booking failure, the existing seats are retained on the booking. This supports modifying seats by ensuring the current seats remain available in case of a booking failure.
{
"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"
}
}
]
}
]
}
}