Seat Map API Reference
POST |
search/seat/catalogofferingsancillaries/seatavailabilities Base path: Pre-production https://api.pp.travelport.com/11/air/ Production https://api.travelport.com/11/air/ |
Related Content: Seats Guide, Seat Book API Reference
The Seat Map request returns seat availability for both free and paid seats. You can request seat availability at several places in the JSON APIs workflow - after searching, pricing, during booking, and after booking. The Seat Map request uses the same endpoint but a different message payload depending on where in the workflow it is sent. See the workflow options in the Seats Guide.
All Seat Map requests allow you to request seat maps for any of the following:
- all flights within an offer (all flights on the itinerary)
- all flights within a product (all flights on one leg of an itinerary)
- one or more individual flights
To book a seat, you next send a Seat Book request as part of a workbench session.
Request
Also see Authorization and Common Headers.
Query Parameters
None.
Request Body – Seat Map after Search request
When sent after a Search request and prior to pricing or a workbench session, the Seat Map request sends identifiers from the Search response. You can request seat maps for a flight, product, or segment returned in any preceding Search, Next Leg Search, or Flight Specific Search response.

Object | Description | Required/Optional |
---|---|---|
CatalogOfferingsQuerySeatAvailability |
Top level object. |
Required |
SeatAvailabilityOfferings |
Top level object. Send with @type SeatAvailabilityOfferingsBuildFromCatalogProductOfferings |
Required |
BuildFromCatalogProductOfferingsRequest |
Top level object. Send with @type BuildFromCatalogProductOfferingsRequest Includes CatalogProductOfferingsIdentifier. |
Required |
CatalogProductOfferingsIdentifier |
Top level object for the transaction identifier from the preceding search response. Key value pairs:
Includes Identifier. |
Required |
Identifier |
Transaction identifier from the preceding search response. Key value pairs:
|
Required |
CatalogProductOfferingSelection |
Top level object. Send with @type CatalogProductOfferingSelection Includes CatalogProductOfferingIdentifier. Optional to include ProductIdentifier and SegmentSequence. |
Required |
CatalogProductOfferingIdentifier |
The identifier value for the product. Key value pairs:
If only the offer ID is sent (no ProductIdentifier per below), the response returns seat maps for all flights one the offer. An offer is the entire itinerary.
|
|
ProductIdentifier |
The ID of the product to return seat maps for. Key value pairs:
Optional. If sent, response returns seat maps for all flight/s for only this product. A product is one leg of the itinerary.
|
|
SegmentSequence |
Array. The segment sequence of the flight/s to return seat maps for. If sent, ProductIdentifier must also be sent. From the preceding search response, for the flight to request seat maps for, send the value in ReferenceListProduct/Product/FlightSegment/sequence. Optional. If sent, response returns seat maps for only the flight/s on that segment.
|
Optional |
Request Body – Seat Map after AirPrice request
When sent after an AirPrice request and prior to initiating a workbench session, the Seat Map request sends identifiers from the AirPrice response.

Object | Description | Required/Optional |
---|---|---|
CatalogOfferingsQuerySeatAvailability |
Top level object. |
Required |
SeatAvailabilityOfferings |
Top level object. Send with @type SeatAvailabilityOfferingsBuildFromOfferList Includes BuildFromOfferList. |
Required |
BuildFromOfferList |
Top level object. Includes OfferListIdentifier, OfferIdentifier, ProductIdentifier, SegmentSequence. |
Required |
OfferListIdentifier |
String. Transaction identifier. From the preceding AirPrice response, send the value in OfferListResponse/Identifier/value. |
Required |
OfferIdentifier |
Offer identifier. Key value pairs:
If only OfferIdentifier is sent (no ProductIdentifier per below), the response returns seat maps for all flights in the offer.
|
Required |
ProductIdentifier |
The ID of the product to return seat maps for. Key value pairs:
Optional. If sent, response returns seat maps for all flight/s for only this product. A product is one leg of the itinerary.
|
Optional |
SegmentSequence |
Number. The segment sequence of the flight to return seat maps for. If sent, ProductIdentifier must also be sent. From the preceding AirPrice response, for the flight to return seat maps for, send the value in OfferID/Product/FlightSegment/sequence. Optional. If sent, response returns seat maps for only the flight/s on that segment.
|
Optional |
Request Body – Seat Map during workbench session
When sent during a workbench session, the Seat Map request sends identifiers from the responses in the booking flow or, for a post-commit workbench, from the Workbench Create or Reservation Retrieve responses.

