Skip Navigation

Booking Management API

Trip Management
Booking
REST API
Travel Agency

What is it?

The Booking Management API lets you manage your Sabre reservations/bookings in a more efficient way by providing a normalized set of services that manage both Sabre Passenger Name Records (PNRs) and Sabre Orders. These implementations are simplified to ensure that both experts and novices alike can integrate and adopt Sabre APIs in the most seamless way possible.

Currently, this API contains six methods:

  • Get Booking
  • Create Booking
  • Cancel Booking
  • Modify Booking
  • Void Flight Tickets
  • Check Flight Tickets
  • Refund Flight Tickets

Get Booking

Get Booking provides a normalized view of reservations by combining both PNRs and orders.

This is achieved by executing internal calls to the PNR and Order domains respectively, and then consolidating the information into a single normalized response.

Additionally, this API sources extra content from other Sabre internal domains (Ticketing, Pricing, etc.) to provide a holistic view of Sabre reservations and to support traveler-oriented use cases (for example, "can I change my ticket?").

Create Booking

Create Booking provides a single, unified service to create a booking for different content sources (NDC, ATPCO, LCC, CSL hotels, cars and legacy GDS hotels). This is achieved by executing internal calls to the PNR, Order, Pricing, Hotel and Car domains respectively. The newly created Order and/or Sabre Passenger Name Record (PNR) information is then consolidated into a single normalized response.

Cancel Booking

Cancel Booking provides a single, unified service to cancel the entire reservation, or a part of the reservation, irrespective of what it contains (flight, hotel, car, others) and where it is created (NDC, Sabre, CSL). This includes an option to void or refund corresponding electronic documents for flights (ATPCO & NDC).

Modify Booking

Modify Booking provides a single, unified service to modify a booking for different content sources. The current release supports modification of the following types of content:

  • CSL hotel bookings
  • group bookings
  • ATPCO content (limited functionality)
  • NDC content (limited functionality)

To update booking details, Modify Booking executes separate internal calls to appropriate domains (for example PNRs, hotels). Modified Sabre Passenger Name Record (PNR) information is then consolidated into a single normalized response by an internal Get Booking call.

Void Flight Tickets

Void Flight Tickets provides a single, unified service to void a list of electronic documents (ATPCO). This includes electronic tickets and electronic miscellaneous documents (EMD).

Check Flight Tickets

Check Flight Tickets provides a single, unified service to verify voidability and refundability for a list of electronic documents (ATPCO) or the entire reservation using a confirmationId (ATPC & NDC). The ability to check for refunds is currently limited to electronic tickets.

Refund Flight Tickets

Refund Flight Tickets provides a single, unified service to refund a list of electronic documents (ATPCO). The service allows you to specify refund qualifiers for electronic tickets.

Why use it?

With the recent introduction of new content types such as NDC and CSL in the Sabre system, the Booking Management API will call the appropriate API for managing reservations/bookings within the Sabre portfolio.

Get Booking

  • Simplifies the booking retrieval process by removing the need to use individual/granular APIs to retrieve a reservation.
  • Retrieves a normalized view of the reservation regardless of the content sources (PNR, NDC Order).
  • Provides additional data relevant for travelers (e.g. fare rules) as well as data elements that are not stored in the Sabre PNR (e.g. ticket details and more).
  • Retrieves reservation in a stateless way.

Create Booking

  • Simplifies the booking process by removing the need to use individual/granular APIs to create a reservation.
  • Completes the reservation regardless of the air content sources (PNR, NDC Order).
  • Completes the reservation for the hotel content.
  • Completes the reservation for the car content.
  • Retrieves a normalized view of the new booking regardless of the content sources (PNR, NDC Order).
  • Adds capability to specify a different target city (Pseudo City Code, or PCC) for booking creation.
  • Generates a booking in a stateless way.

Cancel Booking

  • Simplifies the cancellation process by removing the need to use individual/granular APIs to cancel a reservation.
  • Cancels any content from the reservation.
  • Cancels the entire reservation.
  • Voids or refunds corresponding electronic documents for flights.
  • Cancels the reservation in a stateless way.
  • Adds capability to specify a different target city (Pseudo City Code, or PCC) for the cancellation of the PNR.
  • Adds capability to define the API's behavior when encountering errors (halt on error or allow partial cancel).
  • Allows the assignment of a printer profile or dedicated printers for the transaction.

Modify Booking

  • Simplifies the modification process by removing the need to use individual/granular APIs to modify a reservation.
  • Validates the current state of the booking prior to introducing any changes.
  • Allows the execution of multiple operation types (add/modify/delete) in a single call.
  • Modifies bookings with CSL hotel content, group bookings, and bookings with ATPCO or NDC content (limited functionality).
  • Retrieves a normalized view of the modified booking regardless of content sources.
  • Adds the capability to specify a different target city (Pseudo City Code, or PCC) for booking modification.
  • Modifies a booking in a stateless way.

Void Flight Tickets

  • Simplifies the ticket cancellation process by removing the need to use individual/granular APIs to void an electronic document.
  • Cancels multiple electronic documents (up to 12) from one reservation in a single call.
  • Voids electronic documents and update the reservation in a stateless way.
  • Adds capability to specify a different target city (Pseudo City Code, or PCC) and post-processing options (email or queue placement) for the refund of the electronic document.
  • Adds capability to define the API's behavior when encountering errors (halt on error or allow partial cancel).
  • Allows the assignment of a printer profile or dedicated printers for the transaction.

Check Flight Tickets

  • Simplifies the ticket validation process by removing the need to use individual/granular APIs to validate options for void or refund of an electronic document.
  • Checks for multiple electronic documents (up to 12) from one reservation in a single call.
  • Adds capability to specify a different target city (Pseudo City Code, or PCC) for the validation of the electronic document.
  • Supports refund qualifiers to price specific refund options.
  • Adds capability to define the API's behavior when encountering errors (halt on error or allow partial cancel).

