SeatAvailability_Web_Service_User_Guide_June_17
SeatAvailability V2
Interface Specification
June 2017
Table of Contents
1 Disclaimer
2 Introduction
2.1 Support Details
2.1.1 Commercial Support
2.1.2 Technical Support
3 Generic Message Elements
3.1 Agency and Service Provider data
3.1.1 Example Agency and Service Provider data
3.2 Common Schemas
4 SeatAvailability Webservice
4.1 Interface Design
4.2 Schemas
4.3 Request and Response Definitions
4.3.1 Request
4.3.2 Response
4.4 URLs to access this web service
4.4.1 Live URL
4.4.2 Test URL
4.4.3 Mandatory headers
4.5 Sample SOAP NDC Request to access this web service
4.6 Sample SOAP NDC Response
4.7 Sample SOAP NDC Response with errors
4.8 Sample SOAP Response with errors
5 Frequently Asked Questions
5.1 FAQs
6 Usability Guide
6.1 Usage advice
7 Appendix 1 –Web Services error responses
7.1 SeatAvailability error/ineligibility checks
8 Appendix 2 – Languages supported by BA
Disclaimer
This document is confidential and for the sole use of the company to whom it was issued. Any transmission of this document to third parties remains subject to British Airways' prior approval.
Please note that this document is for information only and does not necessarily imply that British Airways will be allowing the reader to access its APIs. All information on how to get access to the APIs can be found on http://developer.ba.com/ndc_pilot
As British Airways implements new products and features through NDC, this document will be updated. British Airways will keep its users informed of any significant change to the product, and the latest version of this user guide can always be provided upon request from selling.distribution@ba.com.
In no circumstances shall British Airways have any liability for losses (whether direct or indirect) arising from the participation in this trial, or for any inaccuracies, errors in, or omissions from this document.
Introduction
The SeatAvailability Webservice provides IATA Accredited Travel Agents, new retailers and Service Providers the ability to retrieve seat map for one or more flight segments as per IATA NDC schema standards.
SeatAvailability – this service returns priced seat map for the requested flight segments in a requested cabin
Support Details
Commercial Support
For any assistance that you require with any commercial queries please contact:
Selling.distribution@ba.com
Technical Support
For any assistance with integration issues or general queries, please refer to the blog section available on http://developer.ba.comhttp://developer.ba.com. This section is monitored daily by our technical team and should be the first point of contact for any integration queries.
For any assistance with suspected technical faults or issues please follow the process detailed below:
System unavailable – please telephone the British Airways IT Service Centre:
+44 (0) 20 8562 4000
System available, non-critical faults - please send an email to:
itsc.itsc@ba.com
Please have the following information available when calling or emailing the service centre:
If emailing, the email subject should be:
- " Company name – NDC Web Service issue"
The call or email should include the following:
- Your name and Company
- Your contact Telephone Number (including full dialling code)
- Full Location including country, town, building
- System / Technology / Hardware involved
- Number of users affected
Short summary of the problem:
- Error / System Message: Please put in specific error message received.
- Details of actions leading to problem / question (commands issued, buttons clicked etc)
- Example SOAP of request being sent (including username and password to connect to service.
- Example of any response received from the service.
Attachments of screenshots displaying the error would also be useful.
Generic Message Elements
Agency and Service Provider data
Field Type |
Data Type |
Schema Definition |
Optional/Mandatory |
Comments |
Party |
|
|
M |
|
Sender |
|
|
M |
Message sender information |
TravelAgencySender |
|
|
M |
Specify the travel agency details |
Name |
|
Party/Sender/TravelAgencySender/Name |
O |
Travel agency name |
Contacts |
|
|
O |
This is an optional element in NDC schema but for calling BA service this must be passed with requesting agent's email address only if the requesting agent is an IATA agent |
Contact |
|
|
M |
|
EmailContact |
|
|
O |
This is an optional element in NDC schema but for calling BA service (OrderCreate) this must be passed, if the requesting agent is an IATA agent. This is important as the eTicket confirmation email will only be sent to this email address for IATA agent's bookings |
Address |
|
Party/Sender/TravelAgencySender/Contacts/Contact/EmailContact/Address |
M |
Travel agency's email address |
OtherIDs |
|
|
O |
Specify Non-IATA agent details |
OtherID |
|
Party/Sender/TravelAgencySender/OtherIDs/OtherID |
M |
Non-IATA agent code |
IATA_Number |
|
Party/Sender/TravelAgencySender/IATA_Number |
O |
Travel agent's IATA number |
AgencyID |
|
Party/Sender/TravelAgencySender/AgencyID |
M |
Travel agency name |
CorporateSender |
|
|
|
Specify corporate details |
Contacts |
|
|
O |
This is an optional element in NDC schema. Populate this section with the requesting corporate's email address only if the corporate is directly creating a booking with BA via NDC Services |
Contact |
|
|
M |
|
EmailContact |
|
|
O |
This is an optional element in NDC schema but for calling BA service (OrderCreate) this must be passed, if the corporate is directly creating a booking with BA via NDC Services and the corporate has an IATA number. This is important as the eTicket confirmation email will only be sent to this email address for IATA agent's bookings |
Address |
|
Party/Sender/CorporateSender/Contacts/Contacts/EmailContact/Address |
M |
Corporate's email address |
ID |
|
Party/Sender/CorporateSender/ID |
M |
Corporate's JBID |
IATA_Number |
|
Party/Sender/CorporateSender/IATA_Number |
O |
Corporate's IATA or non-IATA number |
Participants |
|
|
O |
Specify Service Provider details |
Participant |
|
|
M |
|
TravelAgencyParticipant |
|
|
O |
Populate this section only if the participant is a Travel Management Company (TMC) and is creating a booking for the corporate customer i.e request is originated by the corporate |
SequenceNumber (Attribute) |
|
Party/Participants/Participant/TravelAgencyParticipant/SequenceNumber (Attribute) |
M |
Unique number |
Contacts |
|
|
O |
This is an optional element in NDC schema. Populate this section with the requesting agent's (TMC's) email address only if the requesting agent is an IATA agent |
Contact |
|
|
M |
|
EmailContact |
|
|
O |
This is an optional element in NDC schema but for calling BA service (OrderCreate) this must be passed, if the requesting agent (TMC) is an IATA agent. This is important as the eTicket confirmation email will only be sent to this email address for IATA agent's bookings |
Address |
|
Party/Participants/Participant/TravelAgencyParticipant/Contacts/Contact/ EmailContact/Address |
M |
Travel agency's(TMC's) email address |
OtherIDs |
|
|
O |
Specify Non-IATA agent details |
OtherID |
|
Party/Participants/Participant/TravelAgencyParticipant/OtherIDs/OtherID |
M |
TMC's Non-IATA agent code |
IATA_Number |
|
Party/Participants/Participant/TravelAgencyParticipant/IATA_Number |
O |
Travel agent's (TMC's) IATA number |
AgencyID |
|
Party/Participants/Participant/TravelAgencyParticipant/AgencyID |
M |
Travel agency name |
AggregatorParticipant |
|
|
O |
Populate this section only if the calling client is a Service Provider |
SequenceNumber (Attribute) |
|
Party/Participants/Participant/AggregatorParticipant/ SequenceNumber (Attribute) |
M |
Unique number |
Name |
|
Party/Participants/Participant/AggregatorParticipant/Name |
O |
Service Provider name |
AggregatorID |
|
Party/Participants/Participant/AggregatorParticipant/AggregatorID |
M |
Service Provider ID provided by BA |
Example Agency and Service Provider data
Travel Agent (IATA) accessing BA NDC Services via Service Provider
<Party>
<Sender>
<TravelAgencySender>
<Name>ABC</Name>
<Contacts>
<Contact>
<EmailContact>
<Address>agentemailaddress@abc.com</Address>
</EmailContact>
</Contact>
</Contacts>
<IATA_Number>35209893</IATA_Number>
<AgencyID>ABC</AgencyID>
</TravelAgencySender>
</Sender>
<Participants>
<Participant>
<AggregatorParticipant SequenceNumber="123">
<Name>Travelco</Name>
< AggregatorID > 00123456</AggregatorID >
</AggregatorParticipant>
</Participant>
</Participants>
</Party>
Travel Agent (Non-IATA) accessing BA NDC Services via Service Provider
<Party>
<Sender>
<TravelAgencySender>
<Name>ABC</Name>
<Contacts>
<Contact>
<EmailContact>
<Address>agentemailaddress@abc.com</Address>
</EmailContact>
</Contact>
</Contacts>
<OtherIDs>
<OtherID>0000007</OtherID>
</OtherIDs>
<AgencyID>ABC</AgencyID>
</TravelAgencySender>
</Sender>
<Participants>
<Participant>
<AggregatorParticipant SequenceNumber="123">
<Name>Travelco</Name>
< AggregatorID > Travelco </AggregatorID >
</AggregatorParticipant>
</Participant>
</Participants>
</Party>
Travel Management Company (TMC) accessing BA NDC Services for Corporates
<Party>
<Sender>
<CorporateSender>
<ID>IN3401FR</ID>
</CorporateSender>
</Sender>
<Participants>
<!-Participant 1 - TMC->
<Participant>
<TravelAgencyParticipant SequenceNumber="1">
<Contacts>
<Contact>
<EmailContact>
<Address>ndcagent@abc.com</Address>
</EmailContact>
</Contact>
</Contacts>
<IATA_Number>91266162</IATA_Number>
<AgencyID>ABCD</AgencyID>
</TravelAgencyParticipant>
</Participant>
</Participants>
</Party>
Travel Management Company (TMC) accessing BA NDC Services for Corporates via Service Provider
<Party>
<Sender>
<CorporateSender>
<ID>IN3401FR</ID>
</CorporateSender>
</Sender>
<Participants>
<!-Participant 1 - TMC->
<Participant>
<TravelAgencyParticipant SequenceNumber="1">
<Contacts>
<Contact>
<EmailContact>
<Address>ndcagent@abc.com</Address>
</EmailContact>
</Contact>
</Contacts>
<IATA_Number>91266162</IATA_Number>
<AgencyID>AMEX</AgencyID>
</TravelAgencyParticipant>
</Participant>
<!-Participant 2 - Service Provider->
<Participant>
<AggregatorParticipant SequenceNumber="2">
<AggregatorID>00000780</AggregatorID>
</AggregatorParticipant>
</Participant>
</Participants>
</Party>
Corporate accessing BA NDC Services directly
<Party>
<Sender>
<CorporateSender>
<Contacts>
<Contact>
<EmailContact>
<Address>ndcagent@abc.com</Address>
</EmailContact>
</Contact>
</Contacts>
<ID>IN3401FR</ID>
<! — IATA or non-IATA number should be requested in the same field-->
<IATA_Number>12345678</IATA_Number>
</CorporateSender>
</Sender>
</Party>
Common Schemas
The attached schemas are common for AirShopping, FlightPrice, SeatAvailability and OrderCreate
SeatAvailability Webservice
This service returns priced seat map for one or more flights requested. The service returns one seat map per flight and return only seats that are unoccupied along with seat display details such as the column details, row start and end position, seat and non-seat characteristics. This service can be called during initial booking flow [OR] after the booking is created to return priced seat map.
Interface Design
This web service is called with the following inputs:
- List of flight segments and for each flight segment the departure airport, arrival airport, flight number, booking class (selling class), cabin name etc
- Seat maps for upto 6 Origin Destination pairs can be requested.
- Fare basis code for each passenger type and for each flight segment
- Number of anonymous passengers with passenger type
- Number of known passengers with passenger type, name and FQTV details
- OrderID (Booking Reference/PNR)
The output data this service returns includes:
- Priced seat map for the requested flights and cabin
- One seat map is returned per flight
- Each seat map returns the following
- Exit row position
- Wing position
- Seat column details
- Seat row details
- Seat characteristics
- Non-seat characteristics
- Links to BA seating policy and Terms and conditions
- General seating rules
- Payment options (returned only when the service is called in post-sale scenario)
- List of applicable payment cards with surcharge, if applicable
- Mandatory and optional payment card details that should be specified when making a payment
- Mandatory and optional billing address details that should be specified when making a payment
Limitations:
-
- Seat map is returned only for BA operated flights
Schemas
The service adheres to the IATA NDC SeatAvailability schema version 16.1, with some modifications
Schemas
Main schemas used in the web service. Also, please refer Section 2.2 for common schemas
Request and Response Definitions
Note: In the Header that accompanies your soap request please ensure you set the Username Token details as supplied by BA, only if the service is not accessed via Mashery.
Request
Service Input Parameters |
|
|
|
|
Input Parameters |
Type |
Schema Definition |
Optional/Mandatory |
Comments |
Request object |
SeatAvailabilityRQ |
SeatAvailabilityRQ.xsd |
M |
|
SeatAvailabilityRQ Data Fields |
|
|
|
|
Field Type |
Data Type |
Schema Definition |
Optional/Mandatory |
Comments |
Agency and Service Provider data See section 2.1 |
|
|
|
|
Version (Attribute) |
|
SeatAvailabilityRQ/Version (Attribute) |
M |
Specify NDC schema message version. Always pass 16.1 |
PrimaryLangID (Attribute) |
|
SeatAvailabilityRQ/PrimaryLangID (Attribute) |
O |
Specifies the agent's preferred language. Service response will be returned in this language |
AltLangID (Attribute) |
|
SeatAvailabilityRQ/AltLangID (Attribute) |
O |
Specifies the preferred language in which the mail to be sent. eTicket receipt email and any other communication emails from BA will be sent in this language |
Travelers |
|
|
M |
BA accepts both anonymous and known traveler in the SeatAvailability request. Known traveller's details (FQTV) may be used in determining the seat price |
Traveler |
|
|
M |
This must be repeated for each passenger. If the client wants to shop for 2 ADT, 2 CHD and 2 INF then Traveler should be repeated 6 times for each passenger and the Traveler can be Anonymous and Known |
AnonymousTraveler |
|
|
O |
This is not required to be specified when the service is called in post-sale scenario |
ObjectKey (Attribute) |
|
|
O |
This attribute must be defined so that this key can be referenced to associate fare basis code for this passenger and to associate infant with an adult |
PTC |
|
SeatAvailabilityRQ/Travelers/Traveler/AnonymousTraveler/PTC |
O |
Passenger Type Code |
PassengerAssociation |
|
SeatAvailabilityRQ/Travelers/Traveler/AnonymousTraveler/PassengerAssociation |
O |
This element is used to associate an infant (not requiring a seat) to an adult. Specify the infant passenger's ObjectKey |
Age |
|
|
O |
Though this is an optional element, it is recommended to provide passenger's age, as it will be used to identify if the passenger is a young adult. |
Value |
|
SeatAvailabilityRQ/Travelers/Traveler/AnonymousTraveler /Age/BirthDate |
M [Choice] |
Example: 15 |
BirthDate |
|
SeatAvailabilityRQ/Travelers/Traveler/AnonymousTraveler/Age/BirthDate |
M [Choice] |
Date of birth in "YYYY-MM-DD" format |
RecognizedTraveler |
|
|
O |
|
ObjectKey (Attribute) |
|
|
O |
This attribute must be defined so that this key can be referenced to associate fare basis code for this passenger and to associate infant with an adult |
PTC |
|
SeatAvailabilityRQ/Travelers/Traveler/RecognizedTraveler/PTC |
O |
Passenger Type Code |
ResidenceCode |
|
SeatAvailabilityRQ/Travelers/Traveler/RecognizedTraveler/ResidenceCode |
O |
This will be used to determine the list of applicable cards. |
PassengerAssociation |
|
SeatAvailabilityRQ/Travelers/Traveler/RecognizedTraveler/PassengerAssociation |
O |
This element is used to associate an infant (not requiring a seat) to an adult. Specify the infant passenger's ObjectKey |
Age |
|
|
O |
Though this is an optional element, it is recommended to provide passenger's age, as it will be used to identify if the passenger is a young adult. |
Value |
|
SeatAvailabilityRQ/Travelers/Traveler/RecognizedTraveler/Age/Value |
M [Choice] |
Example: 15 |
BirthDate |
|
SeatAvailabilityRQ/Travelers/Traveler/RecognizedTraveler/Age/BirthDate |
M [Choice] |
Date of birth in "YYYY-MM-DD" format |
Name |
|
|
M |
|
Surname |
|
SeatAvailabilityRQ/Travelers/Traveler/RecognizedTraveler/Name/Surname |
M |
Example: SMITH |
Given |
|
SeatAvailabilityRQ/Travelers/Traveler/RecognizedTraveler/Name/Given |
O |
Example: WILL |
Title |
|
SeatAvailabilityRQ/Travelers/Traveler/RecognizedTraveler/Name/Title |
O |
Example: MR |
Middle |
|
SeatAvailabilityRQ/Travelers/Traveler/RecognizedTraveler/Name/Middle |
O |
Example: G |
FQTVs |
|
|
O |
Specify passenger's frequent flyer information |
AirlineID |
|
SeatAvailabilityRQ/Travelers/Traveler/RecognizedTraveler/FQTVs/AirlineID |
M |
Frequent flyer airline code |
Account |
|
|
O |
|
Number |
|
SeatAvailabilityRQ/Travelers/Traveler/RecognizedTraveler/FQTVs/Account/Number |
M |
Frequent flyer number |
Query |
|
|
M |
This section will vary based on when the service is called |
OriginDestination |
|
|
O |
Origin and destination (O&D) details. This must be repeated for each O&D. If the request is for EDI-AMS return then this must be repeated twice once for EDI-AMS and once for AMS-EDI |
FlightSegmentReference |
|
SeatAvailabilityRQ/Query/OriginDestination/FlightSegmentReference |
O |
List of flights within an O&D. |
ref (Attribute) |
|
SeatAvailabilityRQ/Query/OriginDestination/FlightSegmentReference/ref (Attribute) |
M |
Unique reference to a flight segment |
ClassOfService |
|
|
M |
|
refs (Attribute) |
|
|
O |
Reference to a fare basis code for all passengers for this flight |
Code |
|
SeatAvailabilityRQ/Query/OriginDestination/FlightSegmentReference/ClassOfService/Code |
M |
Booking/Selling class |
MarketingName |
|
SeatAvailabilityRQ/Query/OriginDestination/FlightSegmentReference/ClassOfService/MarketingName |
O |
The cabin this selling class belongs to |
OrderID |
|
|
O |
PNR/Booking Reference |
DataLists |
|
|
O |
|
FareList |
|
|
O |
Fare basis code for each passenger for each flight should be specified |
FareGroup |
|
|
M |
This is a list and will be repeated to return all fare basis code for the itinerary |
refs (Attribute) |
|
SeatAvailabilityRQ/DataLists/FareList/FareGroup/refs (Attribute) |
O |
Reference to passengers and flight to which the fare basis code is applicable |
ListKey (Attribute) |
|
SeatAvailabilityRQ/DataLists/FareList/FareGroup/ListKey (Attribute) |
M |
Example: FBCODEINFBA0428 |
Fare |
|
|
M |
|
FareCode |
|
|
M |
|
Code |
|
SeatAvailabilityRQ/DataLists/FareList/FareGroup/Fare/ FareCode/Code |
M |
Always pass as "70J" |
FareBasisCode |
|
|
M |
|
Code |
|
SeatAvailabilityRQ/DataLists/FareList/FareGroup/ FareBasisCode/Code |
M |
Fare basis code |
FlightSegmentList |
|
|
O |
Note: This is an optional list in NDC schema but this must be specified when the service is called during initial booking flow |
FlightSegment |
|
|
M |
Flight segment details |
SegmentKey (Attribute) |
|
SeatAvailabilityRQ/DataLists/FlightSegmentList/FlightSegment/SegmentKey (Attribute) |
M |
Example: BA0428 |
Departure |
|
|
M |
Departure information |
AirportCode |
|
SeatAvailabilityRQ/DataLists/FlightSegmentList/FlightSegment/Departure/AirportCode |
M |
Departure airport IATA code |
Date |
|
FlightPriceRS/DataLists/FlightSegmentList/FlightSegment/Departure/Date |
M |
Local Departure date i.e. local to the departure location |
Time |
|
SeatAvailabilityRQ/DataLists/FlightSegmentList/FlightSegment/Departure/Time |
O |
Local Departure time i.e. local to the departure location |
Arrival |
|
|
M |
Arrival information |
AirportCode |
|
SeatAvailabilityRQ/DataLists/FlightSegmentList/FlightSegment/Arrival/AirportCode |
M |
Arrival airport IATA code |
Date |
|
SeatAvailabilityRQ/DataLists/FlightSegmentList/FlightSegment/Arrival/Date |
O |
Local Arrival date i.e. local to the arrival location |
Time |
|
SeatAvailabilityRQ/DataLists/FlightSegmentList/FlightSegment/Arrival/Time |
O |
Local Arrival time i.e. local to the arrival location |
MarketingCarrier |
|
|
M |
Marketing carrier information |
AirlineID |
|
SeatAvailabilityRQ/DataLists/FlightSegmentList/FlightSegment/MarketingCarrier/AirlineID |
M |
Marketing carrier code |
FlightNumber |
|
SeatAvailabilityRQ/DataLists/FlightSegmentList/FlightSegment/MarketingCarrier/FlightNumber |
M |
Marketing flight number |
Equipment |
|
|
O |
Aircraft information |
AircraftCode |
|
SeatAvailabilityRQ/DataLists/FlightSegmentList/FlightSegment/Equipment/AircraftCode |
M |
Example: 767 |
Response
Service Response Parameters |
|
|
|
|
Input Parameters |
Type |
Schema Definition |
Optional/Mandatory |
Comments |
Response object |
SeatAvailabilityRS |
SeatAvailabilityRS.xsd |
M |
|
SeatAvailabilityRS Data Fields |
|
|
|
|
Field Type |
Data Type |
Schema Definition |
Optional/Mandatory |
Comments |
Document |
|
|
M |
|
Name |
|
SeatAvailabilityRS/Document/Name |
M |
Will be returned as "BA" |
Success |
|
SeatAvailabilityRS/Success |
M |
The presence of the empty Success element explicitly indicates that the message succeeded |
Warnings |
|
|
O |
Warning will be returned |
Warning |
|
SeatAvailabilityRS/Warnings/Warning |
O |
BA warning message |
Type (Attribute) |
|
OrderViewRS/Warnings/Warning/Type (Attribute) |
O |
PADIS Code - IATA definition from codeset 9845 |
ShortText (Attribute) |
|
OrderViewRS/Warnings/Warning/ShortText (Attribute) |
O |
PADIS message - IATA definition from codeset 9845 |
ShoppingResponseID |
|
|
O |
|
ResponseID |
|
SeatAvailabilityRS/ShoppingResponseID/ResponseID |
M |
Unique shopping response id. This is normally the date and time stamp |
Flights |
|
|
M |
This is a list and will be repeated for each flight for which the seat map is returned |
FlightSegmentReferences |
|
SeatAvailabilityRS/Flights /FlightSegmentReferences |
O |
|
Cabin |
|
|
M |
This is a list and will be repeated once for upper deck and once for main deck when the requested cabin is spread across upper and main deck |
Code |
|
SeatAvailabilityRS/Flights/Cabin/Code |
M |
BA Cabin code for the cabin for which the seat map is returned |
CabinLayout |
|
|
O |
|
WingPosition |
|
|
O |
Over the wing row information, if applicable. This must be returned regardless of over the wing seats are returned as valid seats |
Rows |
|
|
M |
|
UpperDeckInd (Attribute) |
|
SeatAvailabilityRS/Flights/Cabin/CabinLayout/WingPosition/Rows/UpperDeckInd (Attribute) |
O |
"True" means the wing row position is in upper deck |
First |
|
SeatAvailabilityRS/Flights/Cabin/CabinLayout/WingPosition/Rows/First |
M |
Wing starting row position |
Last |
|
SeatAvailabilityRS/Flights/Cabin/CabinLayout/WingPosition/Rows/Last |
M |
Wing ending row position |
ExitRowPosition |
|
|
O |
Return the exit row information, if applicable. This must be returned regardless of whether exit row seats are open or are returned as valid seats |
Rows |
|
|
M |
|
UpperDeckInd (Attribute) |
|
SeatAvailabilityRS/Flights/Cabin/CabinLayout/ExitRowPosition/Rows/UpperDeckInd (Attribute) |
O |
"True" means the exit row position is in upper deck |
First |
|
SeatAvailabilityRS/Flights/Cabin/CabinLayout/ExitRowPosition/Rows/First |
M |
Exit seat starting row position |
Columns (Attribute) |
|
SeatAvailabilityRS/Flights/Cabin/CabinLayout/ExitRowPosition/Rows/First/ Columns (Attribute) |
O |
List of exit seat columns. |
Last |
|
SeatAvailabilityRS/Flights/Cabin/CabinLayout/ExitRowPosition/Rows/Last |
M |
Exit seat ending row position |
Columns (Attribute) |
|
SeatAvailabilityRS/Flights/Cabin/CabinLayout/ExitRowPosition/Rows/Last/ Columns (Attribute) |
O |
List of exit seat columns. |
SeatDisplay |
|
|
O |
|
Columns |
|
SeatAvailabilityRS/Flights/Cabin/SeatDisplay/Columns |
M |
Returns the list of columns for the cabin |
Rows |
|
|
M |
Returns the starting end row position for each column |
First |
|
SeatAvailabilityRS/Flights/Cabin/SeatDisplay/Rows/First |
M |
Row starting row position for columns ABCDEFGHJK |
Last |
|
SeatAvailabilityRS/Flights/Cabin/SeatDisplay/Rows/Last |
M |
Row ending row position for columns ABCDEFGHJK |
Component |
|
|
O |
This is where the non-seat characteristics are returned |
Locations |
|
|
M |
|
Location |
|
|
M |
|
Row |
|
|
M |
Non-seat's row position |
Position |
|
SeatAvailabilityRS/Flights/Cabin/SeatDisplay/Component/Locations/Location/Row/Position |
M |
Example: 27 |
Column |
|
|
M |
Non-seat's column position |
Position |
|
SeatAvailabilityRS/Flights/Cabin/SeatDisplay/Component/Locations/Location/Column/Position |
M |
Example: D |
Type |
|
|
M |
|
Code |
|
SeatAvailabilityRS/Flights/Cabin/SeatDisplay/Component/Type/Code |
M |
IATA Code from codeset 9978 |
Definition |
|
SeatAvailabilityRS/Flights/Cabin/SeatDisplay/Component/Type/Definition |
O |
IATA definition from codeset 9978 |
TableName |
|
SeatAvailabilityRS/Flights/Cabin/SeatDisplay/Component/Type/TableName |
O |
IATA codeset value |
Services |
|
|
O |
This is where seat category price is returned |
Service |
|
|
M |
Service will be repeated for each seat category price for all flights |
ObjectKey (Attribute) |
|
SeatAvailabilityRS/Services/Service/ObjectKey (Attribute) |
O |
Example: Service1 |
ServiceID |
|
SeatAvailabilityRS/Services/Service/ServiceID |
M |
Example: SRVC-SEAT-PRICE-1-BA35 |
Owner (Attribute) |
|
SeatAvailabilityRS/Services/Service/ServiceID/Owner (Attribute) |
M |
Will always be "BA" |
Name |
|
SeatAvailabilityRS/Services/Service/Name |
M |
Seat category |
Encoding |
|
|
M |
|
RFIC |
|
|
M |
IATA defined Reason For Issuance Code |
Code |
|
SeatAvailabilityRS/Services/Service/Encoding/ RFIC/Code |
M |
Will always be "A" |
Code |
|
SeatAvailabilityRS/Services/Service/Encoding/Code |
M |
Service code |
Descriptions |
|
|
M |
|
Description |
|
|
M |
|
Text |
|
SeatAvailabilityRS/Services/Service/Descriptions/ Description/Text |
O |
Seat category |
Price |
|
|
O |
|
Total |
|
SeatAvailabilityRS/Services/Service/Price/Total |
M |
Seat category price |
Code (Attribute) |
|
SeatAvailabilityRS/Services/Service/Price/Total/ Code (Attribute) |
O |
Currency Code |
Associations |
|
|
O |
|
Traveler |
|
|
O |
|
AllTravelerInd |
|
SeatAvailabilityRS/Services/Service/Associations/ Traveler/AllTravelerInd |
M |
Will always be "True" when the service is called during initial booking flow |
TravelerReferences |
|
SeatAvailabilityRS/Services/Service/Associations/ Traveler/TravelerReferences |
M |
References to passengers to whom the price is applicable |
Flight |
|
|
O |
|
SegmentReferences |
|
SeatAvailabilityRS/Services/Service/Associations/ Flight/SegmentReferences |
M |
Reference to a flight for which the seat price is returned |
DataLists |
|
|
O |
|
AnonymousTravelerList |
|
|
O |
List of all passengers to whom the seat map is returned |
AnonymousTraveler |
|
|
M |
This will be repeated for each anonymous passenger |
ObjectKey (Attribute) |
|
SeatAvailabilityRS/DataLists/AnonymousTravelerList/AnonymousTraveler/ObjectKey (Attribute) |
O |
Example: SH1 |
PTC |
|
SeatAvailabilityRS/DataLists/AnonymousTravelerList/AnonymousTraveler/PTC |
O |
Passenger type code of this passenger |
PassengerAssociation |
|
SeatAvailabilityRS/DataLists/AnonymousTravelerList/AnonymousTraveler/PassengerAssociation |
O |
Infant association |
RecognizedTravelerList |
|
|
O |
List of all passengers to whom the seat map is returned |
RecognizedTraveler |
|
|
M |
This will be repeated for each known passenger |
ObjectKey (Attribute) |
|
SeatAvailabilityRS/DataLists/RecognizedTravelerList/RecognizedTraveler/ObjectKey (Attribute) |
O |
Example: SH2 |
PTC |
|
SeatAvailabilityRS/DataLists/RecognizedTravelerList/RecognizedTraveler/PTC |
O |
Passenger type code of this passenger |
PassengerAssociation |
|
SeatAvailabilityRS/DataLists/RecognizedTravelerList/RecognizedTraveler/PassengerAssociation |
O |
Infant association |
Name |
|
|
M |
|
Surname |
|
SeatAvailabilityRS/DataLists/RecognizedTravelerList/RecognizedTraveler/Name/Surname |
M |
Example: SMITH |
Given |
|
SeatAvailabilityRS/DataLists/RecognizedTravelerList/RecognizedTraveler/Name/Given |
O |
Example: WILL |
Title |
|
SeatAvailabilityRS/DataLists/RecognizedTravelerList/RecognizedTraveler/Name/Title |
O |
Example: MR |
Middle |
|
SeatAvailabilityRS/DataLists/RecognizedTravelerList/RecognizedTraveler/Name/Middle |
O |
Example: G |
FQTVs |
|
|
O |
Passenger's frequent flyer information |
AirlineID |
|
SeatAvailabilityRS/DataLists/RecognizedTravelerList/RecognizedTraveler/FQTVs/AirlineID |
M |
Frequent flyer airline code |
Account |
|
|
O |
|
Number |
|
SeatAvailabilityRS/DataLists/RecognizedTravelerList/RecognizedTraveler/FQTVs/Account/Number |
M |
Frequent flyer number |
DataLists |
|
|
O |
|
DisclosureList |
|
|
O |
Seating policy link, Terms and conditions link and general seating rules are returned here |
Disclosures |
|
|
M |
This is a list and will be repeated thrice; once for seating policy, once for terms and conditions and once for seating rules |
ListKey (Attribute) |
|
SeatAvailabilityRS/DataLists/DisclosureList/Disclosures/ListKey (Attribute) |
M |
Example: Seating-Rules |
Description |
|
|
M |
This is a list and will be repeated for each seating rule/seating policy link/ terms and conditions link |
Text |
|
SeatAvailabilityRS/DataLists/DisclosureList/Disclosures/ Description/Text |
O |
Example: |
Media |
|
|
O |
|
MediaLink |
|
SeatAvailabilityRS/DataLists/DisclosureList/Disclosures/ Description/Media/ MediaLink |
M |
Seating policy and Terms and conditions link is returned here |
FlightSegmentList |
|
|
O |
|
FlightSegment |
|
|
M |
Flight segment details |
SegmentKey (Attribute) |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/SegmentKey (Attribute) |
M |
Example: BA0428 |
Departure |
|
|
M |
Departure information |
AirportCode |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/Departure/AirportCode |
M |
Departure airport IATA code |
Date |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/Departure/Date |
M |
Local Departure date i.e. local to the departure location |
Time |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/Departure/Time |
O |
Local Departure time i.e. local to the departure location |
Terminal |
|
|
O |
Departure terminal information |
Name |
|
SeatAvailabilityRQ/DataLists/FlightSegmentList/FlightSegment/Departure/Terminal/Name |
O |
Example: 2 |
Arrival |
|
|
M |
Arrival information |
AirportCode |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/Arrival/AirportCode |
M |
Arrival airport IATA code |
Date |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/Arrival/Date |
O |
Local Arrival date i.e. local to the arrival location |
Time |
|
SeatAvailabilityRQ/DataLists/FlightSegmentList/FlightSegment/Arrival/Time |
O |
Local Arrival time i.e. local to the arrival location |
Terminal |
|
|
O |
Arrival terminal information |
Name |
|
SeatAvailabilityRQ/DataLists/FlightSegmentList/FlightSegment/Arrival/Terminal/Name |
O |
Example: 3 |
MarketingCarrier |
|
|
M |
Marketing carrier information |
AirlineID |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/MarketingCarrier/AirlineID |
M |
Marketing carrier code |
FlightNumber |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/MarketingCarrier/FlightNumber |
M |
Marketing flight number |
OperatingCarrier |
|
|
O |
Operating carrier information |
AirlineID |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/OperatingCarrier/AirlineID |
O |
Operating carrier code |
Name |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/OperatingCarrier/Name |
O |
Operating carrier name |
Equipment |
|
|
O |
Aircraft information |
AircraftCode |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/Equipment/AircraftCode |
M |
Example: 767 |
ClassOfService |
|
|
O |
|
Code |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/ClassOfService /Code |
M |
Selling or Booking class code |
MarketingName |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/ClassOfService /MarketingName |
O |
Cabin name |
FlightDetail |
|
|
O |
|
Stops |
|
|
O |
Flight stop quantity |
StopQuantity |
|
SeatAvailabilityRS/DataLists/FlightSegmentList/FlightSegment/FlightDetail/ Stops/StopQuantity |
O |
Stop quantity |
SeatList |
|
|
O |
Seat details are returned in this section |
Seats |
|
|
M |
This is a list and will be repeated for each seat |
refs (Attribute) |
|
SeatAvailabilityRS/DataLists/SeatList/Seats/refs(Attribute) |
O |
Reference to a service (price) that is applicable for this seat |
ListKey (Attribute) |
|
SeatAvailabilityRS/DataLists/SeatList/Seats/ListKey (Attribute) |
M |
An unique key (flight and seat number) |
Location |
|
|
M |
Seat location details |
Column |
|
SeatAvailabilityRS/DataLists/SeatList/Seats/Location/Column |
O |
Seat column |
Row |
|
|
O |
Seat row |
Number |
|
SeatAvailabilityRS/DataLists/SeatList/Seats/Location/Row/Number |
O |
Row number |
SeatData |
|
|
O |
This is where the emergency exit criteria (for emergency exit seat) is returned. This will be returned only for emergency exit seats. |
Marketing |
|
|
O |
|
Remarks |
|
|
O |
|
Remark |
|
SeatAvailabilityRS/DataLists/SeatList/Seats/Location/Row/SeatData/Marketing/Remarks/Remark |
M |
This is a list and will be repeated for each emergency exit criteria
|
Characteristics |
|
|
O |
Seat characteristics |
Characteristic |
|
|
M |
This is a list and will be repeated for each seat characteristic |
Code |
|
SeatAvailabilityRS/DataLists/SeatList/Seats/Location/Characteristics/Characteristic/Code |
M |
IATA Code from codeset 9825 |
Definition |
|
SeatAvailabilityRS/DataLists/SeatList/Seats/Location/Characteristics/Characteristic/Definition |
O |
IATA definition from codeset 9825 |
Details |
|
SeatAvailabilityRS/DataLists/SeatList/Seats/Details |
O |
The seat category this seat belongs to |
Metadata |
|
|
O |
|
Other |
|
|
O |
|
OtherMetadata |
|
|
M |
|
AddressMetadatas |
|
|
M |
|
AddressMetadata |
|
|
M |
Billing address information is returned here |
MetadataKey (Attribute) |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/AddressMetadatas/AddressMetadata/MetadataKey (Attribute) |
M |
Unique key |
AddressType |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/AddressMetadatas/AddressMetadata/AddressType |
O |
Will always be "Billing" |
AddressFields |
|
|
O |
Returns mandatory address fields details that should be provided when payment card is used as form of payment in OrderChangeRQ |
FieldName |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/AddressMetadatas/AddressMetadata/AddressFields/ FieldName |
M |
Example: |
Mandatory (Attribute) |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/AddressMetadatas/AddressMetadata/AddressFields/ FieldName/Mandatory (Attribute) |
M |
Boolean and will always be returned as "True". |
CurrencyMetadatas |
|
|
M |
|
CurrencyMetadata |
|
|
M |
This is where the number of decimal that is applicable for the currency code is returned |
MetadataKey (Attribute) |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/CurrencyMetadatas/CurrencyMetadata/MetadataKey (Attribute) |
M |
Unique key |
Decimals |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/CurrencyMetadatas/CurrencyMetadata/Decimals |
O |
Number of decimal applicable for the currency code returned in the response |
PaymentCardMetadatas |
|
|
M |
|
PaymentCardMetadata |
|
|
M |
Returns the list of applicable payment cards along with the mandatory card information and mandatory billing address information that should be passed when a payment card is selected for payment in OrderChangeQ |
MetadataKey (Attribute) |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/ PaymentCardMetadatas/ PaymentCardMetadata/ MetadataKey (Attribute) |
M |
Unique key |
CardCode |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/ PaymentCardMetadatas/ PaymentCardMetadata/ CardCode |
M |
Example: VI |
CardName |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/ PaymentCardMetadatas/ PaymentCardMetadata/ CardName |
O |
Example: Visa Credit |
CardType |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/ PaymentCardMetadatas/ PaymentCardMetadata/ CardType |
O |
Example: Credit |
CardFields |
|
|
O |
Returns the list of mandatory payment card details that should be specified when a card is selected for payment in OrderChangeRQ |
FieldName |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/ PaymentCardMetadatas/ PaymentCardMetadata/ CardFields/FieldName |
M |
This is a list and is repeated to return all the mandatory card details |
Mandatory (Attribute) |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/ PaymentCardMetadatas/ PaymentCardMetadata/ CardFields/FieldName/ Mandatory (Attribute) |
M |
Boolean and will always be returned as "True". |
Surcharge |
|
|
O |
Surcharge fee applicable for the payment card |
Amount |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/ PaymentCardMetadatas/ PaymentCardMetadata/ Surcharge/Amount |
M |
Total surcharge amount for all passengers |
Code (Attribute) |
|
SeatAvailabilityRS/Metadata/Other/OtherMetadata/ PaymentCardMetadatas/ PaymentCardMetadata/ Surcharge/Amount/Code (Attribute) |
O |
Currency Code |
Errors |
|
|
M |
Error information |
Error |
|
SeatAvailabilityRS/Errors/Error |
M |
This is a list so more than one error will be returned by repeating Error |
ShortText (Attribute) |
|
SeatAvailabilityRS/Errors/Error/ShortText |
O |
PADIS error code |
Code (Attribute) |
|
SeatAvailabilityRS/Errors/Error/Code |
O |
PADIS error message |
URLs to access this web service
Live URL
https://api.ba.com/selling-distribution/SeatAvailability/V2
Note: If you are operating on the earlier version of our APIs, the endpoint is
[
{_}https://api.ba.com/selling-distribution/SeatAvailability/V1_
]Please note that this version does not support all the latest functionality and it uses IATA Schema 1.1.3
Test URL
|
]Please note that this version does not support all the latest functionality and it uses IATA Schema 1.1.3
Mandatory headers
Sample SOAP NDC Request to access this web service |
Sample SOAP NDC Response
Sample SOAP NDC Response with errors
Sample SOAP Response with errors
Any schema validation error will be returned as SOAP Fault
Frequently Asked Questions
FAQs
Q: Can I change the 24-bit connection key provided by British Airways developer website?
A: No, these keys are issued using a secured algorithm and cannot be modified. However if you feel that your key has been compromised, we can block the existing one and issue a new one for you.
Q: Do I need to advise British Airways of any IP changes?
A: No, the API endpoints are not dependent on your IP and therefore you do not need to let us know of any change on your end.
Q: Can I modify the username used for the Developer website?
A: Yes, you would need to register with a new name, and let your usual BA contact know so that your accesses can be transferred from your previous account to the new one.
Usability Guide
Usage advice
SeatAvailability Service
- SeatAvailability service should be called to get the seat map and the full seat price details.
- The service returns prices in the currency of the agent's country.
- The service returns one seat map per flight on the requested cabin and it returns only the unoccupied seats along with seat display details such as the column details, row start and end position for each column, seat (Aisle seat, Rear facing etc) and non-seat characteristics (Galley, Lavatory etc).
- If emergency exit seat is selected the service assumes that the client has accepted the terms and conditions to sit in an emergency exit seat. Those terms and conditions can be reviewed through the link provided in the API response.
- Once the seat is selected OrderCreate should be called to book the seats along with flights.
- The service returns seat prices taking into account customer's FQTV details and agent's corporate discount code (BACCI code).
- The service returns a warning message, if seat map is not returned for some of the requested flights. Example: Seat map is requested for BA117 and BA1516, but seat map is returned only for BA117 then response will contain warning message saying seat map is not returned for BA1516.
- The service returns BA seating policy and Terms and conditions link in the response
- If only OrderID is specified in the request, the service returns priced seat map(s) for all flights in the booking, if applicable. This is a post-sale behaviour only.
- Along with OrderID client may also request specific flights in the booking – service will return priced seat map(s) only for the requested flights in this case. The flight details specified in the request must match with the details present in the booking otherwise error will be returned. This is a post-sale behaviour only.
- The service checks if the agent requesting the seat map is the one who has created the booking and is accessing the API via the same channel as booking creation. It returns error if the agent details do not match.
- The service will not accept FQTV details in the SeatAvailability RQ post-sale scenario. It returns seat price based on FQTV details already present in the booking. Please note that it is possible to add FQTV details post-sale independently, and call SeatAvailability afterwards.
- If a customer has already purchased a seat then the seat price returned will be a differential amount for each seat category. Example: If a customer has already paid £20 for a general seat then in the response general seat price will be returned as £0.00 ,but for example, Twin seat price will be returned as £10 (Actual cost of a Twin seat is £30, but since the customer has already paid £20 only the differential amount will be returned). This is a post-sale behaviour only.
- The service returns payment options – list of applicable cards that should be used to purchase seats via OrderChange service. Please note that payment options will be returned only when SeatAvailability service is called in post-sale scenario, since the payment options are returned in Flight Price service in booking flow.
- In Post-Sale scenario - Once the seat is selected OrderChange should be called to book or change seats.
- For a held booking, the service returns Seat Map if only free seats are available. This is because paid seats can't be booked once held booking is created.
General
- The service returns prices in exact decimal value based on the currency (e.g. GBP will be returned at 2 decimals, while JPY will be returned at integer level only).
- The service checks if the agent calling the service has the right to create BA bookings. If the agent does not have such authority then the service will not proceed and will return an error.
- The service checks if the requesting Travel Management Company (TMC) is allowed to service the corporate and returns error if it is not allowed.
- The service returns responses in the agent's preferred language. If the agent's preferred language is not supported by BA or the agent's preferred language is not passed in the request then the default language will be used, which is English. Please see section 7 for the languages that are supported by BA.
Appendix 1 –Web Services error responses
SeatAvailability error/ineligibility checks
PADIS Error Code |
PADIS Error Text |
102 |
Unable to process |
304 |
System Temporarily unavailable |
100 |
Seat map not available, request seat at check-in |
200 |
FQTV number not accepted |
129 |
No PNR Match Found |
375 |
Requestor not authorized for this function for this PNR |
467 |
Flight segment not found in carrier's PNR |
208 |
Advance Seat Selection Not Available, Flight Already Departed |
202 |
Advance Seat Selection Not Available for this Carrier |
461 |
Ineligible for Requested Action -Group PNR not allowed |
201 |
Advance Seat Selection Not Available for this Class/Compartment/Zone |
Appendix 2 – Languages supported by BA
BA supports the below 11 languages
Language Code |
Language |
EN |
English |
ES |
Spanish |
JA |
Japanese |
FR |
French |
IT |
Italian |
ZH |
Chinese |
DE |
German |
PT |
Portuguese |
RU |
Russian |
PL |
Polish |
SV |
Swedish |