NAV Navigation
HTTP JavaScript Node.JS Python Ruby Go

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

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 JourneyLegs, FlightSolutions and Offers 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
email 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 error
AUTH_ERROR - Authentication failed or access to resource not allowed
UNSUPPORTED_FEATURE - Feature is currently unsupported by Kyte
PAYLOAD_VALIDATION_ERROR - The payload received does not comply with the schema
UNSUPPORTED_JOURNEY_CONFIG - Carrier does not support this journey configuration. Usually happens for LCCs who only do one-way or round-trip
MALFORMED_CONTEXT_ID - Context Id (offerId or bookingId) is malformed
INVALID_PAX_CONFIG - Passenger configuration is not valid - more than one infant per adult, or unaccompanied children
SEARCH_ERROR - An error occurred while searching for a flight
AIRLINE_SERVICE_ERROR - Airline service returned an internal error of sorts
SERVICE_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 ago
OFFER_EXPIRED - Offer was found in system, but it has expired
FQTV_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 airline
ticketed - 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 airline
ticketed - 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 FlightSegmentIds 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 Journeys, 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 JourneyLegs keyed by their id
» JourneyLegId JourneyLeg false none
flightSolutions object true Dictionary of FlightSolutions 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 Offers 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 Journeys, 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 included
in 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 JourneyLegs keyed by their id
» JourneyLegId JourneyLeg false none
flightSolutions object true Dictionary of FlightSolutions 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 Offers 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 Journeys, 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 JourneyLegs 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 nulls 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 Journeys, 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 Offers keyed by their id.
» OfferId Offer1 false Describes an offer for a particular Itinerary (list of Journeys, 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.