Refund Flight Tickets

  • Simplifies the ticket refund process by removing the need to use individual/granular APIs to refund an electronic document.
  • Refunds multiple electronic documents (up to 12) from one reservation in a single call.
  • Refunds electronic documents and updates the reservation in a stateless way.
  • Adds capability to specify a different target city (Pseudo City Code, or PCC) and post-processing options (email or queue placement) for the refund of the electronic document.
  • Supports refund qualifiers to price specific refund options.
  • Adds capability to define the API's behavior when encountering errors (halt on error or allow partial cancel).
  • Allows the assignment of a printer profile or dedicated printers for the transaction.

How it works

Get Booking

Get Booking executes the following steps to display a booking:

  1. Retrieves reservation data by the given confirmationID (PNR locator and Order ID).
  2. Calls proper downline services to retrieve additional data.
  3. Maps retrieved data to a normalized data model.

Create Booking

Create Booking executes the following steps to complete the creation of a booking:

  1. Populates traveler information based on the request payload or profile data.
  2. Calls proper downline booking creation services.
  3. Creates an NDC air order and/or a traditional PNR for ATPCO, LCC air content.
  4. Creates a hotel booking irrespective of content (CSL or legacy GDS).
  5. Creates a car booking by the use of a booking key.
  6. Maps the newly created booking data to a normalized data model.

Cancel Booking

Cancel Booking executes the following steps in order to complete the cancellation process of a specific product:

  1. Retrieves reservation data by the given confirmationID (PNR locator and Order ID).
  2. Validates the cancel request against reservation content.
  3. Calls proper cancellation downline services.
  4. Finalizes/commits the transaction in the event of a success or partial success.
  5. Retrieves booking details after cancellation (optional).

Additionally, the following steps are executed when using VOID for flightTicketOperation:

  1. Retrieves all electronic documents contained in the PNR or Order.
  2. Matches the coupons of each document to the correct segment(s).
  3. Validates the coupon status.
  4. Validates the void period.
  5. Calls the Void Air Ticket downline service (includes a recovery strategy in case of failure).
  6. Finalizes/commits the transaction in the event of a success or partial success.
  7. Continues with the steps above.

Additionally, the following steps are executed when using REFUND for flightTicketOperation:

  1. Validates the coupon status.
  2. Validates the void period.
  3. Supports additional refund qualifiers.
  4. Calls the Automated Refunds downline service (includes a recovery strategy in case of failure).
  5. Finalizes/commits the transaction in the event of a success or partial success.

Additionally, the following step is executed when using offerItemId:

  • Forwards the ID to the orders/cancel request

Notes:

  • This is applicable only to NDC orders.
  • The ID determines which action should be taken on the tickets related to the order.

Modify Booking

Modify Booking executes the following steps to modify a booking:

  1. Retrieves reservation data for the requested confirmationID (PNR locator).
  2. Calls proper downline services to retrieve booking data.
  3. Validates booking status based on the given bookingSignature.
  4. Determines the scope of changes based on the before and after content.
  5. Calls proper downline services to update booking data.
  6. Maps the modified booking data to a normalized data model.

Note: Modification prerequisites include Get Booking call to verify the booking status by means of bookingSignature property.

Void Flight Tickets

  1. Retrieves all electronic documents by the given electronic Document Number or confirmationId.
  2. Validates the coupon status.
  3. Validates the void period.
  4. Calls the Void Air Ticket downline service (includes a recovery strategy in case of failure).
  5. Finalizes/commits the transaction in the event of a success or partial success.

Check Flight Tickets

  1. Retrieves all electronic documents by the given electronic Document Number or confirmationId.
  2. Validates the coupon status.
  3. Validates the void period.
  4. Validates refundablity and amounts.
  5. Supports additional refund qualifiers for ATPCO tickets.
  6. Calls the Void Air Ticket downline service (includes a recovery strategy in case of failure).
  7. Calls the Automated Refunds downline service (includes a recovery strategy in case of failure).

Refund Flight Tickets

  1. Retrieves all electronic documents by the given electronic Document Number or confirmationId.
  2. Validates the coupon status.
  3. Validates the void period.
  4. Supports additional refund qualifiers.
  5. Calls the Automated Refunds downline service (includes a recovery strategy in case of failure).
  6. Finalizes/commits the transaction in the event of a success or partial success.

How to use

Start with an authentication token

You must provide an authentication token to all endpoints within the Booking Management API. Tokens can be generated in two ways:

  • Using the Create Access Token API for scenarios with a stateless token (ATK). Once you obtain a successful response from the API (TokenCreateRS), locate the BinarySecurityToken element, which contains an ATK token.
  • Using the Create Session service for scenarios with a stateful token (ATH). The response from this session generation service (SessionCreateRS) also contains the BinarySecurityToken element with an authorization token.

For more information, go to the blog post titled A Deep Dive into E2E NDC Reservation Management with the Booking Management API.

Get Booking

Display booking

To ensure successful booking retrieval, the request should contain the below information:

Add confirmationId (PNR Locator or Order Id) in the Get Booking request:

{
  "confirmationId": "XXXXXX"
}

Display booking and validate surname

To ensure successful booking retrieval with surname validation, the request should contain the below information:

  1. Add confirmationId (PNR Locator or Order Id).
  2. Add surname of the lead/first traveler.

Note: The API will validate if the surname matches the data in the reservation before retrieving it.

{
  "confirmationId": "XXXXXX",
  "surname": "Smith"
}

Display selected elements of the booking

To ensure successful booking retrieval with a limited number of elements in the response, the request should contain the below information:

  1. Add confirmationId (PNR Locator or Order Id).
  2. Add returnOnly element with a list of parameter values you want to retrieve.

Note: The full list of possible returnOnly values can be found in the OpenAPI specification under the Reference Documentation tab.

{
  "confirmationId": "XXXXXX",
  "returnOnly":[
    "TRAVELERS", "FLIGHTS"
  ]
}

Create Booking

Create booking for NDC content type (Order)

To ensure a successful booking, pass a valid offerID, selectedOfferItems, and the traveler id returned by the Offer Price API.

{

  "flightOffer": {
    "offerId": "{{price_offer_id}}",
    "selectedOfferItems": [
      "{{price_offer_item_id}}"
    ]
  },
  "travelers": [
    {
      "id": "{{price_passenger_id}}",
      "givenName": "John",
      "surname": "Kowalski",
      "birthDate": "1970-01-23",
      "passengerCode": "ADT",
      "customerNumber": "1234567"
    }
  ],
  "contactInfo":
  {
    "emails": [
      "travel@sabre.com"
    ],
    "phones": [
      "123456"
    ]
  }
}

