Kyte API Reference v3.1.8
Welcome to the Kyte API Reference. Before diving deep into the API, we recomment having a look at our integration guide which gives you all the details to get started and explains how to implement common scenarios.
If this is not your first visit, make sure you check out the release notes to see what has changed in the current version.
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
Base URL:
Authentication
- API Key (api_key)
- Parameter Name: x-api-key, in: header.
Shop
Shop Flights
Code samples
POST https://api.live.gokyte.com/api/v3/flights/shop HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"journeys": [
{
"id": "string",
"date": {
"main": "2024-10-20",
"time": "15:30",
"type": "departure",
"flexibilityRange": 2
},
"aircraftPreference": {
"code": "744",
"name": "Boeing 747 jet"
},
"departureAirport": "string",
"arrivalAirport": "string",
"action": "add"
}
],
"exactMatch": true,
"nonStopFlight": true,
"corporateAccount": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"cabinType": "economy",
"flexibility": "lowest",
"fareType": "public",
"passengers": [
{
"age": 21,
"seatRequested": true,
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
]
}
],
"miniFareRule": true,
"splitOffer": true
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/shop',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"journeys": [
{
"id": "string",
"date": {
"main": "2024-10-20",
"time": "15:30",
"type": "departure",
"flexibilityRange": 2
},
"aircraftPreference": {
"code": "744",
"name": "Boeing 747 jet"
},
"departureAirport": "string",
"arrivalAirport": "string",
"action": "add"
}
],
"exactMatch": true,
"nonStopFlight": true,
"corporateAccount": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"cabinType": "economy",
"flexibility": "lowest",
"fareType": "public",
"passengers": [
{
"age": 21,
"seatRequested": true,
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
]
}
],
"miniFareRule": true,
"splitOffer": true
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/shop',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/flights/shop', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/flights/shop',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/flights/shop", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/flights/shop
Queries all available airlines for flights matching the specified parameters. This request will either return a list of matched JourneyLeg
s, FlightSolution
s and Offer
s or a list of errors in case no flights meet the request criteria. Offers match the whole specified itinerary, but they may not always match the requested cabin type (in some cases, some flights in multi-leg journeys can be offered in a lower class if the higher is not available) Exception : Air Canada OfferID's At shop flights the response for Air Canada will have multiple OfferID's, one for each segment that was passed in the shop Flights Request. For example, for a round trip journey, there will be 2 offerId's in the shop flight response and both the offerId's should be passed when calling for offerDetails or making a booking.
Body parameter
{
"journeys": [
{
"id": "string",
"date": {
"main": "2024-10-20",
"time": "15:30",
"type": "departure",
"flexibilityRange": 2
},
"aircraftPreference": {
"code": "744",
"name": "Boeing 747 jet"
},
"departureAirport": "string",
"arrivalAirport": "string",
"action": "add"
}
],
"exactMatch": true,
"nonStopFlight": true,
"corporateAccount": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"cabinType": "economy",
"flexibility": "lowest",
"fareType": "public",
"passengers": [
{
"age": 21,
"seatRequested": true,
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
]
}
],
"miniFareRule": true,
"splitOffer": true
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
airlines | query | array[string] | false | List of airlines to query for flights. If an alliance is specified, a union of these airlines and the ones in the alliance will be constructed |
alliance | query | string | false | Limit search to this alliance only. Any individual airlines specified will be added to the query as well |
body | body | ShopFlightsRequest | false | none |
Enumerated Values
Parameter | Value |
---|---|
alliance | oneworld |
alliance | star |
alliance | skyteam |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
},
"offers": {
"OfferId": {
"id": "string",
"flightSolutions": [
"string"
],
"singleJourneyLeg": true,
"owner": "string",
"expiration": "2020-08-19T08:20:00.000Z",
"priceGuaranteeExpiration": "2020-08-19T08:20:00.000Z",
"totalPrice": 11000,
"currency": {
"code": "GBP",
"decimals": 2
},
"passengers": [
{
"id": "string",
"type": "adult",
"price": 11000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
]
}
],
"fares": {
"FareId": {
"id": "string",
"name": "Euro Traveller",
"segments": [
"BA1234"
],
"passengers": [
"SH1"
],
"description": [
"string"
],
"fareClass": "Y",
"fareBasisCode": "YV3KO/Y",
"cabinType": "economy",
"fareType": [
"flexible",
"negociated"
]
}
},
"servicingFees": [
{
"id": "string",
"type": "cancel",
"amount": 100,
"segments": [
"BA123"
],
"remarks": [
"There are no refunds except for any government & airport taxes."
]
}
]
}
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful | ShopFlightResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Shop Bundles
Code samples
POST https://api.live.gokyte.com/api/v3/flights/shop/bundles HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"offerIds": [
"string"
]
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/shop/bundles',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"offerIds": [
"string"
]
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/shop/bundles',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/flights/shop/bundles', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/flights/shop/bundles',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/flights/shop/bundles", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/flights/shop/bundles
Shop bundle queries all available bundles for selected flights matching the cabin and fare type. This request will return a list of bundles offered by the airline. The response will include a new offerId that should be used to proceed with the remaining steps to complete the booking. Along with the offerID, the JourneyLegs and price breakdown will also be returned. The offer will have bundles offered by the airlines, in addition ancillaries call can be used to shop more ancillaries.
Body parameter
{
"offerIds": [
"string"
]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | shopBundlesRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"offers": {
"OfferId": {
"id": "string",
"owner": "string",
"expiration": "2020-08-19T08:20:00.000Z",
"priceGuaranteeExpiration": "2020-08-19T08:20:00.000Z",
"totalPrice": 11000,
"currency": {
"code": "GBP",
"decimals": 2
},
"passengers": [
{
"id": "string",
"type": "adult",
"price": 11000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
]
}
],
"fares": {
"FareId": {
"id": "string",
"name": "Euro Traveller",
"segments": [
"BA1234"
],
"passengers": [
"SH1"
],
"description": [
"string"
],
"fareClass": "Y",
"fareBasisCode": "YV3KO/Y",
"cabinType": "economy",
"fareType": [
"flexible",
"negociated"
]
}
}
}
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful | ShopBundleResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Offer Details
Code samples
POST https://api.live.gokyte.com/api/v3/flights/shop/offer-details HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"offerIds": [
"string"
],
"corporateAccounts": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"lastName": "Doe"
}
]
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/shop/offer-details',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"offerIds": [
"string"
],
"corporateAccounts": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"lastName": "Doe"
}
]
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/shop/offer-details',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/flights/shop/offer-details', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/flights/shop/offer-details',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/flights/shop/offer-details", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/flights/shop/offer-details
Requests details for a list of offers, using Ids received from the ShopFlights call. Exception : Air Canada OfferIDs At shop flights the response for Air Canada will have multiple OfferIDs, one for each segment that was passed in the shop Flights Request. For example, for a round trip journey, there will be 2 offerIds in the shop flight response and both the offerIds should be passed when calling for offerDetails or making a booking.
Body parameter
{
"offerIds": [
"string"
],
"corporateAccounts": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"lastName": "Doe"
}
]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | OfferDetailsRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"details": {
"OfferId": {
"id": "string",
"disclosures": [
{
"id": "Disclosure1",
"passengers": [
"SH1"
],
"segments": [
"BA1234"
],
"disclosures": [
{
"text": "string",
"mediaLink": "string"
}
]
}
],
"baggageAllowance": [
{
"type": "cabin",
"description": "string",
"quantity": 1,
"passengers": [
"SH1"
],
"segments": [
"BA1234"
],
"size": [
"10x10x20in",
"22x22x44cm"
],
"weight": [
"23kg",
"12lbs"
]
}
],
"servicingFees": [
{
"id": "string",
"type": "cancel",
"amount": 100,
"segments": [
"BA123"
],
"remarks": [
"There are no refunds except for any government & airport taxes."
]
}
],
"fares": {
"FareId": {
"id": "string",
"name": "Euro Traveller",
"segments": [
"BA1234"
],
"passengers": [
"SH1"
],
"description": [
"string"
],
"fareClass": "Y",
"fareBasisCode": "YV3KO/Y",
"cabinType": "economy",
"fareType": [
"flexible",
"negociated"
]
}
},
"amount": 0,
"currency": {
"code": "GBP",
"decimals": 2
},
"expiration": "2020-08-19T08:20:00.000Z"
}
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful | OfferDetailsResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Book
Book Flight
Code samples
POST https://api.live.gokyte.com/api/v3/flights/book/{offerId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"offerIds": [
"string"
],
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisData": {
"nationality": "GBR",
"countryOfResidence": "GBR",
"travelDocType": "passport",
"travelDocNumber": "1234566",
"travelDocIssueDate": "2015-10-01",
"travelDocExpiry": "2022-09-30",
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
}
}
}
],
"languageCode": "en-GB"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/book/{offerId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"offerIds": [
"string"
],
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisData": {
"nationality": "GBR",
"countryOfResidence": "GBR",
"travelDocType": "passport",
"travelDocNumber": "1234566",
"travelDocIssueDate": "2015-10-01",
"travelDocExpiry": "2022-09-30",
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
}
}
}
],
"languageCode": "en-GB"
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/book/{offerId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/flights/book/{offerId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/flights/book/{offerId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/flights/book/{offerId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/flights/book/{offerId}
Book a flight using an offer received from a Shop Flights call.
NOTE: In case the offer has recently expired, Kyte will try to get a fresh one with the same specifications, but there is no guarantee on price availability. Look in the warnings
list to see if price has changed in the meantime
Body parameter
{
"offerIds": [
"string"
],
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisData": {
"nationality": "GBR",
"countryOfResidence": "GBR",
"travelDocType": "passport",
"travelDocNumber": "1234566",
"travelDocIssueDate": "2015-10-01",
"travelDocExpiry": "2022-09-30",
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
}
}
}
],
"languageCode": "en-GB"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | BookFlightRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Describes a booking. | BookFlightResponse |
204 | No Content | No Content | DefaultResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Confirm Held Booking
Code samples
POST https://api.live.gokyte.com/api/v3/flights/book/commit/{bookingId} HTTP/1.1
Host: api.live.gokyte.com
Accept: application/json
const headers = {
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/book/commit/{bookingId}',
{
method: 'POST',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/book/commit/{bookingId}',
{
method: 'POST',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/flights/book/commit/{bookingId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/flights/book/commit/{bookingId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/flights/book/commit/{bookingId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/flights/book/commit/{bookingId}
Confirm the booking without payment. Held booking helps to confirm a PNR with the airline, without having to make a payment. It is however subject to change as per airline discretion. This call should be made after the book flights API call. The ticket status of the booking will be “heldBooking”
Example responses
default Response
"string"
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
default | Default | Successful | string |
Retrieve Booking
Code samples
POST https://api.live.gokyte.com/api/v3/flights/book/retrieve/{bookingId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"requestedInfo": [
"PNR",
"ticketInfo",
"itinerary"
],
"forceRefresh": true
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/book/retrieve/{bookingId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"requestedInfo": [
"PNR",
"ticketInfo",
"itinerary"
],
"forceRefresh": true
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/book/retrieve/{bookingId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/flights/book/retrieve/{bookingId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/flights/book/retrieve/{bookingId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/flights/book/retrieve/{bookingId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/flights/book/retrieve/{bookingId}
Use this call to retrieve all the details of a booking.
{bookingId}
- the unique booking identifier received after a successful Book Flight
Body parameter
{
"requestedInfo": [
"PNR",
"ticketInfo",
"itinerary"
],
"forceRefresh": true
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | RetrieveBookingRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"booking": {
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
],
"bookingRef": [
{
"owner": "BA",
"reference": "JHA78B"
}
],
"ticketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"itinerary": {
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
}
},
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisStatus": "missing"
}
],
"ticketDetails": [
{
"type": "eTicket",
"number": "18485748383",
"passengerId": "SH1"
}
],
"pricingBreakdown": [
{
"id": "BAG1",
"category": "fare",
"type": "baseFare",
"price": 0,
"breakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"passengerId": "SH1",
"segments": "BA0440-AMS-LHR",
"name": "Meal"
}
],
"paymentDetails": [
{
"totalAmount": 11000,
"date": "2021-01-10",
"authorization": {
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
}
]
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful | RetrieveBookingResponse |
204 | No Content | No Content | DefaultResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Ancillaries
Shop Ancillaries
Code samples
POST https://api.live.gokyte.com/api/v3/flights/shop/ancillaries/{bookingId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"offerIds": [
"string"
],
"corporateAccounts": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"lastName": "Doe"
}
],
"requestedTypes": [
"bag",
"seat"
]
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/shop/ancillaries/{bookingId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"offerIds": [
"string"
],
"corporateAccounts": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"lastName": "Doe"
}
],
"requestedTypes": [
"bag",
"seat"
]
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/shop/ancillaries/{bookingId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/flights/shop/ancillaries/{bookingId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/flights/shop/ancillaries/{bookingId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/flights/shop/ancillaries/{bookingId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/flights/shop/ancillaries/{bookingId}
Requests available ancillaries for a particular booking.
Depending on use case (UI/UX design), you can spread ancillary retrieval over multiple calls in order to make each one quicker. However, if you need all of them at once, simply add all needed types to the requestedTypes
array in the body and let Kyte handle optimizations.
The Shop ancillaries call using a bookingId can be used to shop various ancillaries post a ticket has been issued. It is important to retrieve the booking before making any changes to a booking. Besides seats and bags, meals and disabilityAssistance can also be added for airlines that support these services in their post ticketing booking flow. To add a service, add the pax Id, segments and the service Id for each segment as required along with actionType “add” {bookingId}
- a booking id as received from Kyte after a successful booking
Body parameter
{
"offerIds": [
"string"
],
"corporateAccounts": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"lastName": "Doe"
}
],
"requestedTypes": [
"bag",
"seat"
]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ShopAncillariesRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"bags": {
"BagAncillaryId": {
"id": "BAG1",
"name": "string",
"description": "string",
"characteristics": {
"size": [
"10x10x20in",
"22x22x44cm"
],
"weight": [
"23kg",
"12lbs"
]
},
"mediaLinks": [
"string"
],
"price": 0,
"originalPrice": 1300,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"purchaseLimitations": {
"purchaseQuantity": 1,
"requiredOnAllSegments": true,
"incompatibleWith": [
"BAG2, BAG3"
],
"combineWith": [
"BAG4"
]
},
"passengers": [
"SH1"
],
"segments": [
"BA0112-LHR-AMS"
]
}
},
"sportsEquipment": {
"SportsEquipmentId": {
"id": "BAG1",
"name": "string",
"description": "string",
"characteristics": {
"size": [
"10x10x20in",
"22x22x44cm"
],
"weight": [
"23kg",
"12lbs"
]
},
"mediaLinks": [
"string"
],
"price": 0,
"originalPrice": 1300,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"purchaseLimitations": {
"purchaseQuantity": 1,
"requiredOnAllSegments": true,
"incompatibleWith": [
"BAG2, BAG3"
],
"combineWith": [
"BAG4"
]
},
"passengers": [
"SH1"
],
"segments": [
"BA0112-LHR-AMS"
]
}
},
"meals": {
"MealAncillaryId": {
"id": "MEAL1",
"name": "Standard Vegetarian Meal",
"description": "string",
"price": 1000,
"originalPrice": 1000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"mediaLinks": [
"string"
],
"passengers": [
"SH1"
],
"segments": "BA0112-LHR-AMS"
}
},
"seatMap": {
"FlightSegmentId": {
"seatCategories": {
"SeatCategoryId": {
"id": "FrontRow",
"name": "Front row seats",
"price": 1300,
"originalPrice": 1300,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"description": "string",
"mediaLinks": [
"string"
]
}
},
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"cabins": [
{
"floor": 1,
"cabinConfiguration": [
"A",
"B",
"C",
null,
"D",
"E",
"F",
"G",
null,
"H",
"I",
"J"
],
"metaInformation": {
"wingPosition": {
"start": 10,
"end": 11
},
"emergencyExits": [
{
"row": 12,
"position": "left",
"relativeToRow": "behind"
}
],
"exits": [
{
"row": 12,
"position": "left",
"relativeToRow": "behind"
}
],
"bulkheads": [
{
"start": 10,
"end": 11
}
],
"auxiliaryElements": {
"ElementPosition": "lavatory"
}
},
"rows": {
"RowNumber": [
{
"number": "10A",
"position": "Window",
"category": "FrontRow",
"available": true,
"isRestrictedFor": "children",
"isEmergencyExit": true,
"isFacingBulkhead": false,
"facing": "front",
"type": "reclined",
"limitations": "armrestTable"
}
]
}
}
]
}
},
"disabilityAssistance": {
"DisabilityAssistanceAncillaryId": {
"id": "WCHR",
"name": "Wheelchair",
"description": "string",
"price": 1000,
"originalPrice": 1000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"mediaLinks": [
"string"
],
"passengers": [
"SH1"
],
"segments": "BA0112-LHR-AMS"
}
},
"services": {
"ServiceId": {
"id": "SERVICE_1",
"name": "string",
"description": "string",
"mediaLinks": [
"string"
],
"price": 0,
"originalPrice": 0,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"purchaseLimitations": {
"purchaseQuantity": 1,
"requiredOnAllSegments": true,
"incompatibleWith": [
"BAG2, BAG3"
],
"combineWith": [
"BAG4"
]
},
"passengers": [
"SH1"
],
"segments": [
"BA0112-LHR-AMS"
]
}
},
"loungeAccess": {
"LoungeAccessId": {
"id": "SERVICE_1",
"name": "string",
"description": "string",
"mediaLinks": [
"string"
],
"price": 0,
"originalPrice": 0,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"purchaseLimitations": {
"purchaseQuantity": 1,
"requiredOnAllSegments": true,
"incompatibleWith": [
"BAG2, BAG3"
],
"combineWith": [
"BAG4"
]
},
"passengers": [
"SH1"
],
"segments": [
"BA0112-LHR-AMS"
]
}
},
"currency": {
"code": "GBP",
"decimals": 2
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful | ShopAncillariesResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Confirm Ancillaries
Code samples
POST https://api.live.gokyte.com/api/v3/booking/ancillary/confirm/{bookingId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/ancillary/confirm/{bookingId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/ancillary/confirm/{bookingId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/booking/ancillary/confirm/{bookingId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/booking/ancillary/confirm/{bookingId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/booking/ancillary/confirm/{bookingId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/booking/ancillary/confirm/{bookingId}
Confirm the ancillary changes previously added or removed using the bookingId post a ticket has been issued.
Body parameter
{
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ConfirmChangeRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"status": "ok",
"bookings": [
{
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
],
"bookingRef": [
{
"owner": "BA",
"reference": "JHA78B"
}
],
"ticketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"itinerary": {
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
}
},
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisStatus": "missing"
}
],
"ticketDetails": [
{
"type": "eTicket",
"number": "18485748383",
"passengerId": "SH1"
}
],
"pricingBreakdown": [
{
"id": "BAG1",
"category": "fare",
"type": "baseFare",
"price": 0,
"breakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"passengerId": "SH1",
"segments": "BA0440-AMS-LHR",
"name": "Meal"
}
],
"paymentDetails": [
{
"totalAmount": 11000,
"date": "2021-01-10",
"authorization": {
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
}
]
}
],
"vouchers": [
{
"number": "BAUM25AG",
"owner": "BA",
"value": {
"amount": 1000,
"currency": {
"code": "GBP",
"decimals": 2
}
},
"validUntil": "2020-08-19T08:20:00.000Z"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The result of executing a previously estimated change or committing ancillary changes on a booking. | ConfirmChangeResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Book Ancillaries
Code samples
POST https://api.live.gokyte.com/api/v3/flights/book/ancillaries/{bookingId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"passengers": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"action": "remove",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
]
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/book/ancillaries/{bookingId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"passengers": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"action": "remove",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
]
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/flights/book/ancillaries/{bookingId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/flights/book/ancillaries/{bookingId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/flights/book/ancillaries/{bookingId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/flights/book/ancillaries/{bookingId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/flights/book/ancillaries/{bookingId}
Use this call to add or remove ancillaries to an existing booking (either before or after payment/ticketing).
{bookingId}
- the unique booking identifier received after a successful Book Flight
or Retrieve Booking
call It is important to retrieve the booking before making any changes to a booking. Besides seats and bags, meals and disabilityAssistance can also be added for airlines that support these services in their post ticketing booking flow. To add a service, add the pax Id, segments and the service Id for each segment as required along with actionType “add”. To change an existing added ancillary, it is important to remove a service that was previously added. To remove an ancillary service, add the pax Id, segments and the service Id for each segment as required along with actionType “remove” in the book ancillaries API call. To add disability assistance or meal, pass the requestedTypes as “disabilityAssistance” or “meal” using the shopAncillareis call with the bookingId, after a booking is paid and ticketed. Based on airlines, the response will show the “disabilityAssistance Id” and or a “meal Id” which should be passed when calling bookAncillaries.
Body parameter
{
"passengers": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"action": "remove",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | BookAncillariesRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Describes a booking. | BookFlightResponse |
204 | No Content | No Content | DefaultResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Payments
Payment
Code samples
POST https://api.live.gokyte.com/api/v3/payment/{bookingId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/payment/{bookingId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/payment/{bookingId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/payment/{bookingId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/payment/{bookingId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/payment/{bookingId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/payment/{bookingId}
Send a payment request for a booking using one of the approved payment methods
{bookingId}
- id of a booking received after a successful BookFlights
or RetrieveBooking
call
NOTE: If card payment is chosen and card is enrolled in 3DSV2, Once the paying user has completed authentication, this call must be submitted using the authenticate data.
Body parameter
{
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | PaymentRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"status": "challenge3DS",
"paymentChallengeData": {
"string": "string"
},
"paymentChallengeForm": "string",
"paymentRef": "akumd492993300"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful | PaymentResponse |
204 | No Content | No Content | DefaultResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Cancel
Confirm Cancellation
Code samples
POST https://api.live.gokyte.com/api/v3/booking/change/confirm/{estimationId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/change/confirm/{estimationId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/change/confirm/{estimationId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/booking/change/confirm/{estimationId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/booking/change/confirm/{estimationId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/booking/change/confirm/{estimationId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/booking/change/confirm/{estimationId}
Confirm the change(s) previously estimated with the supplied estimationId
Body parameter
{
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ConfirmChangeRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"status": "ok",
"bookings": [
{
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
],
"bookingRef": [
{
"owner": "BA",
"reference": "JHA78B"
}
],
"ticketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"itinerary": {
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
}
},
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisStatus": "missing"
}
],
"ticketDetails": [
{
"type": "eTicket",
"number": "18485748383",
"passengerId": "SH1"
}
],
"pricingBreakdown": [
{
"id": "BAG1",
"category": "fare",
"type": "baseFare",
"price": 0,
"breakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"passengerId": "SH1",
"segments": "BA0440-AMS-LHR",
"name": "Meal"
}
],
"paymentDetails": [
{
"totalAmount": 11000,
"date": "2021-01-10",
"authorization": {
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
}
]
}
],
"vouchers": [
{
"number": "BAUM25AG",
"owner": "BA",
"value": {
"amount": 1000,
"currency": {
"code": "GBP",
"decimals": 2
}
},
"validUntil": "2020-08-19T08:20:00.000Z"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The result of executing a previously estimated change or committing ancillary changes on a booking. | ConfirmChangeResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Estimate Cancellation
Code samples
POST https://api.live.gokyte.com/api/v3/booking/estimate/cancel/{bookingId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"retainItinerary": false,
"refundTo": "originalFoP",
"pointsRecipient": {
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"lastName": "Doe"
}
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/estimate/cancel/{bookingId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"retainItinerary": false,
"refundTo": "originalFoP",
"pointsRecipient": {
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"lastName": "Doe"
}
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/estimate/cancel/{bookingId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/booking/estimate/cancel/{bookingId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/booking/estimate/cancel/{bookingId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/booking/estimate/cancel/{bookingId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/booking/estimate/cancel/{bookingId}
Requests an estimate from the airline for cancelling the specified booking. The user can choose where to receive the refund, if any, as well as having the option to retain the itinerary. If the request is successful, the refunded amount will be returned, as well as any fees applied. Cancelling can then be performed by confirming this through the Confirm Estimation
endpoint. Retrieving the booking before using any post ticketing API is mandatory. Please ensure you retrieve the booking before calling for estimated cancellations.The ForceRefresh Values should be set to “true”.
Body parameter
{
"retainItinerary": false,
"refundTo": "originalFoP",
"pointsRecipient": {
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"lastName": "Doe"
}
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | EstimateCancelRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"status": "ok",
"estimationId": "8kjlka90alauAKjdfkJHAq",
"amount": 6420,
"feeApplied": 100,
"currency": {
"code": "GBP",
"decimals": 2
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Result of an estimation request for cancelling a booking. | EstimateCancelResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Reshop
Flights / Upgrade Cabin
Code samples
POST https://api.live.gokyte.com/api/v3/booking/reshop/{bookingId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"journeys": [
{
"id": "string",
"date": {
"main": "2024-10-20",
"time": "15:30",
"type": "departure",
"flexibilityRange": 2
},
"aircraftPreference": {
"code": "744",
"name": "Boeing 747 jet"
},
"departureAirport": "string",
"arrivalAirport": "string",
"action": "add"
}
],
"cabinType": "economy"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/reshop/{bookingId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"journeys": [
{
"id": "string",
"date": {
"main": "2024-10-20",
"time": "15:30",
"type": "departure",
"flexibilityRange": 2
},
"aircraftPreference": {
"code": "744",
"name": "Boeing 747 jet"
},
"departureAirport": "string",
"arrivalAirport": "string",
"action": "add"
}
],
"cabinType": "economy"
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/reshop/{bookingId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/booking/reshop/{bookingId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/booking/reshop/{bookingId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/booking/reshop/{bookingId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/booking/reshop/{bookingId}
OrderReshop for a ticketed confirmed booking to change date/time, change route (supported OrderReshop V3 onward) or upgrade cabin of their confirmed flight. The service checks the eligibility of existing booking for change/upgrade and then return the offers for the changed date, route or upgrade cabin. This service can only be used on existing bookings made using the Shop and Order APIs, and may only be accessed by the agent who created the booking. If the agent went through a 3rd party provider to create the initial booking (GDS or service provider), it is also mandatory to go through this same provider in order to access the booking. If the above conditions are not met, the service will return an error and prevent access. This is the first call to get offers in case the client wants to change the date/time, change the route or cabin of their confirmed booking. The client can then choose any one offer and pass the details to RepriceOfferDetails to receive the offer for making the change. ReshopConfirm is the final call that should be made with the selected offer to confirm the change/upgrade.
Body parameter
{
"journeys": [
{
"id": "string",
"date": {
"main": "2024-10-20",
"time": "15:30",
"type": "departure",
"flexibilityRange": 2
},
"aircraftPreference": {
"code": "744",
"name": "Boeing 747 jet"
},
"departureAirport": "string",
"arrivalAirport": "string",
"action": "add"
}
],
"cabinType": "economy"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ReshopFlightsRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
},
"offers": {
"OfferId": {
"id": "string",
"flightSolutions": [
"string"
],
"singleJourneyLeg": true,
"owner": "string",
"expiration": "2020-08-19T08:20:00.000Z",
"priceGuaranteeExpiration": "2020-08-19T08:20:00.000Z",
"totalPrice": 11000,
"currency": {
"code": "GBP",
"decimals": 2
},
"passengers": [
{
"id": "string",
"type": "adult",
"price": 11000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
]
}
],
"fares": {
"FareId": {
"id": "string",
"name": "Euro Traveller",
"segments": [
"BA1234"
],
"passengers": [
"SH1"
],
"description": [
"string"
],
"fareClass": "Y",
"fareBasisCode": "YV3KO/Y",
"cabinType": "economy",
"fareType": [
"flexible",
"negociated"
]
}
},
"servicingFees": [
{
"id": "string",
"type": "cancel",
"amount": 100,
"segments": [
"BA123"
],
"remarks": [
"There are no refunds except for any government & airport taxes."
]
}
]
}
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful | ReshopFlightResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Accept Involuntary Change
Code samples
POST https://api.live.gokyte.com/api/v3/booking/inv-change/accept/{bookingId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/inv-change/accept/{bookingId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/inv-change/accept/{bookingId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/booking/inv-change/accept/{bookingId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/booking/inv-change/accept/{bookingId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/booking/inv-change/accept/{bookingId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/booking/inv-change/accept/{bookingId}
Our OrderChange Notification API provides the option to accept an involuntary change. If a passenger does not want to accept the change made by the airline, Reshop Flights can be used to look for alternate options.
Body parameter
{
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ConfirmChangeRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"status": "ok",
"bookings": [
{
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
],
"bookingRef": [
{
"owner": "BA",
"reference": "JHA78B"
}
],
"ticketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"itinerary": {
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
}
},
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisStatus": "missing"
}
],
"ticketDetails": [
{
"type": "eTicket",
"number": "18485748383",
"passengerId": "SH1"
}
],
"pricingBreakdown": [
{
"id": "BAG1",
"category": "fare",
"type": "baseFare",
"price": 0,
"breakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"passengerId": "SH1",
"segments": "BA0440-AMS-LHR",
"name": "Meal"
}
],
"paymentDetails": [
{
"totalAmount": 11000,
"date": "2021-01-10",
"authorization": {
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
}
]
}
],
"vouchers": [
{
"number": "BAUM25AG",
"owner": "BA",
"value": {
"amount": 1000,
"currency": {
"code": "GBP",
"decimals": 2
}
},
"validUntil": "2020-08-19T08:20:00.000Z"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The result of executing a previously estimated change or committing ancillary changes on a booking. | ConfirmChangeResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Confirm Change
Code samples
POST https://api.live.gokyte.com/api/v3/booking/reshop/confirm/{reshopOfferId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/reshop/confirm/{reshopOfferId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/reshop/confirm/{reshopOfferId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/booking/reshop/confirm/{reshopOfferId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/booking/reshop/confirm/{reshopOfferId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/booking/reshop/confirm/{reshopOfferId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/booking/reshop/confirm/{reshopOfferId}
Send a payment request for a changed booking using one of the approved payment methods
{ReshopOfferId}
- id of a selected reshop offer received after a successful Reprice
call
NOTE: If card payment is chosen and card is enrolled in 3DSV2, Once the paying user has completed authentication, this call must be submitted using the authenticate data. This is the final call that should be made to confirm the change of Booking. This call is similar to the payment API, however, the ReshopofferId's needs to be passed along with the payment amount and the credit card details to confirm the change.
Body parameter
{
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ConfirmChangeRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"status": "ok",
"bookings": [
{
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
],
"bookingRef": [
{
"owner": "BA",
"reference": "JHA78B"
}
],
"ticketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"itinerary": {
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
}
},
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisStatus": "missing"
}
],
"ticketDetails": [
{
"type": "eTicket",
"number": "18485748383",
"passengerId": "SH1"
}
],
"pricingBreakdown": [
{
"id": "BAG1",
"category": "fare",
"type": "baseFare",
"price": 0,
"breakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"passengerId": "SH1",
"segments": "BA0440-AMS-LHR",
"name": "Meal"
}
],
"paymentDetails": [
{
"totalAmount": 11000,
"date": "2021-01-10",
"authorization": {
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
}
]
}
],
"vouchers": [
{
"number": "BAUM25AG",
"owner": "BA",
"value": {
"amount": 1000,
"currency": {
"code": "GBP",
"decimals": 2
}
},
"validUntil": "2020-08-19T08:20:00.000Z"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The result of executing a previously estimated change or committing ancillary changes on a booking. | ConfirmChangeResponse |
204 | No Content | No Content | DefaultResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Reprice
Code samples
POST https://api.live.gokyte.com/api/v3/booking/reshop/offer-details/{bookingId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"offerIds": [
"string"
]
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/reshop/offer-details/{bookingId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"offerIds": [
"string"
]
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/reshop/offer-details/{bookingId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/booking/reshop/offer-details/{bookingId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/booking/reshop/offer-details/{bookingId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/booking/reshop/offer-details/{bookingId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/booking/reshop/offer-details/{bookingId}
This is the second call in the booking change process to get more information for one of the offerId's in case the user wants to change the date/time, change the route or cabin of their confirmed booking. It is important to choose one offerId from the ReshopFlights response and pass the details in this call to reprice the offer. The response will have an amount under “reshopDue”, which is the amount payable in order to confirm the change of booking.
Body parameter
{
"offerIds": [
"string"
]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | RepriceOfferDetailsRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"details": {
"OfferId": {
"id": "string",
"reshopDue": 6420,
"originalAmount": 100,
"newAmount": 100,
"penaltyAmount": 100,
"currency": {
"code": "GBP",
"decimals": 2
},
"baggageAllowance": [
{
"type": "cabin",
"description": "string",
"quantity": 1,
"passengers": [
"SH1"
],
"segments": [
"BA1234"
],
"size": [
"10x10x20in",
"22x22x44cm"
],
"weight": [
"23kg",
"12lbs"
]
}
],
"servicingFees": [
{
"id": "string",
"type": "cancel",
"amount": 100,
"segments": [
"BA123"
],
"remarks": [
"There are no refunds except for any government & airport taxes."
]
}
]
}
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful | RepriceOfferDetailsResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Servicing
Split PNR
Code samples
POST https://api.live.gokyte.com/api/v3/booking/split/{bookingId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"passengerIds": "T1,T2"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/split/{bookingId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"passengerIds": "T1,T2"
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/split/{bookingId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/booking/split/{bookingId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/booking/split/{bookingId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/booking/split/{bookingId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/booking/split/{bookingId}
Requests a split booking from the airline A PNR with multiple passengers in a single booking can be split into different PNR's. Using the relevant booking ID, pass the paxId's of the passengers that need to be split into a new booking. If there are children or infants in a booking, they should be added with at least 1 adult passenger while splitting a booking. In the response of the splitBooking request, a second bookingId is generated for the passengers that were split along with a new PNR. Both bookingID's must be stored and used as required in order to make further changes to the booking or adding any additional services.
Body parameter
{
"passengerIds": "T1,T2"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | SplitBookingRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"status": "ok",
"bookings": [
{
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
],
"bookingRef": [
{
"owner": "BA",
"reference": "JHA78B"
}
],
"ticketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"itinerary": {
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
}
},
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisStatus": "missing"
}
],
"ticketDetails": [
{
"type": "eTicket",
"number": "18485748383",
"passengerId": "SH1"
}
],
"pricingBreakdown": [
{
"id": "BAG1",
"category": "fare",
"type": "baseFare",
"price": 0,
"breakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"passengerId": "SH1",
"segments": "BA0440-AMS-LHR",
"name": "Meal"
}
],
"paymentDetails": [
{
"totalAmount": 11000,
"date": "2021-01-10",
"authorization": {
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
}
]
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The result of executing a split booking. | SplitBookingResponse |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Update Passenger Details
Code samples
POST https://api.live.gokyte.com/api/v3/booking/passenger/update/{bookingId} HTTP/1.1
Host: api.live.gokyte.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisData": {
"nationality": "GBR",
"countryOfResidence": "GBR",
"travelDocType": "passport",
"travelDocNumber": "1234566",
"travelDocIssueDate": "2015-10-01",
"travelDocExpiry": "2022-09-30",
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
}
}
}
]
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/passenger/update/{bookingId}',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
const fetch = require('node-fetch');
const inputBody = {
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisData": {
"nationality": "GBR",
"countryOfResidence": "GBR",
"travelDocType": "passport",
"travelDocNumber": "1234566",
"travelDocIssueDate": "2015-10-01",
"travelDocExpiry": "2022-09-30",
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
}
}
}
]
};
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'X-Api-Key'
};
fetch('https://api.live.gokyte.com/api/v3/booking/passenger/update/{bookingId}',
{
method: 'POST',
body: JSON.stringify(inputBody),
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'X-Api-Key'
}
r = requests.post('https://api.live.gokyte.com/api/v3/booking/passenger/update/{bookingId}', headers = headers)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'x-api-key' => 'X-Api-Key'
}
result = RestClient.post 'https://api.live.gokyte.com/api/v3/booking/passenger/update/{bookingId}',
params: {
}, headers: headers
p JSON.parse(result)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"x-api-key": []string{"X-Api-Key"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.live.gokyte.com/api/v3/booking/passenger/update/{bookingId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /api/v3/booking/passenger/update/{bookingId}
Requests an update to passenger details in the booking
Body parameter
{
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisData": {
"nationality": "GBR",
"countryOfResidence": "GBR",
"travelDocType": "passport",
"travelDocNumber": "1234566",
"travelDocIssueDate": "2015-10-01",
"travelDocExpiry": "2022-09-30",
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
}
}
}
]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | PassengerServicingRequest | false | none |
Example responses
200 Response
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"status": "ok",
"booking": {
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
],
"bookingRef": [
{
"owner": "BA",
"reference": "JHA78B"
}
],
"ticketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"itinerary": {
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
}
},
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisStatus": "missing"
}
],
"ticketDetails": [
{
"type": "eTicket",
"number": "18485748383",
"passengerId": "SH1"
}
],
"pricingBreakdown": [
{
"id": "BAG1",
"category": "fare",
"type": "baseFare",
"price": 0,
"breakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"passengerId": "SH1",
"segments": "BA0440-AMS-LHR",
"name": "Meal"
}
],
"paymentDetails": [
{
"totalAmount": 11000,
"date": "2021-01-10",
"authorization": {
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
}
]
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | The result of updating passenger details in a booking | PassengerServicingUpdate |
400 | Bad Request | Bad Request | DefaultResponse |
401 | Unauthorized | Unauthorized | DefaultResponse |
403 | Forbidden | Forbidden | DefaultResponse |
500 | Internal Server Error | Internal Server Error | DefaultResponse |
Schemas
LoyaltyProgramAccount
{
"airlineCode": "BA",
"number": "JH9992A"
}
Describes a Frequent Flyer or Corporate account for a specific airline.
Properties
Name | Type | Required | Description |
---|---|---|---|
airlineCode | string | true | Two letter IATA airline code used to identify the loyalty program |
number | string | true | Actual loyalty program account number |
PhoneNumber
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
Describes a phone number
Properties
Name | Type | Required | Description |
---|---|---|---|
countryCode | string | true | Country dialing code for this phone number |
number | string | true | Actual phone number as dialed locally |
type | string | false | Type of phone number. If omitted, this will be considered Mobile |
Enumerated Values
type: Home | Mobile | Emergency | Office
ContactInformation
{
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
Contact information for this passenger. At least one (lead) passenger must provide contact information
Properties
Name | Type | Required | Description |
---|---|---|---|
string | false | Contact e-mail. This will be used by the airline for official announced regarding flights |
|
phone | [PhoneNumber] | true | List of contact phone numbers for a passenger or a payer. |
Address
{
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
}
Address of stay for the first night in the US.
Properties
Name | Type | Required | Description |
---|---|---|---|
addressLines | [string] | true | Street, number, apartment building, apartment info. Use multiple entries in the array if UI has multiple address lines. Limited to 3 entries. |
city | string | true | Address city |
postalCode | string | true | Postal code for this address |
countryCode | string | true | ISO Country code for this address |
APISData
{
"nationality": "GBR",
"countryOfResidence": "GBR",
"travelDocType": "passport",
"travelDocNumber": "1234566",
"travelDocIssueDate": "2015-10-01",
"travelDocExpiry": "2022-09-30",
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
}
}
Describes APIS (Advance Passenger Information System) data for one passenger.
Properties
Name | Type | Required | Description |
---|---|---|---|
nationality | string | true | Country code of passenger's nationality (issuer of Travel Document should be filled in this field). Uses 3 letter code format |
countryOfResidence | string | false | Passenger's current country of residence. Uses 3 letter code format |
travelDocType | string | true | Type of travel document used |
travelDocNumber | string | true | Travel Document number |
travelDocIssueDate | string | false | Issue date of your travel document, if applicable |
travelDocExpiry | string | true | Date of expiration for your travel document |
address | Address | false | Address of stay for the first night in the US. |
Enumerated Values
travelDocType: passport | localId
CompletePassenger
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisData": {
"nationality": "GBR",
"countryOfResidence": "GBR",
"travelDocType": "passport",
"travelDocNumber": "1234566",
"travelDocIssueDate": "2015-10-01",
"travelDocExpiry": "2022-09-30",
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
}
}
}
Describes a passenger with all the data necessary for a booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this passenger. This will be supplied by Kyte in the ShopFlightsResponse |
frequentFlyer | [LoyaltyProgramAccount] | false | List of frequent flyer (loyalty) account numbers. These will be automatically matched to the correct airline (if any) and passed on to benefit from available perks and offers. |
firstName | string | true | Passenger's first (given) name |
middleName | string | false | Passenger's middle name, if any. |
lastName | string | true | Passenger's last (family) name |
dateOfBirth | string | false | Date of birth for this passenger. Mandatory for infants and passengers travelling on APIS routes |
gender | string | true | Passenger's gender |
title | string | true | Passenger's title |
contactInformation | ContactInformation | false | Contact information for this passenger. At least one (lead) passenger must provide contact information |
apisData | APISData | false | Describes APIS (Advance Passenger Information System) data for one passenger. |
Enumerated Values
gender: male | female | other | undisclosed | unspecified
title: mr | mrs | ms | miss | master
BookFlightRequest
{
"offerIds": [
"string"
],
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisData": {
"nationality": "GBR",
"countryOfResidence": "GBR",
"travelDocType": "passport",
"travelDocNumber": "1234566",
"travelDocIssueDate": "2015-10-01",
"travelDocExpiry": "2022-09-30",
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
}
}
}
],
"languageCode": "en-GB"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
offerIds | [string] | false | The list of offerIds or bundleOfferIds(where applicable like U2) to book. If you send multiple offerIds, these must be only one-way offers covering all the journey legs from the original request. |
passengers | [CompletePassenger] | true | Full list of passengers with complete contact information for booking. |
languageCode | string | false | language code for Email notification |
KyteError
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
Wraps a Kyte specific error message.
Properties
Name | Type | Required | Description |
---|---|---|---|
code | string | true | Code identifying this particular error. Please supply this for any support requests. Existing codes and their descriptions : SERVER_ERROR - Internal server errorAUTH_ERROR - Authentication failed or access to resource not allowedUNSUPPORTED_FEATURE - Feature is currently unsupported by KytePAYLOAD_VALIDATION_ERROR - The payload received does not comply with the schemaUNSUPPORTED_JOURNEY_CONFIG - Carrier does not support this journey configuration. Usually happens for LCCs who only do one-way or round-tripMALFORMED_CONTEXT_ID - Context Id (offerId or bookingId) is malformedINVALID_PAX_CONFIG - Passenger configuration is not valid - more than one infant per adult, or unaccompanied childrenSEARCH_ERROR - An error occurred while searching for a flightAIRLINE_SERVICE_ERROR - Airline service returned an internal error of sortsSERVICE_ERROR - An internal service could not be contacted (server down)SERVICE_TIMEOUT - The internal service did not respond in time (possibly airline service did not respond in time)SERVICE_CONSISTENCY_ERROR - Airline responded with inconsistent data (but there's always the chance we parsed it wrong)ITEM_NOT_FOUND_IN_SYSTEM - Specified item was not found in our cache. Possibly expired awhile agoOFFER_EXPIRED - Offer was found in system, but it has expiredFQTV_ALREADY_SPECIFIED - This passenger already has a FQTV associated with him in the current offer's context |
message | string | true | Human readable description of the error |
source | string | false | Identifies the owner of this error message. If missing, this is assumed to be a Kyte error. |
contextId | string | false | In a multi-context scenario (multiple offers), this identifies the offer to which the error refers to. |
KyteWarning
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
code | string | false | Code identifying this particular warning. Please supply this for any support requests. Existing codes and their descriptions : WARNING - General warning about the service |
message | string | true | Human readable description of the warning |
source | string | false | Identifies the owner of this error message. If missing, this is assumed to be a Kyte error. |
contextId | string | false | In a multi-context scenario (multiple offers), this identifies the offer to which the error refers to. |
PossibleAction
{
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
The specifications of the above mentioned possible actions
Properties
Name | Type | Required | Description |
---|---|---|---|
type | string | true | Indicates whether this action is mandatory or not |
timeLimit | string(date) | true | The time limit for this action's availability |
requestedItems | object | false | The map of items available to add as parameters to the action |
» string | string | false | none |
Enumerated Values
type: optional | mandatory
string: optional | mandatory
Currency
{
"code": "GBP",
"decimals": 2
}
Describes a standard currency. All amounts used by Kyte will be expressed as the currency's lowest denominator to avoid rounding issues. Whenever displaying a value to the end-user, always divide by 10^decimals
to get a floating point value in the currency's regular value.
Properties
Name | Type | Required | Description |
---|---|---|---|
code | string | true | Currency code (ISO4217 format) |
decimals | integer | true | Number of decimal places this currency has |
PassengerAncillaryResponse
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
Describes the state of an ancillary attached to a specific passenger.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Id of the actual ancillary this entry refers to. In case this is a seat, this will be its number |
type | string | true | Type of ancillary this entry refers to. The id of this request must be present in the list of available ancillaries of this type, for this booking / flight / passenger |
name | string | false | Name of the ancillary item. |
status | string | true | Specifies the state of this particular ancillary item. added - The item has been added to the booking, but not confirmed with the airline confirmed - The item has added to the booking and confirmed by the airlineticketed - A ticket has been issued by the airline for this item. This only applies to paid ancillaries |
quantity | integer | true | Number of ancillary items currently attached to the current passenger. |
flightSegments | [string] | true | List of FlightSegment ids this ancillary is assigned to, for the current passenger. |
Enumerated Values
type: bag | sportsEquipment | meal | seat | service | bundle | disabilityAssistance | loungeAccess
status: added | removed | confirmed | ticketed
ConfiguredPassengerState
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
Describes the state of ancillaries assigned to a passenger
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this passenger, as received from the Shop Flights or Retrive Booking calls |
ancillaries | [PassengerAncillaryResponse] | true | List of assigned ancillaries for the passenger. |
Model1
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Id of the actual fee this entry refers to. |
type | string | true | Type of fee this entry refers to. The id of this request must be present in the list of available fees of this type, for this booking / passenger |
name | string | false | Name of the fee item. |
status | string | true | Specifies the state of this particular fee item. added - The item has been added to the booking, but not confirmed with the airline confirmed - The item has added to the booking and confirmed by the airlineticketed - A ticket has been issued by the airline for this item. This only applies to paid fees |
quantity | integer | true | Number of fees items currently attached to the current passenger. |
Enumerated Values
type: carbonOffset
status: added | removed | confirmed | ticketed
ConfiguredPassengerFeeState
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
Describes the state of fees assigned to a passenger
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this passenger, as received from the Shop Flights or Retrive Booking calls |
fees | [Model1] | true | List of assigned fees for the passenger. |
AcceptedCardInfo
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
Surcharge information for a particular card, describing the amount, the type and min/max total payment amounts to which this applies, if any.
Properties
Name | Type | Required | Description |
---|---|---|---|
amount | number | false | Surcharge value, if applicable. This can be either percentual or fixed (in which case this will be a monetary value expressed in the smallest denominator of the context's currency) |
type | string | false | Defines the type of the surcharge, if amount is more than zero |
minPrice | number | false | Defines the minimum payment value after which this surcharge applies, if any. Expressed in the smallest denominator of the context's currency. |
maxPrice | number | false | Defines the maximum payment value for which this surcharge applies, if any. Expressed in the smallest denominator of the context's currency. |
Enumerated Values
type: percentual | fixed
AcceptedCardConfiguration
{
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
}
A set of card information, grouped by card type (personal, corporate)
Properties
Name | Type | Required | Description |
---|---|---|---|
corporate | object | false | Dictionary of accepted corporate card information (and associated surcharges), keyed by card type |
» string | [AcceptedCardInfo] | false | List of surcharge info, if applicable |
personal | object | false | Dictionary of accepted personal card information (and associated surcharges), keyed by card type |
» string | [AcceptedCardInfo] | false | List of surcharge info, if applicable |
BookingMentionReference
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Id of item affected by this mention |
type | string | true | Type of item id refers to. |
Enumerated Values
type: flightSolution | flightSegment | seat | ancillary
BookingMention
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
Describes a notification of importance regarding one or more items from a booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
code | string | true | Code identifying this particular mention. While this could be parsed, do not rely on this. |
text | string | true | Textual representation of this particular mention. |
references | [BookingMentionReference] | true | List of references to the booking items affected by this mention |
BookFlightResponse
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
]
}
Describes a booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
id | string | true | Unique identifier for this booking with Kyte |
status | string | true | General status of the booking |
ticketStatus | string | true | Current status for this booking regarding ticketing |
totalCost | integer | true | The total cost of this booking, including the base fare and added added ancillaries, expressed in the specified currency's lowest denominator |
currentBalance | integer | true | Amount left unpaid for this booking (included in the total cost). Ticketed status may not be achieved until all balance is paid |
currency | Currency | true | Describes a standard currency. All amounts used by Kyte will be expressed as the currency's lowest denominator to avoid rounding issues. Whenever displaying a value to the end-user, always divide by 10^decimals to get a floating point value in the currency's regular value. |
ancillaries | [ConfiguredPassengerState] | false | Ancillary selection per passenger, if ancillaries was requested |
fees | [ConfiguredPassengerFeeState] | false | Fee selection per passenger, if fees was requested |
acceptedPaymentMethods | [string] | true | Accepted payment methods for this booking. AgencyCache refers to either BSP or ARC settlement |
acceptedCards | AcceptedCardConfiguration | false | A set of card information, grouped by card type (personal, corporate) |
ticketTimeLimit | string | false | Payment deadline for this booking. If payment is not settled in full by this time, the booking will be automatically cancelled |
mentions | [BookingMention] | false | List of BookingMention objects providing additional (non-error) information regarding possible changes to this booking |
Enumerated Values
status: valid | expired | cancelled
ticketStatus: cancelled | notTicketed | partiallyTicketed | ticketed | ticketedNoItinerary | ticketed-disrupted | heldBooking
DefaultResponse
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
}
}
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
JourneyDate
{
"main": "2024-10-20",
"time": "15:30",
"type": "departure",
"flexibilityRange": 2
}
Describes a flexible way to refer to a Journey
's date, offering options to express a range of days centered around a main date and specify this as departure or arrival date(not yet implemented)
Properties
Name | Type | Required | Description |
---|---|---|---|
main | string(date) | true | The actual date to be used as reference for this JourneyDate |
time | string | false | The time to be used as reference for this JourneyDate` |
type | string | false | The type of date this refers to |
flexibilityRange | integer | false | Number of accepted days to search before/after the main date |
Enumerated Values
type: departure
Aircraft
{
"code": "744",
"name": "Boeing 747 jet"
}
Provides a general description of the aircraft, without any seating layout information
Properties
Name | Type | Required | Description |
---|---|---|---|
code | string | true | Specific aircraft version code (EG: 744 designates a Boeing 747-400) |
name | string | false | Display name for this aircraft (if available) |
Journey
{
"id": "string",
"date": {
"main": "2024-10-20",
"time": "15:30",
"type": "departure",
"flexibilityRange": 2
},
"aircraftPreference": {
"code": "744",
"name": "Boeing 747 jet"
},
"departureAirport": "string",
"arrivalAirport": "string",
"action": "add"
}
Represents a single journey contiguous journey between a place of departure and a place of arrival.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | false | Reference id for this Journey as returned in Retrieve response |
date | JourneyDate | true | Describes a flexible way to refer to a Journey 's date, offering options to express a range of days centered around a main date and specify this as departure or arrival date(not yet implemented) |
aircraftPreference | Aircraft | false | Provides a general description of the aircraft, without any seating layout information |
departureAirport | string | true | IATA code of departure airport |
arrivalAirport | string | true | IATA code of arrival airport |
action | string | false | action like 'add/remove/update' to be performed on the journey, used whilst reshopping to add/remove segments |
Enumerated Values
action: add | remove | update
SearchPassenger
{
"age": 21,
"seatRequested": true,
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
]
}
Describes a passenger using the least amount of information needed for a price quote.
Properties
Name | Type | Required | Description |
---|---|---|---|
age | integer | false | Age of passenger. Required if passenger is an Infant (specify 0 or 1) or a Child (<16). If not specified, passenger is assumed to be an adult. |
seatRequested | boolean | false | Always request a seat for this passenger. This only applies to Infant passengers (<2yrs) |
frequentFlyer | [LoyaltyProgramAccount] | false | A list of Loyalty Program accounts. Each account is tied to a particular airline and will be matched internally when making queries NOTE: The name of this Loyalty Program acct. will be checked against the name of this passenger when booking - in case of mismatch potential benefits will be invalidated. As such, it is recommended to add this account to the first passenger (lead passenger) |
ShopFlightsRequest
{
"journeys": [
{
"id": "string",
"date": {
"main": "2024-10-20",
"time": "15:30",
"type": "departure",
"flexibilityRange": 2
},
"aircraftPreference": {
"code": "744",
"name": "Boeing 747 jet"
},
"departureAirport": "string",
"arrivalAirport": "string",
"action": "add"
}
],
"exactMatch": true,
"nonStopFlight": true,
"corporateAccount": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"cabinType": "economy",
"flexibility": "lowest",
"fareType": "public",
"passengers": [
{
"age": 21,
"seatRequested": true,
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
]
}
],
"miniFareRule": true,
"splitOffer": true
}
Properties
Name | Type | Required | Description |
---|---|---|---|
journeys | [Journey] | true | List of individual journeys in the requested itinerary. For example, if searching for a round-trip journey, add two entries in this array, one for ther outbound flight and another for the return flight |
exactMatch | boolean | false | Only return flights matching the initial search, instead of allowing departures and arrivals from nearby airports. Defaults to false NOTE: If enabled with a city code search, it will not return any matches, since none of the offers will contain the city code. |
nonStopFlight | boolean | false | Return only non-stop flight options (default is false ) |
corporateAccount | [LoyaltyProgramAccount] | false | List of corporate accounts to be sent to airlines, if and where applicable |
cabinType | string | false | Specify a preference for this cabin type. This will be used as a guideline and returned offers will try to match it (or better) Default is economy . |
flexibility | string | false | Specified requested flexibility for offers. Default is lowest |
fareType | string | false | Type of fare requested for offers. Default is public public - request publicly available fares negociated - request negociated fares where applicable (availability depends on factors such as agency IATA number, corporateAccount etc. |
passengers | [SearchPassenger] | true | List of passengers for this itinerary. Minimal information is required at this point. |
miniFareRule | boolean | false | Option to return fare rules |
splitOffer | boolean | false | Option to return separate offers for each segment instead of a combined offer for the itinerary |
Enumerated Values
cabinType: economy | premiumEconomy | business | first
flexibility: lowest | low | flexible
fareType: public | negociated | corporate
JourneyLeg
{
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this JourneyLeg |
departureAirport | string | true | IATA code for departure airport |
arrivalAirport | string | true | IATA code for arrival airport |
flightSolutions | [string] | true | List of FlightSolution ids servicing this JourneyLeg. One FlightSolution can have multiple segments, but the first segment will always depart on departureDate |
Airline
{
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
}
Describes an airline
Properties
Name | Type | Required | Description |
---|---|---|---|
code | string | true | IATA two-letter airline code |
name | string | true | Official airline name |
alliance | string | false | The alliance this airline is a part of, if applicable |
City
{
"code": "LON",
"name": "London"
}
Describes a city serviced by an airport.
Properties
Name | Type | Required | Description |
---|---|---|---|
code | string | true | IATA city code |
name | string | true | City name |
Airport
{
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
}
The 'place'
Properties
Name | Type | Required | Description |
---|---|---|---|
code | string | true | IATA airport code |
name | string | true | Full airport name |
city | City | false | Describes a city serviced by an airport. |
TimeAndPlace
{
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
}
Describes a specific place and time for an event, such as arrival to (or departure from ) an airport.
Properties
Name | Type | Required | Description |
---|---|---|---|
airport | Airport | true | The 'place' |
terminal | string | false | Specific terminal name, if available |
date | string | true | The date part of 'time' in ISO8601 format |
time | string | true | The time part of time . This is always in the airport's time zone for quick display |
changeOfDay | integer | false | Number of days since departure. This only applies when TimeAndPlace is used to describe the arrival time & place |
FlightSegment
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
Describes an actual flight, without any layovers (note that change-of-gauge stops can happen in a FlightSegment
)
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this FlightSegment |
marketingCarrier | Airline | true | Describes an airline |
operatingCarrier | Airline | false | Describes an airline |
flightNumber | string | true | The flight number as provided by Marketing Carrier This is numerical only. If you want to display it in the common format, prepend the marketing airline code to it - BA0112 |
duration | integer | true | The duration of the flight, expressed in minutes |
aircraft | Aircraft | false | Provides a general description of the aircraft, without any seating layout information |
departure | TimeAndPlace | true | Describes a specific place and time for an event, such as arrival to (or departure from ) an airport. |
arrival | TimeAndPlace | true | Describes a specific place and time for an event, such as arrival to (or departure from ) an airport. |
status | string | true | Current status of this flight segment |
Enumerated Values
status: ok | delayed | cancelled
FlightSolution
{
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
Describes a way to travel between the two points specified in a Journey
. Such a solution can be comprised of multiple FlightSegments
with a layover between them.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this FlightSolution |
segments | [FlightSegment] | true | List of flight segments comprising this FlightSolution |
totalDuration | integer | true | The total duration of this flight solution (sum of all flight segment durations |
journeyLegId | string | true | Id of the JourneyLeg this flight services |
CostElement
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
Describes an individual component of a Cost
item
Properties
Name | Type | Required | Description |
---|---|---|---|
code | string | true | Code identifying this component. This will be unique inside a Cost object |
type | string | true | Represents the general type of this component. |
amount | integer | true | The monetary amount of this component, expressed in the lowest denominator of the offer's currency. |
description | string | false | A short text describing what this component represents, if available |
Enumerated Values
type: base | tax | surcharge | misc | discount | serviceFee
PricedPassenger
{
"id": "string",
"type": "adult",
"price": 11000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
]
}
Describes a passenger already registered in the context of an offer, with pricing information for this offer
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this passenger. This Id should be used for all subsequent calls when referring to this passenger |
type | string | true | Type of passenger as identified with airline |
price | integer | true | Total ticket price for this passenger, expressed in the offer currency's smallest denomination |
priceBreakdown | [CostElement] | true | Breakdown of the price that identifies the base fare and the applicable taxes and surcharges applied. |
Enumerated Values
type: adult | teen | child | infant
Fare
{
"id": "string",
"name": "Euro Traveller",
"segments": [
"BA1234"
],
"passengers": [
"SH1"
],
"description": [
"string"
],
"fareClass": "Y",
"fareBasisCode": "YV3KO/Y",
"cabinType": "economy",
"fareType": [
"flexible",
"negociated"
]
}
Describes a fare category, the segment(s) it applies to and it's conditions.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this fare |
name | string | true | Marketing/Display name for this fare |
segments | [string] | true | List of FlightSegments to which this fare applies |
passengers | [string] | true | List of passengers this fare applies to |
description | [string] | false | List of perks/conditions for this fare |
fareClass | string | true | Fare class identifier (B, Y, O, etc.) |
fareBasisCode | string | false | Code identifying the actual fare (and fare rules that apply) with the airline. May not missing for some airlines |
cabinType | string | true | Cabin type for this fare |
fareType | [string] | false | List of fare type descriptors, if available |
Enumerated Values
cabinType: economy | premiumEconomy | business | first
ServiceFee
{
"id": "string",
"type": "cancel",
"amount": 100,
"segments": [
"BA123"
],
"remarks": [
"There are no refunds except for any government & airport taxes."
]
}
Describes a fee incurred for a particular change made to a booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this service fee |
type | string | true | Type of fee. Cancel - service fee applied when cancelling without requiring a refund (cancel itinerary, retain tickets) Refund - service fee applied when cancelling and requesting a refund Exchange - service fee applied when requesting an exchange of flights |
amount | integer | false | The monetary amount of this service fee, espressed in the offer/quote currency's lowest denomination. In some cases (such as cancellation with no refund), there is no fee perceived if no refund is offered. See remarks for details |
segments | [string] | true | List of FlightSegmentId s for which this service fee applies |
remarks | [string] | false | Additional human readable information regarding this service fee. |
Enumerated Values
type: cancel | refund | exchange | noShow | upgrade | other
Offer
{
"id": "string",
"flightSolutions": [
"string"
],
"singleJourneyLeg": true,
"owner": "string",
"expiration": "2020-08-19T08:20:00.000Z",
"priceGuaranteeExpiration": "2020-08-19T08:20:00.000Z",
"totalPrice": 11000,
"currency": {
"code": "GBP",
"decimals": 2
},
"passengers": [
{
"id": "string",
"type": "adult",
"price": 11000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
]
}
],
"fares": {
"FareId": {
"id": "string",
"name": "Euro Traveller",
"segments": [
"BA1234"
],
"passengers": [
"SH1"
],
"description": [
"string"
],
"fareClass": "Y",
"fareBasisCode": "YV3KO/Y",
"cabinType": "economy",
"fareType": [
"flexible",
"negociated"
]
}
},
"servicingFees": [
{
"id": "string",
"type": "cancel",
"amount": 100,
"segments": [
"BA123"
],
"remarks": [
"There are no refunds except for any government & airport taxes."
]
}
]
}
Describes an offer for a particular Itinerary (list of Journey
s, as specified in the ShopFlights
request)
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this Offer |
flightSolutions | [string] | true | A list of Ids for all flight solutions included in this offer. These will cover all of the journey legs received in the ShopFlights request, so no manual composition of offers is needed. |
singleJourneyLeg | boolean | false | If present and true, signals that this offer only covers one of the journey legs. In this case you can manually mix-and-match offers in any configuration so to cover the whole itinerary. |
owner | string | true | IATA two letter code identifying the airline that owns this offer. This may be different from both the Marketing and Operating Carriers for the flights that make up the offer. |
expiration | string(date) | true | The expiration date for this offer. Attempting to book this offer in a short window after expiry might succeed, but without any guarantees, as airline inventory availability is not assured after this time |
priceGuaranteeExpiration | string(date) | false | The moment after which price for this offer is not guaranteed anymore (even if booked, but not yet paid). |
totalPrice | integer | true | The total price of this offer (including taxes), expressed in the currency's lowest denominator |
currency | Currency | true | Describes a standard currency. All amounts used by Kyte will be expressed as the currency's lowest denominator to avoid rounding issues. Whenever displaying a value to the end-user, always divide by 10^decimals to get a floating point value in the currency's regular value. |
passengers | [PricedPassenger] | true | List of passengers contained in this offer, with individual prices |
fares | object | true | Dictionary of fares in this offer (key is the Fare 's id, while value is the actual Fare ) |
» FareId | Fare | false | Describes a fare category, the segment(s) it applies to and it's conditions. |
servicingFees | [ServiceFee] | false | List of servicing fees applied when requesting a change to a booking made from this offer |
ShopFlightResponse
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
},
"offers": {
"OfferId": {
"id": "string",
"flightSolutions": [
"string"
],
"singleJourneyLeg": true,
"owner": "string",
"expiration": "2020-08-19T08:20:00.000Z",
"priceGuaranteeExpiration": "2020-08-19T08:20:00.000Z",
"totalPrice": 11000,
"currency": {
"code": "GBP",
"decimals": 2
},
"passengers": [
{
"id": "string",
"type": "adult",
"price": 11000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
]
}
],
"fares": {
"FareId": {
"id": "string",
"name": "Euro Traveller",
"segments": [
"BA1234"
],
"passengers": [
"SH1"
],
"description": [
"string"
],
"fareClass": "Y",
"fareBasisCode": "YV3KO/Y",
"cabinType": "economy",
"fareType": [
"flexible",
"negociated"
]
}
},
"servicingFees": [
{
"id": "string",
"type": "cancel",
"amount": 100,
"segments": [
"BA123"
],
"remarks": [
"There are no refunds except for any government & airport taxes."
]
}
]
}
}
}
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
legs | object | true | A dictionary of JourneyLeg s keyed by their id |
» JourneyLegId | JourneyLeg | false | none |
flightSolutions | object | true | Dictionary of FlightSolution s keyed by their id . Each FlightSolution will match one and only one JourneyLeg |
» FlightSolutionId | FlightSolution | false | Describes a way to travel between the two points specified in a Journey . Such a solution can be comprised of multiple FlightSegments with a layover between them. |
offers | object | true | Dictionary of Offer s keyed by their id . NOTE: More than one offer can refer to a particular FlightSolution (in case depending on cabin type and flexibility specified in query) NOTE: Offers will cover all possible solutions, so no manual mix-and-match is needed. |
» OfferId | Offer | false | Describes an offer for a particular Itinerary (list of Journey s, as specified in the ShopFlights request) |
CCDate
{
"month": 10,
"year": 20
}
Describes a date related to a Card
Properties
Name | Type | Required | Description |
---|---|---|---|
month | integer | true | Date month as number |
year | integer | false | Year |
CCInfo
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
Describes a credit or debit card
Properties
Name | Type | Required | Description |
---|---|---|---|
number | string | true | Credit card number |
cardholderName | string | true | Name of cardholder, as it appears on the card |
issued | CCDate | false | Describes a date related to a Card |
valid | CCDate | true | Describes a date related to a Card |
security | string | true | Card CVC/CVV number |
type | string | true | Card type |
isCorporate | boolean | false | Specifies that this is a corporate card. Defaults to false |
address | Address | true | Address of stay for the first night in the US. |
owner | string | true | Id of passenger/payer that owns this card. If owner is not a passenger, contact information must be provided in the same request as this object (see PayerInfo ) |
Enumerated Values
type: visa | visa-debit | mastercard | mastercard-debit | amex | electron | maestro | dinersClub | discover | airplus-uatp
PayerInfo
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
Complete information for a third party payer
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this Payer. This can be referenced in the CCInfo object's owner field. |
firstName | string | true | Person's first name |
lastName | string | true | Payer's last (family) name |
title | string | true | Payer's title |
contactInformation | ContactInformation | true | Contact information for this passenger. At least one (lead) passenger must provide contact information |
Enumerated Values
title: mr | mrs | ms | miss | master
CardAuthentication
{
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
}
Encapsulates data received from a PSP after an authentication request, using a customer's card. This data will allow the airline to charge the card without any further challenges.
Properties
Name | Type | Required | Description |
---|---|---|---|
authValue | string | true | Authentication value (Av), as received from the PSP |
dsTransactionId | string | true | Directory Server Transaction ID, as received from the PSP |
ECI | string | true | Electronic Commerce Indicator, as received from the PSP |
threeDSVersion | string | true | 3DS protocol version used to generate the data in this object. |
transactionStatus | string | false | Transaction status code, if available. |
Enumerated Values
transactionStatus: Y | N | A
PaymentRequest
{
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
}
Properties
Name | Type | Required | Description |
---|---|---|---|
method | string | false | Payment method selected for this payment. The payment must match one of the accepted payment methods received on the BookFlight response or one of the synthetic ones if request is part of a 3DS or similar flow |
amount | integer | true | Amount to be charged to this payment method |
transactionType | string | false | Describes the type of payment transaction this request represents. Defaults to online if not specified. online - standard transaction, driven by the traveler. This may trigger a 3DS challenge in certain conditions.moto - Mail Order / Telephone Order transaction, driven by an agent on behalf of the traveler. This will bypass 3DS challenges, but agent/agency assumes resposibility for any fraud challenges. |
creditCardInfo | [CCInfo] | false | List of cards to be used for this payment, if method was specified as card |
payerInformation | [PayerInfo] | false | List of contact information for third party payers. Add this if payment is done through a card that is not owned by any of the passengers. |
authentication | CardAuthentication | false | Encapsulates data received from a PSP after an authentication request, using a customer's card. This data will allow the airline to charge the card without any further challenges. |
challengeResponse | string | false | Challenge response received from 3DS or PSP verification, if method was set to challengeResponse or PSPVerification |
responseURL | string | false | A valid URL to which an MPI can POST a response to a 3DS v1 verification. Data sent to this URL must be sent back to Kyte in order to complete the payment flow. This must be submitted if airline mandates a 3DSecure payment and card is not exempt |
codegen | boolean | false | In a 3DSecure v1 flow, enable automatic HTML form generation for customer redirect |
Enumerated Values
method: card | agencyCash | voucher | challengeResponse | PSPVerification
transactionType: online | moto
PaymentResponse
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"status": "challenge3DS",
"paymentChallengeData": {
"string": "string"
},
"paymentChallengeForm": "string",
"paymentRef": "akumd492993300"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
status | string | true | State of the payment. If 3DSecure is enabled, this will be challenge3DS |
paymentChallengeData | object | false | A dictionary of key-value pairs that must be included in an HTML form that will redirect the end-customer to a page where he/she will input their password or OTP. The form's action parameter will be included under the redirectURL key. All other parameters must be includedin the form as hidden fields |
» string | string | false | Value to be submitted in the form, under its key's name |
paymentChallengeForm | string | false | Ready-made self-submitting HTML form code that will redirect the end-customer to a 3D Secure validation page |
paymentRef | string | false | Payment confirmation number, if payment was successful |
Enumerated Values
status: ok | challenge3DS | challengePSP | error | pending
ReshopFlightsRequest
{
"journeys": [
{
"id": "string",
"date": {
"main": "2024-10-20",
"time": "15:30",
"type": "departure",
"flexibilityRange": 2
},
"aircraftPreference": {
"code": "744",
"name": "Boeing 747 jet"
},
"departureAirport": "string",
"arrivalAirport": "string",
"action": "add"
}
],
"cabinType": "economy"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
journeys | [Journey] | false | Repeat Departure Airport of the origin destination that needs change of Date/Time or Original booked date for a cabin upgrade request otherwise it will be treated as a change of date. |
cabinType | string | false | Specify a preference for cabin type upgrade. If not required then don't set this |
Enumerated Values
cabinType: economy | premiumEconomy | business | first
ReshopFlightResponse
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
},
"offers": {
"OfferId": {
"id": "string",
"flightSolutions": [
"string"
],
"singleJourneyLeg": true,
"owner": "string",
"expiration": "2020-08-19T08:20:00.000Z",
"priceGuaranteeExpiration": "2020-08-19T08:20:00.000Z",
"totalPrice": 11000,
"currency": {
"code": "GBP",
"decimals": 2
},
"passengers": [
{
"id": "string",
"type": "adult",
"price": 11000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
]
}
],
"fares": {
"FareId": {
"id": "string",
"name": "Euro Traveller",
"segments": [
"BA1234"
],
"passengers": [
"SH1"
],
"description": [
"string"
],
"fareClass": "Y",
"fareBasisCode": "YV3KO/Y",
"cabinType": "economy",
"fareType": [
"flexible",
"negociated"
]
}
},
"servicingFees": [
{
"id": "string",
"type": "cancel",
"amount": 100,
"segments": [
"BA123"
],
"remarks": [
"There are no refunds except for any government & airport taxes."
]
}
]
}
}
}
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
legs | object | true | A dictionary of JourneyLeg s keyed by their id |
» JourneyLegId | JourneyLeg | false | none |
flightSolutions | object | true | Dictionary of FlightSolution s keyed by their id . Each FlightSolution will match one and only one JourneyLeg |
» FlightSolutionId | FlightSolution | false | Describes a way to travel between the two points specified in a Journey . Such a solution can be comprised of multiple FlightSegments with a layover between them. |
offers | object | true | Dictionary of Offer s keyed by their id . NOTE: Offers will cover all possible solutions, so no manual mix-and-match is needed. |
» OfferId | Offer | false | Describes an offer for a particular Itinerary (list of Journey s, as specified in the ShopFlights request) |
SplitBookingRequest
{
"passengerIds": "T1,T2"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
passengerIds | [string] | true | List of passengerIds to split from the main booking |
BookingReference
{
"owner": "BA",
"reference": "JHA78B"
}
A reference to a booking in an airline's system.
Properties
Name | Type | Required | Description |
---|---|---|---|
owner | string | true | IATA code of airline owning this booking referecen |
reference | string | true | Actual airline booking reference |
Itinerary
{
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
}
}
Describes the complete itinerary of a booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
legs | object | true | Dictionary of JourneyLeg objects keyed by their id |
» JourneyLegId | JourneyLeg | false | none |
flightSolutions | object | true | Dictionary of FlightSolution objects keyed by their id. These flight solutions will service only and all JourneyLeg s supplied in the legs field |
» FlightSolutionId | FlightSolution | false | Describes a way to travel between the two points specified in a Journey . Such a solution can be comprised of multiple FlightSegments with a layover between them. |
PassengerInformation
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisStatus": "missing"
}
Complete set of information regarding a passenger on a booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this passenger. This will be supplied by Kyte in the ShopFlightsResponse |
frequentFlyer | [LoyaltyProgramAccount] | false | List of frequent flyer (loyalty) account numbers. These will be automatically matched to the correct airline (if any) and passed on to benefit from available perks and offers. |
firstName | string | true | Passenger's first (given) name |
middleName | string | false | Passenger's middle name, if any. |
lastName | string | true | Passenger's last (family) name |
dateOfBirth | string | false | Date of birth for this passenger. Mandatory for infants and passengers travelling on APIS routes |
gender | string | true | Passenger's gender |
title | string | true | Passenger's title |
contactInformation | ContactInformation | false | Contact information for this passenger. At least one (lead) passenger must provide contact information |
apisStatus | string | false | Status of APIS information as reported by airline, where applicable. |
Enumerated Values
gender: male | female | other | undisclosed | unspecified
title: mr | mrs | ms | miss | master
apisStatus: complete | missing | notRequired
Ticket
{
"type": "eTicket",
"number": "18485748383",
"passengerId": "SH1"
}
Describes an airline ticket
Properties
Name | Type | Required | Description |
---|---|---|---|
type | string | true | Type of ticket this detail refers to |
number | string | true | Actual number of this ticket |
passengerId | string | true | Id of passenger this ticket refers to |
Enumerated Values
type: eTicket | EMD
Cost
{
"id": "BAG1",
"category": "fare",
"type": "baseFare",
"price": 0,
"breakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"passengerId": "SH1",
"segments": "BA0440-AMS-LHR",
"name": "Meal"
}
Describes the cost referring to a particular item on a booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Item id to which this cost item refers to. Base fare will have id base |
category | string | false | General category under which this cost item falls |
type | string | true | Type of this cost item |
price | integer | true | Actual price of this cost item (can be negative). Expressed in the booking currency's lowest denominator. |
breakdown | [CostElement] | false | A list of the cost components comprising this cost item. Will only be present if the cost can be broken down into multiple components. |
passengerId | string | false | Id of passenger this cost applies to, if any. In case no passenger if specified, this is a per-booking cost |
segments | [string] | false | A list of segment ids to which this cost applies |
name | string | false | The name of this cost item |
Enumerated Values
category: fare | ancillary | serviceFee | tax | surcharge | fee
type: bag | sportsEquipment | meal | seat | service | bundle | disabilityAssistance | loungeAccess | cancel | refund | exchange | noShow | upgrade | other | baseFare
PaymentAuthorization
{
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
Describes a payment authorization.
Properties
Name | Type | Required | Description |
---|---|---|---|
method | string | true | Payment method subject to this authorization |
methodDetail | string | true | Details on the actual payment item used |
timestamp | string(date) | false | Authorization timestamp, if available. |
number | string | false | Authorization number, if available. |
Enumerated Values
method: card | agencyCash | voucher
PaymentDetail
{
"totalAmount": 11000,
"date": "2021-01-10",
"authorization": {
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
}
Describes a payment made for a booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
totalAmount | integer | true | Total amount paid |
date | string(date) | false | Date and time at which this payment was submitted, if available. |
authorization | PaymentAuthorization | false | Describes a payment authorization. |
CompleteBooking
{
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
],
"bookingRef": [
{
"owner": "BA",
"reference": "JHA78B"
}
],
"ticketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"itinerary": {
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
}
},
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisStatus": "missing"
}
],
"ticketDetails": [
{
"type": "eTicket",
"number": "18485748383",
"passengerId": "SH1"
}
],
"pricingBreakdown": [
{
"id": "BAG1",
"category": "fare",
"type": "baseFare",
"price": 0,
"breakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"passengerId": "SH1",
"segments": "BA0440-AMS-LHR",
"name": "Meal"
}
],
"paymentDetails": [
{
"totalAmount": 11000,
"date": "2021-01-10",
"authorization": {
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
}
]
}
Encapsulates a booking and all its associated information.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this booking with Kyte |
status | string | true | General status of the booking |
ticketStatus | string | true | Current status for this booking regarding ticketing |
totalCost | integer | true | The total cost of this booking, including the base fare and added added ancillaries, expressed in the specified currency's lowest denominator |
currentBalance | integer | true | Amount left unpaid for this booking (included in the total cost). Ticketed status may not be achieved until all balance is paid |
currency | Currency | true | Describes a standard currency. All amounts used by Kyte will be expressed as the currency's lowest denominator to avoid rounding issues. Whenever displaying a value to the end-user, always divide by 10^decimals to get a floating point value in the currency's regular value. |
ancillaries | [ConfiguredPassengerState] | false | Ancillary selection per passenger, if ancillaries was requested |
fees | [ConfiguredPassengerFeeState] | false | Fee selection per passenger, if fees was requested |
acceptedPaymentMethods | [string] | true | Accepted payment methods for this booking. AgencyCache refers to either BSP or ARC settlement |
acceptedCards | AcceptedCardConfiguration | false | A set of card information, grouped by card type (personal, corporate) |
ticketTimeLimit | string | false | Payment deadline for this booking. If payment is not settled in full by this time, the booking will be automatically cancelled |
mentions | [BookingMention] | false | List of BookingMention objects providing additional (non-error) information regarding possible changes to this booking |
bookingRef | [BookingReference] | false | List of airline booking references for this booking, if PNR was requested |
ticketingCarrier | Airline | true | Describes an airline |
itinerary | Itinerary | false | Describes the complete itinerary of a booking. |
passengers | [PassengerInformation] | false | Complete list of all passengers on this booking, with their contact information, if passengerDetails was requested |
ticketDetails | [Ticket] | false | All issued ticket information, if ticketInfo was requested |
pricingBreakdown | [Cost] | false | Price breakdown for this booking, if pricingBreakdown was requested |
paymentDetails | [PaymentDetail] | false | List of payments for this booking, if passengerDetails was selected |
Enumerated Values
status: valid | expired | cancelled
ticketStatus: cancelled | notTicketed | partiallyTicketed | ticketed | ticketedNoItinerary | ticketed-disrupted | heldBooking
SplitBookingResponse
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"status": "ok",
"bookings": [
{
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
],
"bookingRef": [
{
"owner": "BA",
"reference": "JHA78B"
}
],
"ticketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"itinerary": {
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
}
},
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisStatus": "missing"
}
],
"ticketDetails": [
{
"type": "eTicket",
"number": "18485748383",
"passengerId": "SH1"
}
],
"pricingBreakdown": [
{
"id": "BAG1",
"category": "fare",
"type": "baseFare",
"price": 0,
"breakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"passengerId": "SH1",
"segments": "BA0440-AMS-LHR",
"name": "Meal"
}
],
"paymentDetails": [
{
"totalAmount": 11000,
"date": "2021-01-10",
"authorization": {
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
}
]
}
]
}
The result of executing a split booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
status | string | true | Represents the status of the request. |
bookings | [CompleteBooking] | false | List of bookings resulting from split of the original booking |
Enumerated Values
status: ok | failed
BasicPassenger
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"lastName": "Doe"
}
Describes a passenger already registered in the context of an offer or a booking, with additional Frequent Flyer information
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this passenger. This will be supplied by Kyte in the ShopFlightsResponse |
frequentFlyer | [LoyaltyProgramAccount] | false | List of frequent flyer (loyalty) account numbers. These will be automatically matched to the correct airline (if any) and passed on to benefit from available perks and offers. |
firstName | string | false | Passenger's first (given) name |
lastName | string | false | Passenger's last (family) name |
ShopAncillariesRequest
{
"offerIds": [
"string"
],
"corporateAccounts": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"lastName": "Doe"
}
],
"requestedTypes": [
"bag",
"seat"
]
}
Properties
Name | Type | Required | Description |
---|---|---|---|
offerIds | [string] | false | A list of offerIds for which to retrieve ancillaries. If you send multiple offerIds, these must be only one-way offers covering different journey legs from the original request. |
corporateAccounts | [LoyaltyProgramAccount] | false | List of corporate account numbers. These will be automatically matched to the correct airline (if any) and will be passed on to benefit from available perks and offers |
passengers | [BasicPassenger] | false | List of passengers and their associated frequent flyer accounts. This list can be incomplete as the FQTV accounts will be added to existing info and used automatically on subsequent requests. Can be omitted if no FQTV are available. |
requestedTypes | [string] | true | List of specific ancillary items to get details for |
ItemCharacteristics
{
"size": [
"10x10x20in",
"22x22x44cm"
],
"weight": [
"23kg",
"12lbs"
]
}
A set of max size and/or max weight metrics describing an item.
Properties
Name | Type | Required | Description |
---|---|---|---|
size | [string] | false | List of size limit descriptors (when available will be expressed in both metric and imperial) |
weight | [string] | false | List of weight limit descriptors for this items (when available will be expressed in both metric and imperial) |
PurchaseLimits
{
"purchaseQuantity": 1,
"requiredOnAllSegments": true,
"incompatibleWith": [
"BAG2, BAG3"
],
"combineWith": [
"BAG4"
]
}
Describes a set of limitations for purchasing an ancillary item (incl. sports equipment), per passenger
Properties
Name | Type | Required | Description |
---|---|---|---|
purchaseQuantity | integer | false | Limit on maximum quantity that can be purchased, if any. |
requiredOnAllSegments | boolean | false | Indicates that this ancillary (or a variation of it) must be added to all segments of a booking, if purchased |
incompatibleWith | [string] | false | List of other ancillary Ids that cannot be purchased together with this items |
combineWith | [string] | false | List of ancillaries that should be purchased with this item in order to satisfy the requiredOnAllSegments limitation. If there is no such limitation, this field will not be present. |
BagAncillary
{
"id": "BAG1",
"name": "string",
"description": "string",
"characteristics": {
"size": [
"10x10x20in",
"22x22x44cm"
],
"weight": [
"23kg",
"12lbs"
]
},
"mediaLinks": [
"string"
],
"price": 0,
"originalPrice": 1300,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"purchaseLimitations": {
"purchaseQuantity": 1,
"requiredOnAllSegments": true,
"incompatibleWith": [
"BAG2, BAG3"
],
"combineWith": [
"BAG4"
]
},
"passengers": [
"SH1"
],
"segments": [
"BA0112-LHR-AMS"
]
}
Describes a baggage ancillary (incl. sports equipment)
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this ancillary |
name | string | true | Display name for this ancillary |
description | string | false | Description of ancillary, if available. |
characteristics | ItemCharacteristics | true | A set of max size and/or max weight metrics describing an item. |
mediaLinks | [string] | false | List of URLs that point to media describing this ancillary (images, videos, etc.) |
price | integer | true | The price of this ancillary in the lowest denominator of the context currency |
originalPrice | integer | false | The price of this ancillary without any discount in the lowest denominator of the context currency |
priceBreakdown | [CostElement] | false | Breakdown of the price that identifies the base cost and the applicable taxes and surcharges applied, if any. |
purchaseLimitations | PurchaseLimits | false | Describes a set of limitations for purchasing an ancillary item (incl. sports equipment), per passenger |
passengers | [string] | true | List of passenger Ids that can purchase this ancillary |
segments | [string] | true | List of FlightSegment Ids for which this ancillary is available |
MealAncillary
{
"id": "MEAL1",
"name": "Standard Vegetarian Meal",
"description": "string",
"price": 1000,
"originalPrice": 1000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"mediaLinks": [
"string"
],
"passengers": [
"SH1"
],
"segments": "BA0112-LHR-AMS"
}
Describes a Meal ancillary available for a particular flight.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this meal |
name | string | true | Display name for this meal ancillary |
description | string | false | Detailed description of this meal, if available |
price | integer | true | Price of meal item in the lowest denominator of the offer's currency |
originalPrice | integer | false | Price of meal item without any discount in the lowest denominator of the offer's currency |
priceBreakdown | [CostElement] | false | Breakdown of the price that identifies the base cost and the applicable taxes and surcharges applied, if any. |
mediaLinks | [string] | false | List of URLs that point to media describing this meal (images, videos, etc.) |
passengers | [string] | true | List of passenger Ids that can purchase this ancillary |
segments | [string] | true | List of FlightSegment Ids for which this ancillary is available |
SeatCategory
{
"id": "FrontRow",
"name": "Front row seats",
"price": 1300,
"originalPrice": 1300,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"description": "string",
"mediaLinks": [
"string"
]
}
Describes a category of seats on an airplane.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this seat category |
name | string | true | Commercial name for this seat category |
price | integer | true | Price for any seat in this category, expressed in the lowest denominator of the offer's currency. Seat price can be negative as well if selected seat is in the lower price category than what's offered as part of a bundle |
originalPrice | integer | false | Original price for any seat in this category without any discount, expressed in the lowest denominator of the offer's currency |
priceBreakdown | [CostElement] | false | Breakdown of the price that identifies the base cost and the applicable taxes and surcharges applied, if any. |
description | string | false | Detailed description of this category and its perks, if available |
mediaLinks | [string] | false | List of URLs that point to media describing seats in this category (images, videos, etc.) |
ElementPosition
{
"start": 10,
"end": 11
}
Locates a particular element in the seat map of an aircraft.
Properties
Name | Type | Required | Description |
---|---|---|---|
start | number | true | Start row for the element described by this position object |
end | number | false | End row for the element described, if element spans more than one row. Elements that only span a single row will not have this field populated |
ExitPosition
{
"row": 12,
"position": "left",
"relativeToRow": "behind"
}
Locates an exit (either emergency or normal) in the seat map of an aircraft.
Properties
Name | Type | Required | Description |
---|---|---|---|
row | number | true | Row number used as a position reference for this particular exit. |
position | string | true | Indicates on which side of the aircraft's hull is the exit situated, when looking towards the front of the plane. |
relativeToRow | string | false | Indicates if the exit is behind or in front of the referenced row. This will only be present if the exit is not directly beside a row, such as the front or the back exists of a plane. |
Enumerated Values
position: left | right | both
relativeToRow: inFront | behind
CabinMetaInfo
{
"wingPosition": {
"start": 10,
"end": 11
},
"emergencyExits": [
{
"row": 12,
"position": "left",
"relativeToRow": "behind"
}
],
"exits": [
{
"row": 12,
"position": "left",
"relativeToRow": "behind"
}
],
"bulkheads": [
{
"start": 10,
"end": 11
}
],
"auxiliaryElements": {
"ElementPosition": "lavatory"
}
}
Set of auxiliary items that can be displayed for a complete cabin seat map (i.e.: anything other than seats).
Properties
Name | Type | Required | Description |
---|---|---|---|
wingPosition | ElementPosition | false | Locates a particular element in the seat map of an aircraft. |
emergencyExits | [ExitPosition] | false | List of the cabin's emergency exits, if available. Note these are emergency only exits. |
exits | [ExitPosition] | false | List of the cabin's regular exits, if available. |
bulkheads | [ElementPosition] | false | List of the cabin's bulkheads, if available. The position references the row in in front of which the bulkhead is situated. |
auxiliaryElements | object | false | Dictionary of auxiliary elements present in a seatmap, keyed by their position (e.g. 31A). These elements will be supplied as null s in the actual seat map, and will be present in this dictionary instead. |
» ElementPosition | string | false | Type of element at this position. |
Enumerated Values
ElementPosition: lavatory | galley | storage | stairs | bar | other
Seat
{
"number": "10A",
"position": "Window",
"category": "FrontRow",
"available": true,
"isRestrictedFor": "children",
"isEmergencyExit": true,
"isFacingBulkhead": false,
"facing": "front",
"type": "reclined",
"limitations": "armrestTable"
}
Describes a seat on an airplane.
Properties
Name | Type | Required | Description |
---|---|---|---|
number | string | true | Seat number |
position | string | true | Seat column position |
category | string | true | SeatCategory Id. May be null if seat is not available |
available | boolean | true | If true, this seat is vacant |
isRestrictedFor | string | true | Specifies if seat is restricted for some passengers |
isEmergencyExit | boolean | true | If true, this seat is in an Emergency Exit row |
isFacingBulkhead | boolean | true | If true, this seat is facing a bulkhead (panel) |
facing | string | false | Specifies seat facing, if available. |
type | string | true | Type of seat |
limitations | [string] | false | Specifies if there are any limitations on this seat (eg: Table is in armrest and not on the seat in front) |
Enumerated Values
position: window | middle | aisle
isRestrictedFor: none | children | fragile | all
facing: front | back | herringbone | revHerringbone
type: standard | reclined | lieFlat | miniCabin | crew
Cabin
{
"floor": 1,
"cabinConfiguration": [
"A",
"B",
"C",
null,
"D",
"E",
"F",
"G",
null,
"H",
"I",
"J"
],
"metaInformation": {
"wingPosition": {
"start": 10,
"end": 11
},
"emergencyExits": [
{
"row": 12,
"position": "left",
"relativeToRow": "behind"
}
],
"exits": [
{
"row": 12,
"position": "left",
"relativeToRow": "behind"
}
],
"bulkheads": [
{
"start": 10,
"end": 11
}
],
"auxiliaryElements": {
"ElementPosition": "lavatory"
}
},
"rows": {
"RowNumber": [
{
"number": "10A",
"position": "Window",
"category": "FrontRow",
"available": true,
"isRestrictedFor": "children",
"isEmergencyExit": true,
"isFacingBulkhead": false,
"facing": "front",
"type": "reclined",
"limitations": "armrestTable"
}
]
}
}
Describes an individual cabin on an airplane.
Properties
Name | Type | Required | Description |
---|---|---|---|
floor | integer | false | The floor on which this cabin sits (applicable to multi-floor airplane - 747, A380) |
cabinConfiguration | [string] | true | A template for the cabin where letters represent column identifiers and nulls represent aisles. |
metaInformation | CabinMetaInfo | false | Set of auxiliary items that can be displayed for a complete cabin seat map (i.e.: anything other than seats). |
rows | object | true | Dictionary of seat rows keyed by seat row number |
» RowNumber | [Seat] | false | List of seats that comprise a row of seats. Null values are permitted and represent aisles |
SegmentSeatMap
{
"seatCategories": {
"SeatCategoryId": {
"id": "FrontRow",
"name": "Front row seats",
"price": 1300,
"originalPrice": 1300,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"description": "string",
"mediaLinks": [
"string"
]
}
},
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"cabins": [
{
"floor": 1,
"cabinConfiguration": [
"A",
"B",
"C",
null,
"D",
"E",
"F",
"G",
null,
"H",
"I",
"J"
],
"metaInformation": {
"wingPosition": {
"start": 10,
"end": 11
},
"emergencyExits": [
{
"row": 12,
"position": "left",
"relativeToRow": "behind"
}
],
"exits": [
{
"row": 12,
"position": "left",
"relativeToRow": "behind"
}
],
"bulkheads": [
{
"start": 10,
"end": 11
}
],
"auxiliaryElements": {
"ElementPosition": "lavatory"
}
},
"rows": {
"RowNumber": [
{
"number": "10A",
"position": "Window",
"category": "FrontRow",
"available": true,
"isRestrictedFor": "children",
"isEmergencyExit": true,
"isFacingBulkhead": false,
"facing": "front",
"type": "reclined",
"limitations": "armrestTable"
}
]
}
}
]
}
Describes the Seat Map for a particular FlightSegment
Properties
Name | Type | Required | Description |
---|---|---|---|
seatCategories | object | false | Dictionary of seat categories keyed by SeatCategory Id |
» SeatCategoryId | SeatCategory | false | Describes a category of seats on an airplane. |
aircraft | Aircraft | false | Provides a general description of the aircraft, without any seating layout information |
cabins | [Cabin] | true | List of available cabins for the selected offer/flight |
DisabilityAssistanceAncillary
{
"id": "WCHR",
"name": "Wheelchair",
"description": "string",
"price": 1000,
"originalPrice": 1000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"mediaLinks": [
"string"
],
"passengers": [
"SH1"
],
"segments": "BA0112-LHR-AMS"
}
Describes a Disability assistance ancillary available for a particular flight.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this DisabilityAssistance |
name | string | true | Display name for this disability assistance ancillary |
description | string | false | Detailed description of this disability assistance, if available |
price | integer | true | Price of disability item in the lowest denominator of the offer's currency |
originalPrice | integer | false | Price of disability assistance item without any discount in the lowest denominator of the offer's currency |
priceBreakdown | [CostElement] | false | Breakdown of the price that identifies the base cost and the applicable taxes and surcharges applied, if any. |
mediaLinks | [string] | false | List of URLs that point to media describing this disability assistance (images, videos, etc.) |
passengers | [string] | true | List of passenger Ids that can purchase this ancillary |
segments | [string] | true | List of FlightSegment Ids for which this ancillary is available |
ServiceAncillary
{
"id": "SERVICE_1",
"name": "string",
"description": "string",
"mediaLinks": [
"string"
],
"price": 0,
"originalPrice": 0,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"purchaseLimitations": {
"purchaseQuantity": 1,
"requiredOnAllSegments": true,
"incompatibleWith": [
"BAG2, BAG3"
],
"combineWith": [
"BAG4"
]
},
"passengers": [
"SH1"
],
"segments": [
"BA0112-LHR-AMS"
]
}
Describes a service that can be purchased together with a booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this ancillary |
name | string | true | Display name for this ancillary |
description | string | false | Description of ancillary, if available. |
mediaLinks | [string] | false | List of URLs that point to media describing this ancillary (images, videos, etc.) |
price | integer | true | The price of this ancillary in the lowest denominator of the context currency |
originalPrice | integer | false | The price of this ancillary is without any discount in the lowest denominator of the context currency |
priceBreakdown | [CostElement] | false | Breakdown of the price that identifies the base cost and the applicable taxes and surcharges applied, if any. |
purchaseLimitations | PurchaseLimits | false | Describes a set of limitations for purchasing an ancillary item (incl. sports equipment), per passenger |
passengers | [string] | true | List of passenger Ids that can purchase this ancillary |
segments | [string] | true | List of FlightSegment Ids for which this ancillary is available |
ShopAncillariesResponse
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"bags": {
"BagAncillaryId": {
"id": "BAG1",
"name": "string",
"description": "string",
"characteristics": {
"size": [
"10x10x20in",
"22x22x44cm"
],
"weight": [
"23kg",
"12lbs"
]
},
"mediaLinks": [
"string"
],
"price": 0,
"originalPrice": 1300,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"purchaseLimitations": {
"purchaseQuantity": 1,
"requiredOnAllSegments": true,
"incompatibleWith": [
"BAG2, BAG3"
],
"combineWith": [
"BAG4"
]
},
"passengers": [
"SH1"
],
"segments": [
"BA0112-LHR-AMS"
]
}
},
"sportsEquipment": {
"SportsEquipmentId": {
"id": "BAG1",
"name": "string",
"description": "string",
"characteristics": {
"size": [
"10x10x20in",
"22x22x44cm"
],
"weight": [
"23kg",
"12lbs"
]
},
"mediaLinks": [
"string"
],
"price": 0,
"originalPrice": 1300,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"purchaseLimitations": {
"purchaseQuantity": 1,
"requiredOnAllSegments": true,
"incompatibleWith": [
"BAG2, BAG3"
],
"combineWith": [
"BAG4"
]
},
"passengers": [
"SH1"
],
"segments": [
"BA0112-LHR-AMS"
]
}
},
"meals": {
"MealAncillaryId": {
"id": "MEAL1",
"name": "Standard Vegetarian Meal",
"description": "string",
"price": 1000,
"originalPrice": 1000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"mediaLinks": [
"string"
],
"passengers": [
"SH1"
],
"segments": "BA0112-LHR-AMS"
}
},
"seatMap": {
"FlightSegmentId": {
"seatCategories": {
"SeatCategoryId": {
"id": "FrontRow",
"name": "Front row seats",
"price": 1300,
"originalPrice": 1300,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"description": "string",
"mediaLinks": [
"string"
]
}
},
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"cabins": [
{
"floor": 1,
"cabinConfiguration": [
"A",
"B",
"C",
null,
"D",
"E",
"F",
"G",
null,
"H",
"I",
"J"
],
"metaInformation": {
"wingPosition": {
"start": 10,
"end": 11
},
"emergencyExits": [
{
"row": 12,
"position": "left",
"relativeToRow": "behind"
}
],
"exits": [
{
"row": 12,
"position": "left",
"relativeToRow": "behind"
}
],
"bulkheads": [
{
"start": 10,
"end": 11
}
],
"auxiliaryElements": {
"ElementPosition": "lavatory"
}
},
"rows": {
"RowNumber": [
{
"number": "10A",
"position": "Window",
"category": "FrontRow",
"available": true,
"isRestrictedFor": "children",
"isEmergencyExit": true,
"isFacingBulkhead": false,
"facing": "front",
"type": "reclined",
"limitations": "armrestTable"
}
]
}
}
]
}
},
"disabilityAssistance": {
"DisabilityAssistanceAncillaryId": {
"id": "WCHR",
"name": "Wheelchair",
"description": "string",
"price": 1000,
"originalPrice": 1000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"mediaLinks": [
"string"
],
"passengers": [
"SH1"
],
"segments": "BA0112-LHR-AMS"
}
},
"services": {
"ServiceId": {
"id": "SERVICE_1",
"name": "string",
"description": "string",
"mediaLinks": [
"string"
],
"price": 0,
"originalPrice": 0,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"purchaseLimitations": {
"purchaseQuantity": 1,
"requiredOnAllSegments": true,
"incompatibleWith": [
"BAG2, BAG3"
],
"combineWith": [
"BAG4"
]
},
"passengers": [
"SH1"
],
"segments": [
"BA0112-LHR-AMS"
]
}
},
"loungeAccess": {
"LoungeAccessId": {
"id": "SERVICE_1",
"name": "string",
"description": "string",
"mediaLinks": [
"string"
],
"price": 0,
"originalPrice": 0,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"purchaseLimitations": {
"purchaseQuantity": 1,
"requiredOnAllSegments": true,
"incompatibleWith": [
"BAG2, BAG3"
],
"combineWith": [
"BAG4"
]
},
"passengers": [
"SH1"
],
"segments": [
"BA0112-LHR-AMS"
]
}
},
"currency": {
"code": "GBP",
"decimals": 2
}
}
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
bags | object | false | Dictionary of bag ancillaries for this offer, keyed by BagAncillary Id |
» BagAncillaryId | BagAncillary | false | Describes a baggage ancillary (incl. sports equipment) |
sportsEquipment | object | false | Dictionary of sports equipment ancillaries for this offer, keyed by BagAncillary Id |
» SportsEquipmentId | BagAncillary | false | Describes a baggage ancillary (incl. sports equipment) |
meals | object | false | Dictionary of meals for this offer, keyed by MealAncillary Id |
» MealAncillaryId | MealAncillary | false | Describes a Meal ancillary available for a particular flight. |
seatMap | object | false | Dictionary of SegmentSeatMap objects keyed by FlightSegment id |
» FlightSegmentId | SegmentSeatMap | false | Describes the Seat Map for a particular FlightSegment |
disabilityAssistance | object | false | Dictionary of disability assistance for this offer, keyed by DisabilityAssistanceAncillary Id |
» DisabilityAssistanceAncillaryId | DisabilityAssistanceAncillary | false | Describes a Disability assistance ancillary available for a particular flight. |
services | object | false | Dictionary of service objects keyed by ServiceAncillary id |
» ServiceId | ServiceAncillary | false | Describes a service that can be purchased together with a booking. |
loungeAccess | object | false | Dictionary of lounge access objects keyed by ServiceAncillary id |
» LoungeAccessId | ServiceAncillary | false | Describes a service that can be purchased together with a booking. |
currency | Currency | false | Describes a standard currency. All amounts used by Kyte will be expressed as the currency's lowest denominator to avoid rounding issues. Whenever displaying a value to the end-user, always divide by 10^decimals to get a floating point value in the currency's regular value. |
shopBundlesRequest
{
"offerIds": [
"string"
]
}
Properties
Name | Type | Required | Description |
---|---|---|---|
offerIds | [string] | true | Limited to one offerId that should be passed to get bundles. |
Offer1
{
"id": "string",
"owner": "string",
"expiration": "2020-08-19T08:20:00.000Z",
"priceGuaranteeExpiration": "2020-08-19T08:20:00.000Z",
"totalPrice": 11000,
"currency": {
"code": "GBP",
"decimals": 2
},
"passengers": [
{
"id": "string",
"type": "adult",
"price": 11000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
]
}
],
"fares": {
"FareId": {
"id": "string",
"name": "Euro Traveller",
"segments": [
"BA1234"
],
"passengers": [
"SH1"
],
"description": [
"string"
],
"fareClass": "Y",
"fareBasisCode": "YV3KO/Y",
"cabinType": "economy",
"fareType": [
"flexible",
"negociated"
]
}
}
}
Describes an offer for a particular Itinerary (list of Journey
s, as specified in the ShopFlights
request)
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this BundleOffer |
owner | string | true | IATA two letter code identifying the airline that owns this Bundle offer. |
expiration | string(date) | true | The expiration date for this offer. Attempting to book this bundle offer in a short window after expiry might succeed, but without any guarantees, as airline inventory availability is not assured after this time |
priceGuaranteeExpiration | string(date) | false | The moment after which price for this bundle offer is not guaranteed anymore (even if booked, but not yet paid). |
totalPrice | integer | true | The total price of this bundle offer (including taxes), expressed in the currency's lowest denominator |
currency | Currency | true | Describes a standard currency. All amounts used by Kyte will be expressed as the currency's lowest denominator to avoid rounding issues. Whenever displaying a value to the end-user, always divide by 10^decimals to get a floating point value in the currency's regular value. |
passengers | [PricedPassenger] | true | List of passengers contained in this bundle offer, with individual prices |
fares | object | true | Dictionary of fares in this bundle offer (key is the Fare 's id, while value is the actual Fare ) |
» FareId | Fare | false | Describes a fare category, the segment(s) it applies to and it's conditions. |
ShopBundleResponse
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"offers": {
"OfferId": {
"id": "string",
"owner": "string",
"expiration": "2020-08-19T08:20:00.000Z",
"priceGuaranteeExpiration": "2020-08-19T08:20:00.000Z",
"totalPrice": 11000,
"currency": {
"code": "GBP",
"decimals": 2
},
"passengers": [
{
"id": "string",
"type": "adult",
"price": 11000,
"priceBreakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
]
}
],
"fares": {
"FareId": {
"id": "string",
"name": "Euro Traveller",
"segments": [
"BA1234"
],
"passengers": [
"SH1"
],
"description": [
"string"
],
"fareClass": "Y",
"fareBasisCode": "YV3KO/Y",
"cabinType": "economy",
"fareType": [
"flexible",
"negociated"
]
}
}
}
}
}
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
offers | object | true | Dictionary of Bundle Offer s keyed by their id . |
» OfferId | Offer1 | false | Describes an offer for a particular Itinerary (list of Journey s, as specified in the ShopFlights request) |
OfferDetailsRequest
{
"offerIds": [
"string"
],
"corporateAccounts": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"lastName": "Doe"
}
]
}
Properties
Name | Type | Required | Description |
---|---|---|---|
offerIds | [string] | true | List of offer ids to get details for. Limited to 5 items |
corporateAccounts | [LoyaltyProgramAccount] | false | List of corporate account numbers. These will be automatically matched to the correct airline (if any) and will be passed on to benefit from available perks and offers |
passengers | [BasicPassenger] | false | List of passengers and their associated frequent flyer accounts. This list can be incomplete as the FQTV accounts will be added to existing info and used automatically on subsequent requests. Can be omitted if no FQTV are available. |
Disclosure
{
"text": "string",
"mediaLink": "string"
}
Describes any additional information regarding the terms of an offer.
Properties
Name | Type | Required | Description |
---|---|---|---|
text | string | true | Textual representation of this disclosure |
mediaLink | string | false | URL pointing to a resource providing more information on this disclosure |
DisclosureSet
{
"id": "Disclosure1",
"passengers": [
"SH1"
],
"segments": [
"BA1234"
],
"disclosures": [
{
"text": "string",
"mediaLink": "string"
}
]
}
Describes any additional information regarding the terms of an offer applying to a subset (or possibly all) passengers and segments.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Identifier for this disclosure set |
passengers | [string] | true | List of passengers (ids) to which these disclosures apply |
segments | [string] | true | List of flight segments (ids) to which these disclosures apply |
disclosures | [Disclosure] | true | List of disclosure entries in this disclosure set |
BaggageAllowance
{
"type": "cabin",
"description": "string",
"quantity": 1,
"passengers": [
"SH1"
],
"segments": [
"BA1234"
],
"size": [
"10x10x20in",
"22x22x44cm"
],
"weight": [
"23kg",
"12lbs"
]
}
Describes a set of allowances for a baggage ancillary (incl. sports equipment)
Properties
Name | Type | Required | Description |
---|---|---|---|
type | string | true | Type of baggage allowed |
description | string | false | A description of this baggage allowance |
quantity | integer | true | Number of items of this type allowed per passenger |
passengers | [string] | true | List of passengers (ids) to which this allowance applies |
segments | [string] | true | List of segments (ids) to which this allowance applies |
size | [string] | false | List of size descriptors for this item (when available will be expressed in both metric and imperial |
weight | [string] | false | List of weight descriptors for this items (when available will be expressed in both metric and imperial |
Enumerated Values
type: handBag | cabin | checked | sportsEquipment
OfferDetails
{
"id": "string",
"disclosures": [
{
"id": "Disclosure1",
"passengers": [
"SH1"
],
"segments": [
"BA1234"
],
"disclosures": [
{
"text": "string",
"mediaLink": "string"
}
]
}
],
"baggageAllowance": [
{
"type": "cabin",
"description": "string",
"quantity": 1,
"passengers": [
"SH1"
],
"segments": [
"BA1234"
],
"size": [
"10x10x20in",
"22x22x44cm"
],
"weight": [
"23kg",
"12lbs"
]
}
],
"servicingFees": [
{
"id": "string",
"type": "cancel",
"amount": 100,
"segments": [
"BA123"
],
"remarks": [
"There are no refunds except for any government & airport taxes."
]
}
],
"fares": {
"FareId": {
"id": "string",
"name": "Euro Traveller",
"segments": [
"BA1234"
],
"passengers": [
"SH1"
],
"description": [
"string"
],
"fareClass": "Y",
"fareBasisCode": "YV3KO/Y",
"cabinType": "economy",
"fareType": [
"flexible",
"negociated"
]
}
},
"amount": 0,
"currency": {
"code": "GBP",
"decimals": 2
},
"expiration": "2020-08-19T08:20:00.000Z"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this offer (matches one from the request) |
disclosures | [DisclosureSet] | true | List of disclosure sets for this offer. Each disclosure set applies to one or more segments and one or more passengers |
baggageAllowance | [BaggageAllowance] | true | List of baggage allowances included in this offer |
servicingFees | [ServiceFee] | true | List of servicing fees applied when requesting a change to a booking made from this offer |
fares | object | false | Dictionary of fares in this offer (key is the Fare 's id, while value is the actual Fare ) |
» FareId | Fare | false | Describes a fare category, the segment(s) it applies to and it's conditions. |
amount | integer | false | The total amount of this offer (including taxes), expressed in the currency's lowest denominator |
currency | Currency | false | Describes a standard currency. All amounts used by Kyte will be expressed as the currency's lowest denominator to avoid rounding issues. Whenever displaying a value to the end-user, always divide by 10^decimals to get a floating point value in the currency's regular value. |
expiration | string(date) | false | The expiration date for this offer. Attempting to book this offer in a short window after expiry might succeed, but without any guarantees, as airline inventory availability is not assured after this time |
OfferDetailsResponse
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"details": {
"OfferId": {
"id": "string",
"disclosures": [
{
"id": "Disclosure1",
"passengers": [
"SH1"
],
"segments": [
"BA1234"
],
"disclosures": [
{
"text": "string",
"mediaLink": "string"
}
]
}
],
"baggageAllowance": [
{
"type": "cabin",
"description": "string",
"quantity": 1,
"passengers": [
"SH1"
],
"segments": [
"BA1234"
],
"size": [
"10x10x20in",
"22x22x44cm"
],
"weight": [
"23kg",
"12lbs"
]
}
],
"servicingFees": [
{
"id": "string",
"type": "cancel",
"amount": 100,
"segments": [
"BA123"
],
"remarks": [
"There are no refunds except for any government & airport taxes."
]
}
],
"fares": {
"FareId": {
"id": "string",
"name": "Euro Traveller",
"segments": [
"BA1234"
],
"passengers": [
"SH1"
],
"description": [
"string"
],
"fareClass": "Y",
"fareBasisCode": "YV3KO/Y",
"cabinType": "economy",
"fareType": [
"flexible",
"negociated"
]
}
},
"amount": 0,
"currency": {
"code": "GBP",
"decimals": 2
},
"expiration": "2020-08-19T08:20:00.000Z"
}
}
}
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
details | object | false | Dictionary of OfferDetails objects, keyed by OfferIds |
» OfferId | OfferDetails | false | none |
ConfirmChangeRequest
{
"method": "card",
"amount": 110000,
"transactionType": "moto",
"creditCardInfo": [
{
"number": "4242 4242 4242 4242",
"cardholderName": "John Doe",
"issued": {
"month": 10,
"year": 20
},
"valid": {
"month": 10,
"year": 20
},
"security": "712",
"type": "visa-debit",
"isCorporate": true,
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
},
"owner": "SH1"
}
],
"payerInformation": [
{
"id": "PI1",
"firstName": "Third",
"lastName": "Party",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
}
}
],
"authentication": {
"authValue": "AAABAWFlmQHHHJABjRWWZEEFgFz+=",
"dsTransactionId": "SnBwalksdfmVWdKZExmQllXTlp1UDA=",
"ECI": "05",
"threeDSVersion": "2.0.2",
"transactionStatus": "Y"
},
"challengeResponse": "10934dsf9sd80390",
"responseURL": "https://partner.com/3dsResponse",
"codegen": true
}
Encapsulates all additional information required to confirm ancillary servicing to the booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
method | string | false | Payment method selected for this payment. The payment must match one of the accepted payment methods received on the BookFlight response or one of the synthetic ones if request is part of a 3DS or similar flow |
amount | integer | false | Amount to be charged to this payment method |
transactionType | string | false | Describes the type of payment transaction this request represents. Defaults to online if not specified. online - standard transaction, driven by the traveler. This may trigger a 3DS challenge in certain conditions.moto - Mail Order / Telephone Order transaction, driven by an agent on behalf of the traveler. This will bypass 3DS challenges, but agent/agency assumes resposibility for any fraud challenges. |
creditCardInfo | [CCInfo] | false | One or more credit cards to be charged if the change requires an additional payment from the traveler(s). |
payerInformation | [PayerInfo] | false | List of contact information for third party payers. Add this if payment is done through a card that is not owned by any of the passengers. |
authentication | CardAuthentication | false | Encapsulates data received from a PSP after an authentication request, using a customer's card. This data will allow the airline to charge the card without any further challenges. |
challengeResponse | string | false | Challenge response received from 3DS or PSP verification, if method was set to challengeResponse or PSPVerification |
responseURL | string | false | A valid URL to which an MPI can POST a response to a 3DS v1 verification. Data sent to this URL must be sent back to Kyte in order to complete the payment flow. This must be submitted if airline mandates a 3DSecure payment and card is not exempt |
codegen | boolean | false | In a 3DSecure v1 flow, enable automatic HTML form generation for customer redirect |
Enumerated Values
method: card | agencyCash | voucher | challengeResponse | PSPVerification
transactionType: online | moto
MonetaryValue
{
"amount": 1000,
"currency": {
"code": "GBP",
"decimals": 2
}
}
Represents a standalone amount of money (not attached to a context like an offer or a booking).
Properties
Name | Type | Required | Description |
---|---|---|---|
amount | integer | true | The amount expressed in the currency 's lowest denominator. |
currency | Currency | true | Describes a standard currency. All amounts used by Kyte will be expressed as the currency's lowest denominator to avoid rounding issues. Whenever displaying a value to the end-user, always divide by 10^decimals to get a floating point value in the currency's regular value. |
VoucherInfo
{
"number": "BAUM25AG",
"owner": "BA",
"value": {
"amount": 1000,
"currency": {
"code": "GBP",
"decimals": 2
}
},
"validUntil": "2020-08-19T08:20:00.000Z"
}
Represents a voucher issued by an airline, which can be used to pay for items on a future booking
Properties
Name | Type | Required | Description |
---|---|---|---|
number | string | true | Unique serial number of this voucher |
owner | string | true | IATA Code of the airline that issued this voucher |
value | MonetaryValue | true | Represents a standalone amount of money (not attached to a context like an offer or a booking). |
validUntil | string | false | Expiration date of this voucher, if any. |
ConfirmChangeResponse
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"status": "ok",
"bookings": [
{
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
],
"bookingRef": [
{
"owner": "BA",
"reference": "JHA78B"
}
],
"ticketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"itinerary": {
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
}
},
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisStatus": "missing"
}
],
"ticketDetails": [
{
"type": "eTicket",
"number": "18485748383",
"passengerId": "SH1"
}
],
"pricingBreakdown": [
{
"id": "BAG1",
"category": "fare",
"type": "baseFare",
"price": 0,
"breakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"passengerId": "SH1",
"segments": "BA0440-AMS-LHR",
"name": "Meal"
}
],
"paymentDetails": [
{
"totalAmount": 11000,
"date": "2021-01-10",
"authorization": {
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
}
]
}
],
"vouchers": [
{
"number": "BAUM25AG",
"owner": "BA",
"value": {
"amount": 1000,
"currency": {
"code": "GBP",
"decimals": 2
}
},
"validUntil": "2020-08-19T08:20:00.000Z"
}
]
}
The result of executing a previously estimated change or committing ancillary changes on a booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
status | string | true | Represents the status of the request. |
bookings | [CompleteBooking] | false | List of bookings resulting from the estimated change. Length of list depends on the requested operation and its parameters. A cancellation would not return any bookings unless ticket or itinerary are retained. An exchange would return a single booking, while a split would return two or more bookings. |
vouchers | [VoucherInfo] | false | List of vouchers resulting from requested change, if any. |
Enumerated Values
status: ok | failed
EstimateCancelRequest
{
"retainItinerary": false,
"refundTo": "originalFoP",
"pointsRecipient": {
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"lastName": "Doe"
}
}
A request to estimate the results of cancelling a booking
Properties
Name | Type | Required | Description |
---|---|---|---|
retainItinerary | boolean | false | Specify that itinerary should be retained, keeping the PNR valid. If not specified, defaults to false . This is not compatible with refundTo: retainTicket as it would not have any effect. |
refundTo | string | false | Specifies the user's selection for the a possible refund of the amount paid (if any). If cancelling an order before ticketing, this does not have to be filled. However, if tickets have been issued this must be sent. |
pointsRecipient | BasicPassenger | false | Describes a passenger already registered in the context of an offer or a booking, with additional Frequent Flyer information |
Enumerated Values
refundTo: originalFoP | voucher | retainTicket | points
EstimateCancelResponse
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"status": "ok",
"estimationId": "8kjlka90alauAKjdfkJHAq",
"amount": 6420,
"feeApplied": 100,
"currency": {
"code": "GBP",
"decimals": 2
}
}
Result of an estimation request for cancelling a booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
status | string | true | Represents the status of the request. |
estimationId | string | false | Represents a unique identifier for the estimation returned, if successful. This id is required if continuing the cancellation flow. |
amount | integer | false | Represents the amount to be refunded by the airline, if any. |
feeApplied | integer | false | Represents the service fee that will be deducted from the total booking value, if cancelling. May not be always available. |
currency | Currency | false | Describes a standard currency. All amounts used by Kyte will be expressed as the currency's lowest denominator to avoid rounding issues. Whenever displaying a value to the end-user, always divide by 10^decimals to get a floating point value in the currency's regular value. |
Enumerated Values
status: ok | failed
PassengerServicing
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisData": {
"nationality": "GBR",
"countryOfResidence": "GBR",
"travelDocType": "passport",
"travelDocNumber": "1234566",
"travelDocIssueDate": "2015-10-01",
"travelDocExpiry": "2022-09-30",
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
}
}
}
Describes a passenger with all the data necessary for a booking.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this passenger. This will be supplied by Kyte in the ShopFlightsResponse |
frequentFlyer | [LoyaltyProgramAccount] | false | List of frequent flyer (loyalty) account numbers. These will be automatically matched to the correct airline (if any) and passed on to benefit from available perks and offers. |
firstName | string | false | Passenger's first (given) name |
middleName | string | false | Passenger's middle name, if any. |
lastName | string | false | Passenger's last (family) name |
dateOfBirth | string | false | Date of birth for this passenger. Mandatory for infants and passengers travelling on APIS routes |
gender | string | false | Passenger's gender |
title | string | false | Passenger's title |
contactInformation | ContactInformation | false | Contact information for this passenger. At least one (lead) passenger must provide contact information |
apisData | APISData | false | Describes APIS (Advance Passenger Information System) data for one passenger. |
Enumerated Values
gender: male | female | other | undisclosed | unspecified
title: mr | mrs | ms | miss | master
PassengerServicingRequest
{
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisData": {
"nationality": "GBR",
"countryOfResidence": "GBR",
"travelDocType": "passport",
"travelDocNumber": "1234566",
"travelDocIssueDate": "2015-10-01",
"travelDocExpiry": "2022-09-30",
"address": {
"addressLines": [
"10 Downing Street"
],
"city": "New York",
"postalCode": "123456",
"countryCode": "US"
}
}
}
]
}
Properties
Name | Type | Required | Description |
---|---|---|---|
passengers | [PassengerServicing] | true | List of passengers for changes (additions or removals) |
PassengerServicingUpdate
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"status": "ok",
"booking": {
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
],
"bookingRef": [
{
"owner": "BA",
"reference": "JHA78B"
}
],
"ticketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"itinerary": {
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
}
},
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisStatus": "missing"
}
],
"ticketDetails": [
{
"type": "eTicket",
"number": "18485748383",
"passengerId": "SH1"
}
],
"pricingBreakdown": [
{
"id": "BAG1",
"category": "fare",
"type": "baseFare",
"price": 0,
"breakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"passengerId": "SH1",
"segments": "BA0440-AMS-LHR",
"name": "Meal"
}
],
"paymentDetails": [
{
"totalAmount": 11000,
"date": "2021-01-10",
"authorization": {
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
}
]
}
}
The result of updating passenger details in a booking
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
status | string | true | Represents the status of the request. |
booking | CompleteBooking | false | Encapsulates a booking and all its associated information. |
Enumerated Values
status: ok | failed
RepriceOfferDetailsRequest
{
"offerIds": [
"string"
]
}
Properties
Name | Type | Required | Description |
---|---|---|---|
offerIds | [string] | true | List of reshop offer ids to get details for. Limited to 5 items |
RepriceOfferDetails
{
"id": "string",
"reshopDue": 6420,
"originalAmount": 100,
"newAmount": 100,
"penaltyAmount": 100,
"currency": {
"code": "GBP",
"decimals": 2
},
"baggageAllowance": [
{
"type": "cabin",
"description": "string",
"quantity": 1,
"passengers": [
"SH1"
],
"segments": [
"BA1234"
],
"size": [
"10x10x20in",
"22x22x44cm"
],
"weight": [
"23kg",
"12lbs"
]
}
],
"servicingFees": [
{
"id": "string",
"type": "cancel",
"amount": 100,
"segments": [
"BA123"
],
"remarks": [
"There are no refunds except for any government & airport taxes."
]
}
]
}
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this offer (matches one from the request) |
reshopDue | integer | false | Represents the amount to be paid by passenger or refunded by the airline, if any. |
originalAmount | integer | false | Original amoount |
newAmount | integer | false | New amount after selecting a reshopping offer |
penaltyAmount | integer | false | Penalty amount for order change |
currency | Currency | false | Describes a standard currency. All amounts used by Kyte will be expressed as the currency's lowest denominator to avoid rounding issues. Whenever displaying a value to the end-user, always divide by 10^decimals to get a floating point value in the currency's regular value. |
baggageAllowance | [BaggageAllowance] | true | List of baggage allowances included in this offer |
servicingFees | [ServiceFee] | true | List of servicing fees applied when requesting a change to a booking made from this offer |
RepriceOfferDetailsResponse
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"details": {
"OfferId": {
"id": "string",
"reshopDue": 6420,
"originalAmount": 100,
"newAmount": 100,
"penaltyAmount": 100,
"currency": {
"code": "GBP",
"decimals": 2
},
"baggageAllowance": [
{
"type": "cabin",
"description": "string",
"quantity": 1,
"passengers": [
"SH1"
],
"segments": [
"BA1234"
],
"size": [
"10x10x20in",
"22x22x44cm"
],
"weight": [
"23kg",
"12lbs"
]
}
],
"servicingFees": [
{
"id": "string",
"type": "cancel",
"amount": 100,
"segments": [
"BA123"
],
"remarks": [
"There are no refunds except for any government & airport taxes."
]
}
]
}
}
}
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
details | object | false | Dictionary of RepriceOfferDetails objects, keyed by Reshop OfferIds |
» OfferId | RepriceOfferDetails | false | none |
PassengerAncillaryRequest
{
"id": "BAG1",
"type": "bag",
"action": "remove",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
Describes a request to add or remove ancillaries for a passenger.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Id of the actual ancillary this entry refers to. In case this is a seat, this will be its number |
type | string | true | Type of ancillary this entry refers to. The id of this request must be present in the list of available ancillaries of this type, for this booking / flight / passenger |
action | string | false | Type of action this request represents. If not provided add is assumed |
quantity | integer | false | Number of ancillary items to be added to this booking. This will be ignored if not applicable (ie.: seats) or if a limitation prevents adding sufficient items (case in which an error will be issued and no action will be performed on the booking). |
flightSegments | [string] | true | List of FlightSegment Ids for which this ancillary should be modified (in case of bags and sports equipment). An error will be thrown if multiple flight segments are provided for a seat ancillary. |
Enumerated Values
type: bag | sportsEquipment | meal | seat | service | bundle | disabilityAssistance | loungeAccess
action: add | remove
ConfiguredPassengerRequest
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"action": "remove",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
Describes a list of changes to the ancillaries of the specified passenger.
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | Unique identifier for this passenger, as received from the Shop Flights or Retrive Booking calls |
ancillaries | [PassengerAncillaryRequest] | true | List of ancillary change requests for this passenger. |
BookAncillariesRequest
{
"passengers": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"action": "remove",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
]
}
Properties
Name | Type | Required | Description |
---|---|---|---|
passengers | [ConfiguredPassengerRequest] | true | List of passengers with requests for ancillary changes (additions or removals) |
RetrieveBookingRequest
{
"requestedInfo": [
"PNR",
"ticketInfo",
"itinerary"
],
"forceRefresh": true
}
Properties
Name | Type | Required | Description |
---|---|---|---|
requestedInfo | [string] | true | Data retrieved for a particular type might reference other data for a separate type (which will not be retrieved unless requested). For example requesting Ancillaries will reference info from PassengerDetails . Accepted values are: PNR , passengerDetails , itinerary , ancillaries , ticketInfo , paymentInfo , pricingBreakdown , fees |
forceRefresh | boolean | false | Force a complete retrieval from the Airline's system in order to have guaranteed data consistency |
RetrieveBookingResponse
{
"errors": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"warnings": [
{
"code": "string",
"message": "string",
"source": "string",
"contextId": "string"
}
],
"possibleActions": {
"The available action's URL": {
"string": "string"
}
},
"actionList": {
"The available action's URL": {
"type": "optional",
"timeLimit": "2024-10-20",
"requestedItems": {
"string": "optional"
}
}
},
"booking": {
"id": "string",
"status": "valid",
"ticketStatus": "notTicketed",
"totalCost": 110000,
"currentBalance": 10000,
"currency": {
"code": "GBP",
"decimals": 2
},
"ancillaries": [
{
"id": "SH1",
"ancillaries": [
{
"id": "BAG1",
"type": "bag",
"name": "Meal",
"status": "added",
"quantity": 2,
"flightSegments": [
"BA0122-LHR-AMS"
]
}
]
}
],
"fees": [
{
"id": "SH1",
"fees": [
{
"id": "CO",
"type": "carbonOffset",
"name": "CO",
"status": "added",
"quantity": 2
}
]
}
],
"acceptedPaymentMethods": [
"card",
"agencyCash"
],
"acceptedCards": {
"corporate": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
},
"personal": {
"string": [
{
"amount": 149,
"type": "fixed",
"minPrice": 1000,
"maxPrice": 4000
}
]
}
},
"ticketTimeLimit": "2020-08-19T08:20:00.000Z",
"mentions": [
{
"code": "TK-BA0112-LHR-AMS",
"text": "Flight BA0112 from LHR to AMS departure hour changed to 08:10",
"references": [
{
"id": "BA0112-LHR-AMS",
"type": "flightSegment"
}
]
}
],
"bookingRef": [
{
"owner": "BA",
"reference": "JHA78B"
}
],
"ticketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"itinerary": {
"legs": {
"JourneyLegId": {
"id": "string",
"departureAirport": "string",
"arrivalAirport": "string",
"flightSolutions": [
"string"
]
}
},
"flightSolutions": {
"FlightSolutionId": {
"id": "string",
"segments": [
{
"id": "string",
"marketingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"operatingCarrier": {
"code": "BA",
"name": "British Airways",
"alliance": "OneWorld"
},
"flightNumber": "0112",
"duration": 0,
"aircraft": {
"code": "744",
"name": "Boeing 747 jet"
},
"departure": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"arrival": {
"airport": {
"code": "LHR",
"name": "London Heathrow",
"city": {
"code": "LON",
"name": "London"
}
},
"terminal": "B",
"date": "2020-10-05",
"time": "10:30",
"changeOfDay": 1
},
"status": "ok"
}
],
"totalDuration": 0,
"journeyLegId": "string"
}
}
},
"passengers": [
{
"id": "P1",
"frequentFlyer": [
{
"airlineCode": "BA",
"number": "JH9992A"
}
],
"firstName": "John",
"middleName": "Andrew",
"lastName": "Doe",
"dateOfBirth": "1990-08-15",
"gender": "male",
"title": "mr",
"contactInformation": {
"email": "john.doe@provider.com",
"phone": [
{
"countryCode": "+40",
"number": "123456789",
"type": "Home"
}
]
},
"apisStatus": "missing"
}
],
"ticketDetails": [
{
"type": "eTicket",
"number": "18485748383",
"passengerId": "SH1"
}
],
"pricingBreakdown": [
{
"id": "BAG1",
"category": "fare",
"type": "baseFare",
"price": 0,
"breakdown": [
{
"code": "GST",
"type": "tax",
"amount": 1195,
"description": "General Sales Tax"
}
],
"passengerId": "SH1",
"segments": "BA0440-AMS-LHR",
"name": "Meal"
}
],
"paymentDetails": [
{
"totalAmount": 11000,
"date": "2021-01-10",
"authorization": {
"method": "card",
"methodDetail": "Card ending in 1234",
"timestamp": "2024-10-20",
"number": "194580982"
}
}
]
}
}
Properties
Name | Type | Required | Description |
---|---|---|---|
errors | [KyteError] | false | List of errors encountered while processing the request |
warnings | [KyteWarning] | false | List of warnings issued while processing this request |
possibleActions | object | false | none |
» The available action's URL | object | false | none |
»» string | string | false | none |
actionList | object | false | none |
» The available action's URL | PossibleAction | false | The specifications of the above mentioned possible actions |
booking | CompleteBooking | false | Encapsulates a booking and all its associated information. |