Object | Description | Required/Optional |
---|---|---|
CatalogOfferingsQuerySeatAvailability |
Top level object. |
Required |
SeatAvailabilityOfferings |
Top level object. |
Required |
BuildFromReservationWorkbench |
Top level object. |
Required |
ReservationIdentifier |
Top level object for the workbench identifier. Includes Identifier. |
Required |
ReservationIdentifier/Identifier |
The reservation workbench identifier. Key value pairs:
|
Required |
OfferIdentifier |
Top level object for the offer identifier. Includes Identifier. |
Required |
OfferIdentifier/Identifier |
Offer identifier details. Key value pairs:
Source the offer, product, and segment identifiers as follows for either the booking or post-booking workflow:
If you send only OfferIdentifier (no ProductIdentifier per below), the response returns seat maps for all flight/s in the offer. The offer is the entire itinerary.
|
Required |
ProductIdentifier |
Top level object for the product ID. Includes Identifier. Optional. If sent, response returns seat maps for the flight/s in that product. A product is a leg of the itinerary.
|
Optional |
ProductIdentifier/Identifier |
The identifier value for the product. Send the product details sourced as per note above in OfferIdentifier. Key value pairs:
|
Optional |
SegmentSequenceList |
String array. The sequence number of the flight/s to retrieve the seat map for. If sent, ProductIdentifier must also be sent. Optional. If sent, response returns seat maps for only this segment.
|
Optional |
Response
The seat map response is similar for all Seat Map requests, regardless of where sent in the workflow. Exceptions:
-
When sent before creating the booking, TravelerIdentifierRef returns only the PTC, as there are no traveler details at this point in the workflow.
-
HeldAncillary is returned only in a workbench session and only when seat/s have already been assigned. It returns the current seat assignment/s for all travelers on the booking. These will be held while modifying seats until the new seat book request is confirmed at commit.

Object |
Description |
---|---|
CatalogOfferingsAncillaryListResponse |
Top level object for response. Key value pairs:
Includes CatalogOfferingsID, Result, Identifier, and ReferenceList objects. |
CatalogOfferingsAncillaryListResponse/Identifier |
Includes the following attribute:
This value must be sent in any subsequent seat book request in CatalogOfferingsIdentifier/Identifier (note the s in CatalogOfferingsIdentifier).
|
CatalogOfferingsID |
Each instance of CatalogOfferingsID returns seat details for one requested flight. Contains the following attribute:
Contains Identifier, AncillaryOffering, Traveler, and Flight objects. |
CatalogOfferingsID/Identifier |
Includes the following attribute:
Send this value in any subsequent seat book request in CatalogOfferingIdentifier/Identifier (note nos in CatalogOfferingIdentifier).
|
CatalogOffering |
Top level object. One instance returned for each price point of seats on this flight, including free seats. Includes the following attribute:
Contains ProductOptions and Price objects. |
ProductOptions |
Top level object. Contains Product object. |
Product |
Includes the following:
Contains SeatAvailability, Brand, and SeatingChartRef objects. |
SeatAvailability |
Array. Each instance has a different seatAvailabilityStatus. Includes the following key value pairs seatAvailabilityStatus: The status of all seats in this instance of SeatAvailability. Possible values are:
value: A list of all seat numbers on that flight with that seatAvailabilityStatus. |
Brand |
Any brand information for seats in this Product. Includes the following:
|
SeatingChartRef |
A reference identifier for the seating chart for this Product. Maps to corresponding information in ReferenceList per below. |
Price |
Price details for the seats in this CatalogOffering. All seats in this instance have the same Price details. Includes CurrencyCode, Base, and TotalPrice. |
CurrencyCode |
The currency in which the price is returned. Unless changed in the request, the currency is the default associated with your provisioned PCC from Travelport. Key value pairs:
|
Base |
Base price for the seat. |
TotalPrice |
Total price for the seat; value of 0 indicates a free seat. |
TravelerIdentierRef |
Traveler details. If seat maps are requested in a workbench session, returns one instance for each traveler on the booking. If requested outside a workbench, returns one instance per PTC, and only passengerTypeCode is returned because there are no other traveler details at this point. Key value pairs:
|
HeldAncillary |
Ancillaries 24.11.32 and later. GDS only; not supported for NDC.
Returned when the Seat Map request is sent for flight/s that already have seat assignments. Returns an instance for each existing seat assignment. These will be held while modifying seats until the new seat book request is confirmed at commit. Includes the Ancillary object. |
Ancillary |
Top-level object for current seat assignment on a specific flight. Includes FlightRef and Seat Assignment. |
FlightRef |
String. Returns the internal reference ID for the flight with a current seat assignment. |
SeatAssignment |
Top-level object for current seat assignment. Includes Seat. |
Seat |
String. Current seat assignment value including row and seat number. |
Flight |
One instance per flight. Key value pairs:
Includes Identifier, Departure, and Arrival 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. |
Result |
Returns any errors or warnings. |
ReferenceList |
Top level object with @typeReferenceListSeatingChart to consolidate seating chart information. |
SeatingChart |
One instance of SeatingChart is returned for each flight requested. Key value pair:
Includes the Cabin object. |
Cabin |
Array. One instance per cabin class. Includes:
Includes Layout and Row objects. |
Layout |
Defines the general layout for this cabin class in the following key value pairs:
In the following example Layout object, startRow and endRow indicate that this cabin class begins with row 4, and the last row in this class is row 30. It returns six paired instances of position and value, indicating that this cabin class has seat columns A through F (each of six values in value), in which A and F are window seats (position=W), B and E are center seats (position=C), and C and D are aisle seats (position=A). ![]()
|
Row |
One instance for each row in this cabin class; returns details for each seat in that row. Key value pair:
Includes Space object. |
Space |
One instance for each seat in the row. Includes the following:
Includes the Characteristic object. |
Characteristic |
Array. String. A list of Characteristic values for that seat. Codes are set by IATA; for a list of codes and values see IATA PADIS 9825 for EDIFACT Standards for Seat Characteristics. |
Example Request
Example Request after Search, no workbench
You can request seat maps after any Search, Next Leg Search, or Flight Specific Search response. You can request seat maps for the entire itinerary (the offer), all flights on one leg (the product), or a single flight (the segment). The following example requests seat maps for all flights on product p0.