The successful booking will contain a booking reference with a confirmationId (PNR Locator) and a normalized view of the reservation will be provided in the API response.

Create booking for ATPCO content

Note: By following this step, you can also request to have the booking priced and its price validated against the desired pricing.

Pass valid traveler information and the full details of each flight:

{
  "agency": {
    "address": {
      "name": "John Smith",
      "street": "1230 Ellen Ave, apt 10",
      "city": "Dallas",
      "stateProvince": "TX",
      "postalCode": "75063",
      "countryCode": "US",
      "freeText": "John Smith\n1230 Ellen Ave, apt 10\nDallas, TX 75063\nUS"
    },
    "agencyCustomerNumber": "1234567",
    "ticketingPolicy": "TODAY"
  },
  "travelers": [
    {
      "givenName": "John",
      "surname": "Smith",
      "birthDate": "1970-01-23",
      "passengerCode": "ADT"
    },
    {
      "givenName": "Mary",
      "surname": "Smith",
      "birthDate": "2014-01-23",
      "passengerCode": "CNN"
    }
  ],
  "contactInfo": {
    "emails": [
      "travel@sabre.com",
      "travel2@sabre.com"
    ],
    "phones": [
      "+123456"
    ]
  },
  "flightDetails": {
    "flights": [
      {
        "flightNumber": 463,
        "airlineCode": "EY",
        "fromAirportCode": "MEL",
        "toAirportCode": "AUH",
        "departureDate": "2021-03-30",
        "departureTime": "16:55",
        "bookingClass": "Y",
        "marriageGroup": false,
        "flightStatusCode": "NN"
      },
      {
        "flightNumber": 462,
        "airlineCode": "EY",
        "fromAirportCode": "AUH",
        "toAirportCode": "MEL",
        "departureDate": "2021-04-15",
        "departureTime": "09:00",
        "bookingClass": "Y",
        "marriageGroup": false,
        "flightStatusCode": "NN"
      }
    ],
    "flightPricing": [
      {
        "priceComparisons": [
          {
            "desiredAmount": "5300.00",
            "comparisonType": "INCREASE_BY_AMOUNT",
            "amount": "30.00"
          },
          {
            "desiredAmount": "5300.00",
            "comparisonType": "DECREASE_BY_AMOUNT",
            "amount": "30.00"
          }
        ]
      }
    ]
  },
  "payment": {
    "billingAddress": {
      "name": "John Smith",
      "street": "1230 Ellen Ave, apt 10",
      "city": "Dallas",
      "stateProvince": "TX",
      "postalCode": "75063",
      "countryCode": "US"
    }
  }
}

The successful booking will contain a booking reference with a confirmationId (PNR Locator) and a normalized view of the reservation will be provided in the API response.

Create booking for hotel content

To ensure a successful booking, pass a valid bookingKey returned by the Hotel Price Check API.

{
  "agency": {
    "address": {
      "name": "John Smith",
      "street": "1230 Ellen Ave, apt 10",
      "city": "Dallas",
      "stateProvince": "TX",
      "postalCode": "75063",
      "countryCode": "US",
      "freeText": "John Smith\n1230 Ellen Ave, apt 10\nDallas, TX 75063\nUS"
    },
    "agencyCustomerNumber": "1234567",
    "ticketingPolicy": "TODAY"
  },
  "travelers": [
    {
      "givenName": "John",
      "surname": "Kowalski",
      "passengerCode": "ADT"
    },
        {
      "givenName": "Junior",
      "surname": "Kowalski",
      "birthDate": "2021-01-23",
      "passengerCode": "INF",
      "age": 3
    }
  ],
  "contactInfo": {
    "emails": [
      "travel@sabre.com",
      "travel2@sabre.com"
    ],
    "phones": [
      "+123456"
    ]
  },
  "hotel": {
    "bookingKey": "{{bookingKey}}",
    "rooms": [
      {
        "travelerIndices": [
          1,
          2
        ]
      }
    ],
    "paymentPolicy": "DEPOSIT",
    "formOfPayment": 1
  },
  "payment": {
    "formsOfPayment": [
      {
        "type": "PAYMENTCARD",
        "cardTypeCode": "VI",
        "cardNumber": "4487971000000006",
        "cardSecurityCode": "123",
        "expiryDate": "2022-10",
        "cardHolder": {
          "givenName": "John",
          "surname": "Smith",
          "email": "john@smith.family.priv",
          "phone": "+1-555-123-4567",
          "address": {
            "street": "1230 Ellen Ave, apt 10",
            "city": "Dallas",
            "stateProvince": "TX",
            "postalCode": "75063",
            "countryCode": "US"
          }
        }
      }
    ]
  }
}

The successful booking will contain a booking reference with a confirmationId (PNR Locator) and a normalized view of the reservation will be provided in the API response.

Create booking for hotel content, while using traveler profiles

To ensure a successful booking, pass a valid bookingKey returned by the Hotel Price Check API.

{
  "profiles": [
    {
      "uniqueId": "231448659",
      "profileTypeCode": "TVL",
      "domainId": "G7RE"
    },
        {
      "uniqueId": "231448673",
      "profileTypeCode": "TVL",
      "domainId": "G7RE"
    }
  ],
  "agency": {
    "address": {
      "name": "John Smith",
      "street": "1230 Ellen Ave, apt 10",
      "city": "Dallas",
      "stateProvince": "TX",
      "postalCode": "75063",
      "countryCode": "US",
      "freeText": "John Smith\n1230 Ellen Ave, apt 10\nDallas, TX 75063\nUS"
    }
  },
  "hotel": {
    "bookingKey": "{{bookingKey}}",
    "rooms": [
      {
        "travelerIndices": [
          1,
          2
        ]
      }
    ],
    "paymentPolicy": "DEPOSIT",
    "formOfPayment": 1
  },
  "payment": {
    "formsOfPayment": [
      {
        "type": "AGENCY_NAME",
        "agencyAddress": {
          "name": "John Smith",
          "street": "1230 Ellen Ave, apt 10",
          "city": "Dallas",
          "stateProvince": "TX",
          "postalCode": "75063",
          "countryCode": "US"
        }
      }
    ]
  }
}