{
"CatalogOfferingsQuerySeatAvailability": {
"SeatAvailabilityOfferings": {
"@type": "SeatAvailabilityOfferingsBuildFromCatalogProductOfferings",
"BuildFromCatalogProductOfferingsRequest": {
"@type": "BuildFromCatalogProductOfferingsRequest",
"CatalogProductOfferingsIdentifier": {
"id": "catalogProductOfferings_1",
"Identifier": {
"value": "024596a4-b121-4c25-bc3e-72475f42969c",
"authority": "Travelport"
}
},
"CatalogProductOfferingSelection": [
{
"@type": "CatalogProductOfferingSelection",
"CatalogProductOfferingIdentifier": {
"id": "o1"
},
"ProductIdentifier": [
{
"id": "p0"
}
}
}
]
}
Example Request after AirPrice, no workbench
After pricing with AirPrice, you can request seat maps for all flights in either the entire itinerary (the offer), only one leg (the product), or one or more flights (segments). The following example requests a seat map for only segment 1 on two products.

{
"CatalogOfferingsQuerySeatAvailability": {
"SeatAvailabilityOfferings": {
"@type": "SeatAvailabilityOfferingsBuildFromOfferList",
"BuildFromOfferList": {
"OfferListIdentifier": "d10083bd-9dd1-4337-86b7-f12403550fa6_PC",
"OfferIdentifier": [
{
"id": "o0"
}
],
"ProductIdentifier": [
{
"id": "p0"
},
{
"id": "p1"
}
],
"SegmentSequence": 1
}
}
}
}
Example Request in workbench
When sent during either an initial or post-commit workbench session, the Seat Map request can return flights in either the entire itinerary (the offer), only one leg (the product), or one or more flights (segments). The following example sends only the offer identifier. This returns seat maps for all flights in the itinerary.

{
"CatalogOfferingsQuerySeatAvailability": {
"SeatAvailabilityOfferings": {
"@type": "SeatAvailabilityOfferingsBuildFromReservationWorkbench",
"BuildFromReservationWorkbench": {
"ReservationIdentifier": {
"Identifier": {
"value": "bc3df585-1194-4e39-83a6-e9c721c175a5"
}
},
"OfferIdentifier": {
"Identifier": {
"authority": "Travelport",
"value": "5f476fac-f5a8-439f-9c54-61249cd311dc"
}
}
}
}
}
}
The following example requests a seat map for two products. This returns seat maps for all flights on those products. In the JSON APIs, a product is one leg of an itinerary.

{
"CatalogOfferingsQuerySeatAvailability": {
"SeatAvailabilityOfferings": {
"@type": "SeatAvailabilityOfferingsBuildFromReservationWorkbench",
"BuildFromReservationWorkbench": {
"ReservationIdentifier": {
"Identifier": {
"value": "363cddbf-cb91-4864-b3f2-757e71a23a3e"
}
},
"OfferIdentifier": {
"Identifier": {
"authority": "Travelport",
"value": "73c39631-7208-4f74-abb2-1d4c7dd65a59"
}
},
"ProductIdentifier": [
{
"Identifier": {
"authority": "Travelport",
"value": "2bcb6bc7-656b-4dbc-bacf-b0d80748d314"
}
},
{
"Identifier": {
"authority": "Travelport",
"value": "9835b084-0b18-4d1c-bc61-062842cb73b7"
}
}
]
}
}
}
}
The following example requests a seat map for the first segment in the requested product. This returns seat maps for the first flight on the leg specified by that product ID.

{
"SeatAvailabilityOfferings": {
"@type": "SeatAvailabilityOfferingsBuildFromReservationWorkbench",
"BuildFromReservationWorkbench": {
"ReservationIdentifier": {
"Identifier": {
"authority": "Travelport",
"value": "8acc7923-1a3c-4817-865c-694e98437b17"
}
},
"OfferIdentifier": {
"Identifier": {
"authority": "Travelport",
"value": "QUEwMDFIRDFZWVRBN3xQb0lQMzI5REJBMUMtQzI1QS00NDFBLTg4OS0xLTE="
}
},
"ProductIdentifier": [
{
"Identifier": {
"value": "328cbcfe-ed66-4402-94ea-d0df1760d120"
}
}
],
"SegmentSequence": [
"1"
]
}
}
}
Example Response
The seat map response is nearly identical whether the request was sent after Search, after AirPrice, or in a workbench session. The only difference is that outside a workbench session, TravelerIdentifierRef returns only passengerTypeCode, as there are no traveler details at this point in the workflow. For brevity, all instances of Row after the first two rows have been edited out.

{
"CatalogOfferingsAncillaryListResponse": {
"@type": "CatalogOfferingsAncillaryListResponse",
"transactionId": "72e79c69-f55d-564a-c2f8-0e8a2d16ac35",
"CatalogOfferingsID": [
{
"@type": "CatalogOfferingsTravelerFlight",
"id": "travflight_1_0",
"Identifier": {
"value": "43b4fda6-5b3c-4f5d-981b-c43121f27978"
},
"CatalogOffering": [
{
"@type": "CatalogOffering",
"id": "ancillaryID_1_0_1",
"Identifier": {
"authority": "Travelport",
"value": "6fd4aa88-94c5-4375-b05a-a9d992216b55"
},
"ProductOptions": [
{
"@type": "ProductOptions",
"Product": [
{
"@type": "ProductSeatAvailability",
"id": "productSeatID_1",
"SeatAvailability": [
{
"seatAvailabilityStatus": "Available",
"value": [
"15A",
"15B",
"15C",
"15D",
"15E",
"15F",
"16A",
"16B",
"16C",
"16D",
"16E",
"16F",
"17A",
"17B",
"17C",
"17D",
"17E",
"17F",
"18C",
"18D",
"18E",
"18F",
"19A",
"19B",
"19C",
"19D",
"19E",
"19F",
"20C",
"20D",
"20E",
"20F",
"22A",
"22B",
"22C",
"25A",
"25B",
"25C",
"25D",
"25E",
"25F",
"26A",
"26B",
"26C",
"26D",
"26E",
"26F",
"27A",
"27B",
"27C",
"27D",
"27E",
"27F"
]
},
{
"seatAvailabilityStatus": "Reserved",
"value": [
"4A",
"4B",
"4C",
"4D",
"4E",
"4F",
"5A",
"5B",
"5C",
"5D",
"5E",
"5F",
"6A",
"6B",
"6C",
"6D",
"6E",
"6F",
"7A",
"7B",
"7C",
"7D",
"7E",
"7F",
"8A",
"8B",
"8C",
"8D",
"8E",
"8F",
"10A",
"10B",
"10C",
"10D",
"10E",
"10F",
"11A",
"11B",
"11C",
"11D",
"11E",
"11F",
"12A",
"12B",
"12C",
"12D",
"12E",
"12F",
"18A",
"18B",
"20A",
"20B",
"21A",
"21B",
"21C",
"21D",
"21E",
"21F",
"22D",
"22E",
"22F",
"23A",
"23B",
"23C",
"23D",
"23E",
"23F",
"24A",
"24B",
"24C",
"24D",
"24E",
"24F",
"29A",
"29B",
"29C",
"29D",
"29E",
"29F",
"30A",
"30B",
"30C",
"30D",
"30E",
"30F"
]
}
],
"Brand": {
"@type": "Brand",
"name": "SEAT ASSIGNMENT"
},
"SeatingChartRef": "seatingChart_1"
}
]
}
],
"Price": {
"@type": "PriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 0,
"TotalPrice": 0
}
},
{
"@type": "CatalogOffering",
"id": "ancillaryID_1_0_2",
"Identifier": {
"authority": "Travelport",
"value": "7cabe058-1c65-4011-ab16-221adef7fdb9"
},
"ProductOptions": [
{
"@type": "ProductOptions",
"Product": [
{
"@type": "ProductSeatAvailability",
"id": "productSeatID_2",
"SeatAvailability": [
{
"seatAvailabilityStatus": "Available",
"value": [
"9A",
"9B",
"9C",
"9E",
"9F"
]
}
],
"Brand": {
"@type": "Brand",
"name": "PREFERRED SEAT"
},
"SeatingChartRef": "seatingChart_1"
}
]
}
],
"Price": {
"@type": "PriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 8.18,
"TotalTaxes": 0.82,
"TotalPrice": 9,
"PriceBreakdown": [
{
"@type": "PriceBreakdownAncillaryAir",
"Amount": {
"@type": "Amount",
"Taxes": {
"@type": "TaxesDetail",
"Tax": [
{
"taxCode": "UO",
"value": 0.82
}
]
}
}
}
]
}
}
],
"TravelerIdentifierRef": [
{
"passengerTypeCode": "ADT"
}
],
"Flight": [
{
"@type": "Flight",
"distance": 456,
"duration": "PT1H35M",
"carrier": "QF",
"number": "0409",
"equipment": "73H",
"id": "s1",
"Departure": {
"@type": "DepartureDetail",
"terminal": "3",
"location": "SYD",
"date": "2024-09-01",
"time": "07:00:00"
},
"Arrival": {
"@type": "ArrivalDetail",
"terminal": "1",
"location": "MEL",
"date": "2024-09-01",
"time": "08:35:00"
}
}
]
}
],
"Result": {
"@type": "Result"
},
"Identifier": {
"value": "05bf30d6-6394-4679-9566-fa0ccd448373"
},
"ReferenceList": [
{
"@type": "ReferenceListSeatingChart",
"SeatingChart": [
{
"@type": "SeatingChart",
"id": "seatingChart_1",
"Cabin": [
{
"@type": "Cabin",
"name": "ECONOMY",
"Layout": [
{
"startRow": 4,
"endRow": 30
},
{
"position": [
"W"
],
"value": "A"
},
{
"position": [
"C"
],
"value": "B"
},
{
"position": [
"A"
],
"value": "C"
},
{
"position": [
"A"
],
"value": "D"
},
{
"position": [
"C"
],
"value": "E"
},
{
"position": [
"W"
],
"value": "F"
}
],
"Row": [
{
"@type": "Row",
"label": "4",
"Space": [
{
"@type": "Space",
"location": "A",
"Characteristic": [
"BK"
]
},
{
"@type": "Space",
"location": "B",
"Characteristic": [
"BK"
]
},
{
"@type": "Space",
"location": "C",
"Characteristic": [
"BK"
]
},
{
"@type": "Space",
"location": "D",
"Characteristic": [
"BK"
]
},
{
"@type": "Space",
"location": "E",
"Characteristic": [
"BK"
]
},
{
"@type": "Space",
"location": "F",
"Characteristic": [
"BK"
]
}
]
},
{
"@type": "Row",
"label": "5",
"Space": [
{
"@type": "Space",
"location": "A",
"Characteristic": [
"BK"
]
},
{
"@type": "Space",
"location": "B",
"Characteristic": [
"BK"
]
},
{
"@type": "Space",
"location": "C",
"Characteristic": [
"BK"
]
},
{
"@type": "Space",
"location": "D",
"Characteristic": [
"BK"
]
},
{
"@type": "Space",
"location": "E",
"Characteristic": [
"BK"
]
},
{
"@type": "Space",
"location": "F",
"Characteristic": [
"BK"
]
}
]
}
]
}
]
}
]
}
]
}
}
The following example returns the seat map for a single flight, which offers only free seats, indicated by the single instance of CatalogOffering with a Price/TotalPrice value of 0. For brevity, all instances of Row after the first two rows have been edited out.

{
"CatalogOfferingsAncillaryListResponse": {
"transactionId": "775bac8c-e9f4-2d0a-6322-3cd191d52a77",
"CatalogOfferingsID": [
{
"@type": "CatalogOfferingsTravelerFlight",
"Identifier": {
"value": "6832ba78-cb06-4b80-866d-c44ebba780bb"
},
"CatalogOffering": [
{
"@type": "CatalogOffering",
"id": "ancillaryID_1",
"ProductOptions": [
{
"@type": "ProductOptions",
"Product": [
{
"@type": "ProductSeatAvailability",
"id": "productSeatID_1",
"SeatAvailability": [
{
"seatAvailabilityStatus": "Available",
"value": [
"8A",
"8B",
"8C",
"8D",
"9A",
"9B",
"9C",
"9D",
"10A",
"10B",
"10C",
"10D",
"20A",
"20B",
"20C",
"20D",
"21A",
"21B",
"21C",
"21D",
"22B",
"22C",
"22D",
"24D"
]
},
{
"seatAvailabilityStatus": "Reserved",
"value": [
"7C",
"7D",
"19C",
"19D"
]
},
{
"seatAvailabilityStatus": "Blocked",
"value": [
"7B",
"11A",
"11B",
"11C",
"11D",
"12A",
"12B",
"12C",
"12D",
"15A",
"15B",
"15C",
"15D",
"16A",
"16B",
"16C",
"16D",
"17A",
"17B",
"17C",
"17D",
"18A",
"18B",
"18C",
"18D"
]
}
],
"Brand": {
"@type": "Brand",
"name": "SEAT ASSIGNMENT"
},
"SeatingChartRef": "seatingChart_1"
}
]
}
],
"Price": {
"@type": "PriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 0,
"TotalPrice": 0
}
}
],
"TravelerIdentifierRef": [
{
"name": "TestFirst TestLast",
"passengerTypeCode": "ADT",
"id": "trav_1",
"value": "b6cf8a88-53c7-4f97-8ebf-e1541fc16e77"
}
],
"Flight": [
{
"@type": "Flight",
"distance": 327,
"duration": "PT1H29M",
"carrier": "UA",
"number": "4795",
"equipment": "E7W",
"id": "f1",
"Identifier": {
"authority": "Travelport",
"value": "8d13fdd8-092e-4310-a2c3-db5f89c7eb58"
},
"Departure": {
"@type": "DepartureDetail",
"location": "BUR",
"date": "2022-09-09",
"time": "07:24:00"
},
"Arrival": {
"@type": "ArrivalDetail",
"location": "SFO",
"date": "2022-09-09",
"time": "08:53:00"
}
}
]
}
],
"Result": {
"@type": "Result"
},
"Identifier": {
"value": "9ea0dd41-aed7-4cbf-b2c1-283a81a1cbb1"
},
"ReferenceList": [
{
"@type": "ReferenceListSeatingChart",
"SeatingChart": [
{
"@type": "SeatingChart",
"id": "seatingChart_1",
"Cabin": [
{
"@type": "Cabin",
"name": "ECONOMY",
"Layout": [
{
"startRow": 7,
"endRow": 24
},
{
"position": [
"W"
],
"value": "A"
},
{
"position": [
"A"
],
"value": "B"
},
{
"position": [
"A"
],
"value": "C"
},
{
"position": [
"W"
],
"value": "D"
}
],
"Row": [
{
"@type": "Row",
"label": "7",
"Space": [
{
"@type": "Space",
"location": "B",
"Characteristic": [
"A",
"N",
"CH"
]
},
{
"@type": "Space",
"location": "C",
"Characteristic": [
"BK"
]
},
{
"@type": "Space",
"location": "D",
"Characteristic": [
"BK"
]
}
]
},
{
"@type": "Row",
"label": "8",
"Space": [
{
"@type": "Space",
"location": "A",
"Characteristic": [
"N",
"W",
"O"
]
},
{
"@type": "Space",
"location": "B",
"Characteristic": [
"A",
"N",
"O"
]
},
{
"@type": "Space",
"location": "C",
"Characteristic": [
"A",
"N",
"O"
]
},
{
"@type": "Space",
"location": "D",
"Characteristic": [
"N",
"W",
"O"
]
}
]
]
}
]
}
]
}
]
}
}
The following seat map response for NDC (CatalogOffering/Identifier/authority returns a carrier code instead of the value Travelport) returns both free seats (price of 0) and paid seats (price of 60), each in a separate instance of CatalogOffering. For brevity, all instances of Row after the first two rows have been edited out.

{
"CatalogOfferingsAncillaryListResponse": {
"@type": "CatalogOfferingsAncillaryListResponse",
"CatalogOfferingsID": [
{
"@type": "CatalogOfferingsTravelerFlight",
"Identifier": {
"authority": "Travelport",
"value": "0aa46b7b-1f05-42e1-8cd8-6d2796e3fb71"
},
"CatalogOffering": [
{
"@type": "CatalogOffering",
"Identifier": {
"authority": "SQ",
"value": "UFJJQ0UyLVNFRzR8UEFYMXxTRUc0fHRyYXZfMQ=="
},
"ProductOptions": [
{
"@type": "ProductOptions",
"Product": [
{
"@type": "ProductSeatAvailability",
"SeatAvailability": [
{
"seatAvailabilityStatus": "Available",
"value": [
"32C",
"32H",
"32K",
"33A",
"33C",
"33E",
"33F",
"33H",
"33K",
"34A",
"34C",
"34D",
"34E",
"34F",
"34G",
"34H",
"34K",
"35A",
"35C",
"35D",
"35E",
"35F",
"35G",
"35H",
"35K",
"36A",
"36C",
"36D",
"36E",
"36F",
"36G",
"36H",
"36K",
"37A",
"37C",
"37H",
"37K"
]
},
{
"seatAvailabilityStatus": "Unavailable",
"value": [
"32A",
"33D",
"33G"
]
}
],
"Brand": {
"@type": "Brand",
"name": "FREE SEAT",
"id": "brand_2"
},
"SeatingChartRef": "seatingChart_p0s1108"
}
]
}
],
"Price": {
"@type": "PriceDetail",
"id": "UFJJQ0UyLVNFRzQ=",
"CurrencyCode": {
"value": "USD"
},
"Base": 0,
"TotalPrice": 0
}
},
{
"@type": "CatalogOffering",
"Identifier": {
"authority": "SQ",
"value": "UFJJQ0UxLVNFRzR8UEFYMXxTRUc0fHRyYXZfMQ=="
},
"ProductOptions": [
{
"@type": "ProductOptions",
"Product": [
{
"@type": "ProductSeatAvailability",
"SeatAvailability": [
{
"seatAvailabilityStatus": "Available",
"value": [
"31A",
"31C",
"31H",
"31K"
]
}
],
"Brand": {
"@type": "Brand",
"name": "PREMIUM SEAT",
"id": "brand_1"
},
"SeatingChartRef": "seatingChart_p0s1108"
}
]
}
],
"Price": {
"@type": "PriceDetail",
"id": "UFJJQ0UxLVNFRzQ=",
"CurrencyCode": {
"value": "USD"
},
"Base": 60,
"TotalPrice": 60
}
}
],
"TravelerIdentifierRef": [
{
"name": " TestFirst TestLast",
"passengerTypeCode": "ADT",
"id": "trav_1",
"value": "231b07de-5c98-4656-a9e1-0072697fbcca"
}
],
"Flight": [
{
"@type": "Flight",
"stops": 0,
"duration": "PT4H",
"carrier": "SQ",
"number": "893",
"operatingCarrier": "SQ",
"operatingCarrierName": "SINGAPORE AIRLINES",
"equipment": "388",
"id": "s1108",
"Identifier": {
"value": "SEG4"
},
"Departure": {
"@type": "DepartureDetail",
"terminal": "1",
"location": "HKG",
"date": "2024-01-21",
"time": "15:45:00"
},
"Arrival": {
"@type": "ArrivalDetail",
"terminal": "0",
"location": "SIN",
"date": "2024-01-21",
"time": "19:45:00"
}
}
]
}
],
"Identifier": {
"authority": "Travelport",
"value": "16f35ce4-9b14-4c34-af3e-9979116cca1a"
},
"ReferenceList": [
{
"@type": "ReferenceListSeatingChart",
"SeatingChart": [
{
"@type": "SeatingChart",
"id": "seatingChart_p0s1108",
"Cabin": [
{
"@type": "Cabin",
"name": "S",
"Layout": [
{
"position": [
"W"
],
"value": "A"
},
{
"position": [
"A"
],
"value": "C"
},
{
"position": [
"A"
],
"value": "H"
},
{
"position": [
"W"
],
"value": "K"
},
{
"position": [
"A"
],
"value": "D"
},
{
"position": [
"C"
],
"value": "E"
},
{
"position": [
"C"
],
"value": "F"
},
{
"position": [
"A"
],
"value": "G"
},
{
"startRow": 31,
"endRow": 37
}
],
"Row": [
{
"@type": "Row",
"label": "31",
"Space": [
{
"@type": "Space",
"location": "A",
"Characteristic": [
"CH",
"L",
"W"
]
},
{
"@type": "Space",
"location": "C",
"Characteristic": [
"A",
"CH",
"I",
"L"
]
},
{
"@type": "Space",
"location": "H",
"Characteristic": [
"A",
"CH",
"I",
"L"
]
},
{
"@type": "Space",
"location": "K",
"Characteristic": [
"CH",
"L",
"W"
]
}
]
},
{
"@type": "Row",
"label": "32",
"Space": [
{
"@type": "Space",
"location": "A",
"Characteristic": [
"W"
]
},
{
"@type": "Space",
"location": "C",
"Characteristic": [
"A",
"H"
]
},
{
"@type": "Space",
"location": "H",
"Characteristic": [
"A",
"H"
]
},
{
"@type": "Space",
"location": "K",
"Characteristic": [
"W"
]
}
]
},
{
"@type": "Row",
"label": "33",
"Space": [
{
"@type": "Space",
"location": "A",
"Characteristic": [
"W"
]
},
{
"@type": "Space",
"location": "C",
"Characteristic": [
"A",
"H",
"I"
]
},
{
"@type": "Space",
"location": "D",
"Characteristic": [
"1",
"A",
"B",
"I"
]
},
{
"@type": "Space",
"location": "E",
"Characteristic": [
"9"
]
},
{
"@type": "Space",
"location": "F",
"Characteristic": [
"9",
"I"
]
},
{
"@type": "Space",
"location": "G",
"Characteristic": [
"1",
"A",
"B",
"I"
]
},
{
"@type": "Space",
"location": "H",
"Characteristic": [
"A",
"H",
"I"
]
},
{
"@type": "Space",
"location": "K",
"Characteristic": [
"W"
]
}
]
}
]
}
]
}
]
}
]
}
}
When Seat Map is sent for flight/s in a booking that already have seat assignments, the response inlcudes HeldAncillary to list the current SeatAssignment for each traveler on the flight/s. This supports modifying seats by holding the current seats until the new seats are successfully booked at workbench commit, ensuring those seats remain available in case of a booking failure. For brevity, the objects in Cabin/Layout and Cabin/Row have been removed from this example.

The current seat assignments are returned in HeldAncillary starting on line 328.
{
"CatalogOfferingsAncillaryListResponse": {
"@type": "CatalogOfferingsAncillaryListResponse",
"transactionId": "7a8308c5-3341-4066-ab0a-61aab0b09321",
"traceId": "f5a9dc78-3a77-4b0b-8fa9-4a49d489df76",
"CatalogOfferingsID": [
{
"@type": "CatalogOfferingsTravelerFlight",
"id": "travflight_1_0",
"Identifier": {
"value": "ac32d92c-64fd-4820-83b7-7fe86ba5e7a0"
},
"CatalogOffering": [
{
"@type": "CatalogOffering",
"id": "ancillaryID_1_0_1",
"Identifier": {
"authority": "Travelport",
"value": "07d250e7-f015-447d-989e-d47e455ee335"
},
"ProductOptions": [
{
"@type": "ProductOptions",
"Product": [
{
"@type": "ProductSeatAvailability",
"id": "productSeatID_1",
"SeatAvailability": [
{
"seatAvailabilityStatus": "Available",
"value": [
"5A",
"5B",
"5C",
"5E",
"5F",
"6A",
"6B",
"6C",
"6E",
"6F",
"7A",
"7B",
"7C",
"7E",
"7F",
"8A",
"8B",
"8C",
"8E",
"8F",
"15A",
"15B",
"15C",
"15D",
"15E",
"15F",
"16A",
"16B",
"16C",
"16D",
"16E",
"16F",
"17A",
"17B",
"17C",
"17D",
"17E",
"17F",
"18A",
"18B",
"18C",
"18D",
"18E",
"18F",
"19A",
"19B",
"19C",
"19D",
"19E",
"19F",
"20A",
"20B",
"20C",
"20D",
"20E",
"20F",
"21A",
"21B",
"21C",
"21D",
"21E",
"21F",
"22A",
"22B",
"22C",
"22D",
"22E",
"22F",
"23A",
"23B",
"23C",
"23D",
"23E",
"23F",
"24A",
"24B",
"24C",
"24D",
"24E",
"24F",
"25A",
"25B",
"25C",
"25D",
"25E",
"25F",
"26A",
"26B",
"26D",
"26E",
"26F",
"27A",
"27B",
"27C",
"27D",
"27E",
"27F"
]
},
{
"seatAvailabilityStatus": "Reserved",
"value": [
"9A",
"9F",
"10A",
"10B",
"10C",
"10D",
"10E",
"10F",
"11A",
"11B",
"11C",
"11D",
"11E",
"11F",
"12A",
"12B",
"12C",
"12D",
"12E",
"12F",
"13D",
"26C",
"29A",
"29B",
"29C",
"29D",
"29E",
"29F",
"30A",
"30B",
"30C",
"30D",
"30E",
"30F"
]
}
],
"Brand": {
"@type": "Brand",
"name": "SEAT ASSIGNMENT"
},
"SeatingChartRef": "seatingChart_1"
}
]
}
],
"Price": {
"@type": "PriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "GBP"
},
"Base": 0,
"TotalPrice": 0
}
},
{
"@type": "CatalogOffering",
"id": "ancillaryID_1_0_2",
"Identifier": {
"authority": "Travelport",
"value": "b9e0100a-a5e4-4134-be87-e4e4dbb48953"
},
"ProductOptions": [
{
"@type": "ProductOptions",
"Product": [
{
"@type": "ProductSeatAvailability",
"id": "productSeatID_2",
"SeatAvailability": [
{
"seatAvailabilityStatus": "Reserved",
"value": [
"4A",
"4B",
"4C",
"4D",
"4E",
"4F"
]
}
],
"Brand": {
"@type": "Brand",
"name": "EXTRA LEGROOM"
},
"SeatingChartRef": "seatingChart_1"
}
]
}
],
"Price": {
"@type": "PriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "GBP"
},
"Base": 45,
"TotalTaxes": 0,
"TotalPrice": 45,
"PriceBreakdown": [
{
"@type": "PriceBreakdownAncillaryAir",
"Amount": {
"@type": "Amount",
"Taxes": {
"@type": "TaxesDetail",
"Tax": [
{
"value": 0
}
]
}
}
}
]
}
},
{
"@type": "CatalogOffering",
"id": "ancillaryID_1_0_3",
"Identifier": {
"authority": "Travelport",
"value": "cce684c1-a193-47b7-ac38-413c20a44d40"
},
"ProductOptions": [
{
"@type": "ProductOptions",
"Product": [
{
"@type": "ProductSeatAvailability",
"id": "productSeatID_3",
"SeatAvailability": [
{
"seatAvailabilityStatus": "Available",
"value": [
"9B",
"9C",
"9E"
]
}
],
"Brand": {
"@type": "Brand",
"name": "PREFERRED SEAT"
},
"SeatingChartRef": "seatingChart_1"
}
]
}
],
"Price": {
"@type": "PriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "GBP"
},
"Base": 10,
"TotalTaxes": 0,
"TotalPrice": 10,
"PriceBreakdown": [
{
"@type": "PriceBreakdownAncillaryAir",
"Amount": {
"@type": "Amount",
"Taxes": {
"@type": "TaxesDetail",
"Tax": [
{
"value": 0
}
]
}
}
}
]
}
}
],
"TravelerIdentifierRef": [
{
"name": "RAMESH KK",
"passengerTypeCode": "ADT",
"id": "travelerRefId_1",
"value": "70243488-bcfa-458c-9c3f-604a9d769c57"
},
{
"name": "SARAN KUMAR",
"passengerTypeCode": "CHD",
"id": "travelerRefId_2",
"value": "c89cdd15-0410-4dfe-b85b-df95fbb6b099"
}
],
"HeldAncillary": [
{
"@type": "HeldAncillary",
"travelerRef": "travelerRefId_1",
"Ancillary": {
"@type": "AncillaryAirSeat",
"FlightRef": [
"Flight_01"
],
"SeatAssignment": {
"@type": "SeatAssignment",
"Seat": "009A"
}
}
},
{
"@type": "HeldAncillary",
"travelerRef": "travelerRefId_2",
"Ancillary": {
"@type": "AncillaryAirSeat",
"FlightRef": [
"Flight_01"
],
"SeatAssignment": {
"@type": "SeatAssignment",
"Seat": "009F"
}
}
}
],
"Flight": [
{
"@type": "Flight",
"duration": "PT4H30M",
"carrier": "QF",
"number": "0932",
"equipment": "73H",
"id": "Flight_01",
"Identifier": {
"authority": "Travelport",
"value": "42612123-43e4-4452-91e5-ee2dea0dc5eb"
},
"Departure": {
"@type": "DepartureDetail",
"location": "PER",
"date": "2024-11-23",
"time": "06:00:00"
},
"Arrival": {
"@type": "ArrivalDetail",
"location": "BNE",
"date": "2024-11-23",
"time": "12:30:00"
}
}
]
}
],
"Result": {
"@type": "Result"
},
"Identifier": {
"value": "a53cf939-9491-4128-8790-af963dc8d505"
},
"ReferenceList": [
{
"@type": "ReferenceListSeatingChart",
"SeatingChart": [
{
"@type": "SeatingChart",
"id": "seatingChart_1",
"Cabin": [
{
"@type": "Cabin",
"name": "ECONOMY",
"Layout": [...],
"Row": [...]
}
]
}
]
}
]
}
}