The successful booking will contain a booking reference with a confirmationId (PNR Locator) and a normalized view of the reservation will be provided in the API response.

Create booking for ancillaries (ATPCO)

To ensure a successful booking, pass valid ancillary details returned by the Get Ancillary Offers API.

{
    "agency": {
        "address": {
            "name": "John Smith",
            "street": "1230 Ellen Ave, apt 10",
            "city": "Dallas",
            "stateProvince": "TX",
            "postalCode": "75063",
            "countryCode": "US",
            "freeText": "John Smith\n1230 Ellen Ave, apt 10\nDallas, TX 75063\nUS"
        },
        "agencyCustomerNumber": "1234567",
        "ticketingPolicy": "TODAY"
    },
    "travelers": [
        {
            "givenName": "John",
            "surname": "Smith",
            "birthDate": "1970-01-23",
            "passengerCode": "ADT",
            "ancillaries": [
                {
                    "reasonForIssuance": "BAGGAGE",
                    "reasonForIssuanceSubcode": "0C2",
                    "airlineCode": "EY",
                    "subcode": "05Z",
                    "electronicMiscellaneousDocumentType": "FLIGHT_COUPON_ASSOCIATED",
                    "basePrice": "528.00",
                    "currencyCode": "USD",
                    "groupCode": "BG",
                    "flightIndices": [
                        1
                    ]
                }
            ]
        },
        {
            "givenName": "Mary",
            "surname": "Smith",
            "birthDate": "1970-01-23",
            "passengerCode": "ADT"
        }
    ],
    "contactInfo": {
        "emails": [
            "travel@sabre.com",
            "travel2@sabre.com"
        ],
        "phones": [
            "+123456"
        ]
    },
    "flightDetails": {
        "flights": [
            {
                "flightNumber": 78,
                "airlineCode": "EY",
                "fromAirportCode": "AMS",
                "toAirportCode": "AUH",
                "departureDate": "2021-11-19",
                "departureTime": "20:25",
                "bookingClass": "V",
                "flightStatusCode": "NN"
            },
            {
                "flightNumber": 77,
                "airlineCode": "EY",
                "fromAirportCode": "AUH",
                "toAirportCode": "AMS",
                "departureDate": "2021-11-26",
                "departureTime": "09:00",
                "bookingClass": "V",
                "flightStatusCode": "NN"
            }
        ],
        "flightPricing": [
            {}
        ]
    },
    "payment": {
        "billingAddress": {
            "name": "John Smith",
            "street": "1230 Ellen Ave, apt 10",
            "city": "Dallas",
            "stateProvince": "TX",
            "postalCode": "75063",
            "countryCode": "US"
        }
    }
}

The successful booking will contain a booking reference with a confirmationId (PNR Locator) and a normalized view of the reservation will be provided in the API response.

Create booking for car content

To ensure a successful booking, pass a valid bookingKey returned by the Vehicle Price Check API.

{
  "agency": {
    "address": {
      "name": "John Smith",
      "street": "1230 Ellen Ave, apt 10",
      "city": "Dallas",
      "stateProvince": "TX",
      "postalCode": "75063",
      "countryCode": "US",
      "freeText": "John Smith\n1230 Ellen Ave, apt 10\nDallas, TX 75063\nUS"
    },
    "agencyCustomerNumber": "1234567",
    "ticketingPolicy": "TODAY"
  },
  "travelers": [
    {
      "givenName": "John",
      "surname": "Kowalski",
      "passengerCode": "ADT"
    },
        {
      "givenName": "Junior",
      "surname": "Kowalski",
      "birthDate": "2021-01-23",
      "passengerCode": "INF",
      "age": 3
    }
  ],
  "contactInfo": {
    "emails": [
      "travel@sabre.com",
      "travel2@sabre.com"
    ],
    "phones": [
      "+123456"
    ]
  },
  "car": {
    "bookingKey": "{{carBookingKey}}"
  },
  "payment": {
    "formsOfPayment": [
      {
        "type": "PAYMENTCARD",
        "cardTypeCode": "VI",
        "cardNumber": "4487971000000006",
        "cardSecurityCode": "123",
        "expiryDate": "2022-10",
        "cardHolder": {
          "givenName": "John",
          "surname": "Smith",
          "email": "john@smith.family.priv",
          "phone": "+1-555-123-4567",
          "address": {
            "street": "1230 Ellen Ave, apt 10",
            "city": "Dallas",
            "stateProvince": "TX",
            "postalCode": "75063",
            "countryCode": "US"
          }
        }
      }
    ]
  }
}

The successful booking will contain a booking reference with a confirmationId (PNR Locator) and a normalized view of the reservation will be provided in the API response.

Cancel Booking

A few examples of using Cancel Booking are mentioned below. Additional examples can be found in the OpenAPI specification under the Reference Documentation tab and the Help tab.

Cancel specific flight/hotels/cars

To ensure successful cancellation of specific flights/hotels/cars, your request should contain the below information:

  1. Add confirmationId (PNR Locator or Order Id).
  2. Add the list of cars/flights/hotels:
    • itemId can be retrieved from GetBookingResponse.(flights|cars|hotels).itemId or GetReservationRS/Reservation/PassengerReservation/Segments/Segment/Product/@id.
      {
        "confirmationId": "XXXXXX",
        "cars": [
          {
            "itemId": "1"
          }
        ],
        "flights": [
          {
            "itemId": "2"
          }
        ],
        "hotels": [
          {
            "itemId": "12"
          }
        ]
      }

Cancel whole reservation

To ensure successful cancellation of an entire reservation, your request should contain the below information:

  1. Add confirmationId (PNR Locator or Order Id).
  2. Add and set the cancelAll flag to true ("cancelAll": true).
    {
      "confirmationId": "XXXXXX",
      "cancelAll": true
    }

Cancel whole reservation and sign change with specific entry

To ensure successful cancellation of an entire reservation and signature with the desired entry, your request should contain the below information:

  1. Add confirmationId (PNR Locator or Order Id).
  2. Add and set the cancelAll flag to true ("cancelAll": true).
  3. Add receivedFrom.
    {
      "confirmationId": "XXXXXX",
      "cancelAll": true,
      "receivedFrom": "DOE"
    }

Cancel specific segments by ID or sequence

To ensure successful cancellation of specific flights/hotels/cars, your request should contain the below information:

  1. Add confirmationId (PNR Locator or Order Id).
  2. Add the list of segments:
    • id can be retrieved from GetBookingResponse.flights(cars/hotels).itemId or GetReservationRS/Reservation/PassengerReservation/Segments/Segment/Product/@id.
    • sequence can be retrieved from GetReservationRS/Reservation/PassengerReservation/Segments/Segment/Product/@sequence
      {
        "confirmationId": "XXXXXX",
        "segments": [
          {
            "id": "1",
            "sequence": 2
          }
        ]
      }

Cancel and retrieve booking

To ensure successful cancellation and to retrieve the state of the booking after cancellation, your request should contain the below information:

  1. Add confirmationId (PNR Locator or Order Id).
  2. Add and set the retrieveBooking flag to true ("retrieveBooking": true).
    {
      "confirmationId": "XXXXXX",
      "retrieveBooking": true,
      "flights": [
        {
          "itemId": "2"
        }
      ]
    }

Cancel with "allow partial cancel" error policy

To ensure a successful cancellation with the option to allow a partial cancellation (continue with processing in the event of an error), your request should contain the below information:

  1. Add confirmationId (PNR Locator or Order Id).
  2. Add and set the errorHandlingPolicy flag to ALLOW_PARTIAL_CANCEL ("errorHandlingPolicy": "ALLOW_PARTIAL_CANCEL").
    {
      "confirmationId": "XXXXXX",
      "errorHandlingPolicy": "ALLOW_PARTIAL_CANCEL",
      "flights": [
        {
          "itemId": "2"
        }
      ],
      "hotels": [
        {
          "itemId": "12"
        }
      ]
    }

Cancel whole reservation and void corresponding tickets

To ensure successful cancellation of a complete reservation, the request should contain the below information:

  1. Add confirmationId (PNR Locator or Order Id).
  2. Add and set the cancelAll flag to true ("cancelAll": "true").
  3. Add and set flightTicketOperation to VOID ("flightTicketOperation": "VOID").
    {
      "confirmationId": "XXXXXX",
      "cancelAll": true,
      "flightTicketOperation": "VOID"
    }

Cancel whole reservation and refund corresponding tickets

To ensure successful cancellation of a complete reservation, the request should contain the below information:

  1. Add confirmationId (PNR Locator or Order Id).
  2. Add and set the cancelAll flag to true ("cancelAll": "true").
  3. Add and set flightTicketOperation to REFUND ("flightTicketOperation": "REFUND").
    {
      "confirmationId": "XXXXXX",
      "cancelAll": true,
      "flightTicketOperation": "REFUND"
    }

Cancel specific flight and void corresponding tickets

To ensure successful cancellation of a specific flight within a complete reservation, the request should contain the below information:

  1. Add confirmationId (PNR Locator or Order Id).
  2. Add the list of flights:
    • itemId can be retrieved from GetBookingResponse.(flights|cars|hotels).itemId or
    • GetReservationRS/Reservation/PassengerReservation/Segments/Segment/Product/@id.
  3. Add and set flightTicketOperation to VOID ("flightTicketOperation": "VOID").
    {
      "confirmationId": "XXXXXX",
      "flightTicketOperation": "VOID",
      "flights": [
        {
          "itemId": "2"
        }
      ]
    }

Cancel specific flight and refund corresponding tickets

To ensure successful cancellation of a specific flight within a complete reservation, the request should contain the below information:

  1. Add confirmationId (PNR Locator or Order Id).
  2. Add the list of flights:
    • itemId can be retrieved from GetBookingResponse.(flights|cars|hotels).itemId or GetReservationRS/Reservation/PassengerReservation/Segments/Segment/Product/@id.
  3. Add and set flightTicketOperation to REFUND ("flightTicketOperation": "REFUND").
    {
      "confirmationId": "XXXXXX",
      "flightTicketOperation": "REFUND",
      "flights": [
        {
          "itemId": "2"
        }
      ]
    }

Cancel whole reservation and take action on tickets (NDC)

To ensure successful cancellation of a complete reservation and take action on the tickets (void or refund), the request should contain the below information:

  1. Add confirmationId (PNR Locator or Order Id).
  2. Add a cancelAll flag and set it to true ("cancelAll": true).
  3. Add the offerItemId ("offerItemId": "cb7778589bcbklg7tkkp8sdo50"):
    • offerItemId can be retrieved from CheckTicketsResponse.cancelOffer.offerItemId or
    • /v1/offers/reshop/cancelOrder form response.reshopOffers.offerId.
      {
        "confirmationId": "XXXXXX",
        "cancelAll": true,
        "offerItemId": "cb7778589bcbklg7tkkp8sdo50"
      }

Modify Booking

Prerequisite: To modify a booking, begin by using the Get Booking method to retrieve booking details.

Modify booking with CSL hotel content (re-shop not required)

To ensure successful booking modification, the request should contain the following information:

  1. Add a confirmationId (PNR Locator) and bookingSignature to verify the booking status and prevent the application of any unexpected changes.
  2. Add hotel details under the before (original booking details) and after (desired booking details) objects to determine the scope of the change.
  3. Add the itemId of the hotel to modify.
  4. Ensure that traveler data (inside the travelers object) is provided and associated with the hotel booking (travelerIndices, leadTravelerIndex, numberOfGuests) to fulfill requirements regarding lead guest information.
  5. Add paymentPolicy information.

The code snippet below presents a sample request to modify a booking with CSL hotel details that does not require a re-shop operation. The change consists in the addition of a special instruction.

{
    "bookingSignature": "189465b006b1d1d9d7894b34ca442244da03422ed465af83a693915a8c84fccb22beea36e697d156311a2bf962ae4f946afffabde85ba03e5908b95cd943ee0e",
    "confirmationId": "QSGXZJ",
    "before": {
        "creationDetails": {
            "agencyIataNumber": "63211116"
        },
        "hotels": [
            {
                "itemId": "26",
                "checkInDate": "2022-05-20",
                "checkOutDate": "2022-05-23",
                "leadTravelerIndex": 1,
                "room": {
                    "travelerIndices": [
                        1
                    ]
                },
                "numberOfGuests": 1,
                "paymentPolicy": "DEPOSIT"
            }
        ],
        "travelers": [
            {
                "givenName": "JOHN",
                "surname": "SMITH",
                "passengerCode": "ADT",
                "emails": [
                    "JOHN@SMITH.FAMILY.PRIV"
                ],
                "phones": [
                    {
                        "number": "+123456"
                    }
                ]
            }
        ],
        "payments": {
            "formsOfPayment": [
                {
                    "type": "PAYMENTCARD",
                    "cardTypeCode": "VI",
                    "cardNumber": "4487971000000006",
                    "expiryDate": "2022-10"
                }
            ]
        }
    },
    "after": {
        "creationDetails": {
            "agencyIataNumber": "63211116"
        },
        "hotels": [
            {
                "itemId": "26",
                "checkInDate": "2022-05-20",
                "checkOutDate": "2022-05-23",
                "leadTravelerIndex": 1,
                "room": {
                    "travelerIndices": [
                        1
                    ]
                },
                "numberOfGuests": 1,
                "specialInstructions": "Seaside view",
                "paymentPolicy": "DEPOSIT"
            }
        ],
        "travelers": [
            {
                "givenName": "JOHN",
                "surname": "SMITH",
                "passengerCode": "ADT",
                "emails": [
                    "JOHN@SMITH.FAMILY.PRIV"
                ],
                "phones": [
                    {
                        "number": "+123456"
                    }
                ]
            }
        ],
        "payments": {
            "formsOfPayment": [
                {
                    "type": "PAYMENTCARD",
                    "cardTypeCode": "VI",
                    "cardNumber": "4487971000000006",
                    "expiryDate": "2022-10"
                }
            ]
        }
    }
}

A successful operation results in no errors. If specified in the request, a normalized view of the reservation is retuned in the response. In the above scenario, a new property "specialInstructions": "Seaside view" is added to the hotel booking.

Modify booking with CSL hotel content (re-shop required)

To ensure successful booking modification, the request should contain the following information:

  1. Add a confirmationId (PNR Locator) and bookingSignature to verify the booking status and prevent the application of any unexpected changes.
  2. Add hotel details under the before (original booking details) and after (desired booking details) objects to determine the scope of the change.
  3. Add the itemId of the hotel to modify.
  4. Ensure that traveler data (inside the travelers object) is provided and associated with the hotel booking (travelerIndices, leadTravelerIndex, numberOfGuests) to fulfill requirements regarding lead guest information.
  5. Add paymentPolicy information.
  6. Add a valid bookingKey for any change that requires a re-shop step.

The example below demonstrates a request to modify the check-out date outside the original date range:

{
    "bookingSignature": "cb80557edb226827c227552c5422917194b66dec245c2042be72194df14596ea09db91e17a0e7e785dbc04a659dc75638381dd12193c76315648c121898ecbc8",
    "confirmationId": "IKMXZJ",
    "before": {
        "creationDetails": {
            "agencyIataNumber": "63211116"
        },
        "hotels": [
            {
                "itemId": "28",
                "checkInDate": "2022-05-20",
                "checkOutDate": "2022-05-23",
                "leadTravelerIndex": 1,
                "room": {
                    "travelerIndices": [
                        1
                    ]
                },
                "numberOfGuests": 1,
                "paymentPolicy": "GUARANTEE"
            }
        ],
        "travelers": [
            {
                "givenName": "JOHN",
                "surname": "SMITH",
                "passengerCode": "ADT",
                "emails": [
                    "JOHN@SMITH.FAMILY.PRIV"
                ],
                "phones": [
                    {
                        "number": "+123456"
                    }
                ]
            }
        ],
        "payments": {
            "formsOfPayment": [
                {
                    "type": "PAYMENTCARD",
                    "cardTypeCode": "VI",
                    "cardNumber": "4487971000000006",
                    "expiryDate": "2022-10"
                }
            ]
        }
    },
    "after": {
        "creationDetails": {
            "agencyIataNumber": "63211116"
        },
        "hotels": [
            {
                "itemId": "28",
                "bookingKey": "ebce2667-fb06-488c-bb57-91eac3b0fadb",
                "checkInDate": "2022-05-20",
                "checkOutDate": "2022-05-25",
                "leadTravelerIndex": 1,
                "room": {
                    "travelerIndices": [
                        1
                    ]
                },
                "numberOfGuests": 1,
                "paymentPolicy": "GUARANTEE"
            }
        ],
        "travelers": [
            {
                "givenName": "JOHN",
                "surname": "SMITH",
                "passengerCode": "ADT",
                "emails": [
                    "JOHN@SMITH.FAMILY.PRIV"
                ],
                "phones": [
                    {
                        "number": "+123456"
                    }
                ]
            }
        ],
        "payments": {
            "formsOfPayment": [
                {
                    "type": "PAYMENTCARD",
                    "cardTypeCode": "VI",
                    "cardNumber": "4487971000000006",
                    "expiryDate": "2022-10"
                }
            ]
        }
    }
}

A successful operation results in no errors. If specified in the request, a normalized view of the reservation is returned in the response. In the above scenario, the value of "checkOutDate": "2022-05-25" is updated in the hotel booking.

Modify group booking

To ensure successful booking modification, the request should contain the following information:

  1. Add a confirmationId (PNR Locator) and bookingSignature to verify the booking status and prevent the application of any unexpected changes.
  2. Add booking details under the before (original booking details) and after (desired booking details) objects to determine the scope of the change.
  3. Ensure that traveler data provided inside the travelers object is associated with the group (isGrouped: true).

The following snippet shows an example of a modification of traveler data in a group booking:

{
    "bookingSignature": "4e92cae5ba6832bc58339a06eca05831745ab29a4cde764552638be6a53c6a88f82759074b1eb7eeb6d708a6b355c665781bbeec243e6b21708fa43fc900a4ce",
    "confirmationId": "LSIECT",
    "before": {
        "travelers": [
            {
                "givenName": "JOE",
                "surname": "DOE",
                "type": "ADULT",
                "passengerCode": "ADT",
                "isGrouped": true,
                "phones": [
                    {
                        "number": "817-555-1212",
                        "label": "H"
                    }
                ]
            },
            {
                "givenName": "JANE",
                "surname": "DOE",
                "type": "ADULT",
                "passengerCode": "ADT",
                "isGrouped": true
            },
            {
                "givenName": "JILL",
                "surname": "DOE",
                "type": "INFANT",
                "passengerCode": "INF",
                "isGrouped": true
            }
        ]
    },
    "after": {
        "travelers": [
            {
                "givenName": "JOE",
                "surname": "DOE",
                "type": "ADULT",
                "passengerCode": "ADT",
                "isGrouped": true,
                "phones": [
                    {
                        "number": "817-555-1212",
                        "label": "H"
                    }
                ]
            },
            {
                "givenName": "JANE",
                "surname": "DOE",
                "type": "ADULT",
                "passengerCode": "ADT",
                "isGrouped": true
            },
            {
                "givenName": "MARY",
                "surname": "DOE",
                "type": "ADULT",
                "passengerCode": "ADT",
                "isGrouped": true
            },
            {
                "givenName": "JILL",
                "surname": "DOE",
                "type": "INFANT",
                "passengerCode": "INF",
                "isGrouped": true
            }
        ]
    }
}

A successful operation results in no errors. If specified in the request, a normalized view of the reservation is returned in the response. In this scenario, a modified travelers list (with a new traveler added: Mary Doe) is stored in the group booking.

Modify booking with ATPCO content

To ensure successful booking modification, the request should contain the following information:

  1. Add a confirmationId (PNR Locator) and bookingSignature to verify the booking status and prevent the application of any unexpected changes.
  2. Add booking details under the before (original booking details) and after (desired booking details) objects to determine the scope of the change.

The sample below demonstrates a request to modify traveler details in an ATPCO booking:

{
    "bookingSignature": "3b993288fc63b036a3234725f0ed8b1b34b503fea03ee5aa21734aaced90ecbecc53843af06817bf73c461c9d9b3f4ddc563b82d6b252dda1a0b6b2066b8f0a8",
    "confirmationId": "LTXXVC",
    "before": {
        "travelers": [
            {
                "givenName": "JOHN",
                "surname": "DOE",
                "type": "ADULT",
                "passengerCode": "ADT",
                "emails": [
                    "JOHN.DOE@EMAIL.PRIV"
                ],
                "phones": [
                    {
                        "number": "1-555-123-4567",
                        "label": "M"
                    }
                ]
            },
            {
                "givenName": "MARY",
                "surname": "DOE",
                "type": "ADULT",
                "passengerCode": "ADT"
            }
        ]
    },
    "after": {
        "travelers": [
            {
                "givenName": "JACK",
                "surname": "BROWN",
                "type": "ADULT",
                "passengerCode": "ADT",
                "emails": [
                    "JACK.BROWN@EMAIL.PRIV"
                ],
                "phones": [
                    {
                        "number": "1-333-9877",
                        "label": "B"
                    }
                ]
            },
            {
                "givenName": "MARY",
                "surname": "DOE",
                "type": "ADULT",
                "passengerCode": "ADT"
            }
        ]
    }
}

A successful operation results in no errors. If specified in the request, a normalized view of the reservation is returned in the response. In this scenario, a modified travelers list (with an updated traveler: Jack Brown) is stored in the booking.

Modify booking with NDC content

To ensure successful booking modification, the request should contain the following information:

  1. Add a confirmationId (PNR Locator or Order ID) and bookingSignature to verify the booking status and prevent the application of any unexpected changes.
  2. Add booking details under the before (original booking details) and after (desired booking details) objects to determine the scope of the change.

The snippet below shows an example of a request to modify traveler details in an NDC booking:

{
    "bookingSignature": "86650a9438e9c1419ae5ba88cb4d9e9dacd6f3ea0e3cac283982270d202000bc24f4b324dda4bf09da4ace952c8b90afa31495f37e801bb38eacbe77ff87fff3",
    "confirmationId": "MRBPPC",
     "before": {
        "travelers": [
            {
                "givenName": "John",
                "surname": "Smith",
                "birthDate": "1970-01-23",
                "type": "ADULT",
                "passengerCode": "ADT",
                "emails": [
                    "john@sabre.com"
                ],
                "phones": [
                    {
                        "number": "231412512"
                    }
                ]
            },
            {
                "givenName": "Jill",
                "surname": "Smith",
                "birthDate": "1971-02-23",
                "type": "ADULT",
                "passengerCode": "ADT",
                "emails": [
                    "jill@sabre.com"
                ],
                "phones": [
                    {
                        "number": "123456"
                    }
                ]
            }
        ]
    },
    "after": {
        "travelers": [
            {
                "givenName": "John",
                "surname": "Smith",
                "birthDate": "1970-01-23",
                "type": "ADULT",
                "passengerCode": "ADT",
                "emails": [
                    "john@sabre.com"
                ],
                "phones": [
                    {
                        "number": "231412512"
                    }
                ]
            },
            {
                "givenName": "Jill",
                "surname": "Smith",
                "birthDate": "1971-02-23",
                "type": "ADULT",
                "passengerCode": "ADT",
                "phones": [
                    {
                        "number": "7878787878"
                    }
                ]
            }
        ]
    }
}

A successful operation results in no errors. If specified in the request, a normalized view of the reservation is returned in the response. In this scenario, updated travelers details (with contact information modified for Jill Smith) are stored in the booking.

Void Flight Tickets

A few examples of using Void Flight Tickets are mentioned below. Additional examples can be found in the OpenAPI specification under the Reference Documentation tab and the Help tab.

Cancel single electronic document with "allow partial cancel" error policy

To ensure successful cancellation of a document, the request should contain the below information:

  1. Add tickets (13 digit electronic document number) or confirmationId (PNR Locator or Order Id).
  2. Add and set the errorHandlingPolicy flag to ALLOW_PARTIAL_CANCEL ("errorHandlingPolicy": "ALLOW_PARTIAL_CANCEL").
    {
      "tickets": [
        "6071237616558"
      ],
      "errorHandlingPolicy": "ALLOW_PARTIAL_CANCEL"  
    }

The electronic document was voided and the reservation was updated:

TKT/TIME LIMIT                                                  
  1.T-06AUG-AB12*A12                                            
  2.TE 6071237616558-AT ABC/D AB12*A12 0427/06AUG*              
    TV 6071237616558-AT  *VOID* AB12*A12 0428/06AUG*E           

Cancel multiple electronic documents with "halt on error" error policy

To ensure successful cancellation of multiple documents, the request should contain the below information:

  1. Add tickets (13 digit electronic document number).
  2. Add and set the errorHandlingPolicy flag to HALT_ON_ERROR ("errorHandlingPolicy": "HALT_ON_ERROR").
    {
      "tickets": [
        "6071237616558",
        "6074567616559",
        "6077897616560"
      ],
      "errorHandlingPolicy": "ALLOW_PARTIAL_CANCEL"  
    }

The electronic documents were voided and the reservation was updated:

TKT/TIME LIMIT                                                  
  1.T-06AUG-AB12*A12                                            
  2.TE 6071237616558-AT ABC/D AB12*A12 0427/06AUG*   
  3.TE 6074567616559-AT ABC/D AB12*A12 0427/06AUG* 
  4.TE 6077897616560-AT ABC/D AB12*A12 0427/06AUG* 
    TV 6071237616558-AT  *VOID* AB12*A12 0429/06AUG*E    
    TV 6074567616559-AT  *VOID* AB12*A12 0429/06AUG*E   
    TV 6077897616560-AT  *VOID* AB12*A12 0429/06AUG*E   

Check Flight Tickets

A few examples of using Check Flight Tickets are mentioned below. Additional examples can be found in the OpenAPI specification under the Reference Documentation tab and the Help tab.

Check single electronic document with additional refund qualifier

To ensure successful validation of a document, the request should contain the below information:

  1. Add tickets (13 digit electronic document number) or confirmationId (PNR Locator or Order Id).
  2. Add and define the refundQualifiers as required. For example, you can override the cancel fee by setting overrideCancelFee ("overrideCancelFee": "100.00").
    {
      "tickets": [
        {
          "number": "0017489825123",
          "refundQualifiers": {
            "overrideCancelFee": "100.00"
          }
        }
      ]
    }

The API will now check voidability and refundability. For the refund flow, the refund qualifiers will be applied:

{
    "tickets": [
        {
            "number": "0017489825123",
            "isVoidable": false,
            "isrefundable": true,
            "refundTotals": {
                "subtotal": "498.00",
                "taxes": "87.13",
                "total": "585.13",
                "currencyCode": "USD"
            }
        }
    ]
}  

Check multiple electronic documents with different refund qualifiers

To ensure successful validation of a document, the request should contain the below information:

  1. Add tickets (13 digit electronic document number).
  2. Add and define the refundQualifiers as required for each ticket.
    {
        "tickets": [
            {
                "number": "0017489825123",
                "refundQualifiers": {
                    "overrideCancelFee": "100.00"
                }
            },
            {
                "number": "017489825124",
                "refundQualifiers": {
                    "overrideTaxes": [
                        {
                            "taxCode": "XF",
                            "taxAmount": "5.00",
                            "airportTaxBreakdowns": [
                                {
                                    "taxAmount": "5.5",
                                    "airportCode": "DFW"
                                }
                            ]
                        },
                        {
                            "taxCode": "SQ",
                            "taxAmount": "15.00"
                        }
                    ],
                    "waiverCode": "12345ABCD"
                }
            }
        ]
    }

The electronic documents were validated and the refund options priced:

{
    "tickets": [
        {
            "number": "017489825123",
            "isVoidable": false,
            "isrefundable": true,
            "refundTotals": {
                "subtotal": "498.00",
                "taxes": "87.13",
                "total": "585.13",
                "currencyCode": "USD"
            }
        },
        {
            "number": "017489825124",
            "isVoidable": false,
            "isrefundable": true,
            "refundTotals": {
                "subtotal": "598.00",
                "taxes": "87.13",
                "total": "685.13",
                "currencyCode": "USD"
            }
        }
    ]
}

Refund Flight Tickets

An example of using Refund Flight Tickets is mentioned below. Additional examples can be found in the OpenAPI specification under the Reference Documentation tab and the Help tab.

Refund single electronic document without refund qualifiers

To ensure successful refund of a document, the request should contain the below information:

  1. Add tickets (13 digit electronic document number) or confirmationId (PNR Locator or Order Id).
  2. Add and set the errorHandlingPolicy flag to HALT_ON_ERROR ("errorHandlingPolicy": "HALT_ON_ERROR").
    {
        "tickets": [
            {
                "number": "6077531704032"
            }
        ],
        "errorHandlingPolicy": "HALT_ON_ERROR"
    }

The API will now check for refundability. For a successful validation and refund, the API will return the refundTotals per ticket:

{
    "tickets": [
        {
            "number": "6077531704032",
            "refundTotals": {
                "subtotal": "498.00",
                "taxes": "87.13",
                "total": "585.13",
                "currencyCode": "USD"
            }
        }
    ]
}  

Ticket was refunded:

ELECTRONIC TICKET RECORD                          CRS CODE:0011
INV:                  CUST:                          PNR:ABCDEF
TKT:6077531704032     ISSUED:02FEB21   PCC:G7RE   IATA:9998999
NAME:PIPPEN/SCOTTY                                             
FORM OF PAYMENT                        FCI: 0                  
1    CASH                                                      
CPN  A/L  FLT  CLS DATE   BRDOFF  TIME  ST F/B             STAT
1    EY   2     Y  10JUN  FRAAUH 1120A  OK YLF1DE          RFND
                                NVB:10JUN   NVA:10JUN   BAG:35K

and the booking was updated accordingly:

TKT/TIME LIMIT
  1.T-02FEB-G7RE*AWX
  2.TE 6077531704032-AT PIPPE/S G7RE*AWX 0321/02FEB*
  3.TE 6077531704033-AT JORDA/M G7RE*AWX 0321/02FEB*
  4.TR 6077531704032-AT PIPPE/S G7RE*AWX 0438/02FEB*I