Extensions

The Travel Curious API provides additional fields called extensions in different locations for data that does not have its own attribute in the spec. Extensions allow the Reseller and Operator to provide additional data to Travel Curious or to exchange required information between the connecting partners.

The example below includes a cancel policy on the product level:

product extensions cancelPolicyDescription : "my cancel policy"

This second example shows additional traveler information that could be required for a partner on the booking level:

booking traveller extensions "(operatorname)-skiBootsSize": "(operatorname)-skiClothingSize":
Info

Please note that Travel Curious refers to extensions as “ext" or "extensions" in the JSON. They both share the exact same function

Important Note

Travel Curious highly recommends that Resellers implement all of the extensions in order to get the required data from the Operator / Ticketing System to have the complete set of information needed for bookings and tickets/vouchers.

Even if they are not required for the first partner connection, additional development can be avoided when onboarding a new partner requiring additional information.

Beta Keys

Travel Curious makes use of extensions to map useful information that has not been added to the spec yet, or is still being defined as beta-(key). These keys are identified with the prefix, beta- so Travel Curious can keep track of them and their data.

Travel Curious will continue to use the name beta keys until there is a pressing reason for a name change of a key or the fields are added as attributes to the spec. However, we will be notifying our partners who have implemented them well in advance.

Examples of beta keys

  • beta-deliveryMethod

  • beta-availabilityPricingType

  • beta-ticketLocations

Info

Please use all extensions with the beta- prefix, note that the data and keys will vary depending on the partner integration.

If no additional data is communicated in the extensions, the field can be empty or hidden.

Internal Keys

x-(key) Internal keys are keys that Travel Curious uses internally when we develop either the Reseller or OBS system and need to pass data along that is for internal use only. These keys will all be prefixed with x- to identify them as internal keys.

During development of a connection to the Reseller or Operator / Ticketing System, Travel Curious uses keys labelled x-(key)to internally pass data between the different systems.

Example of x keys

  • x-http202-enabled

Info

Please note that the x-(key) is for Travel Curious's internal use only and should not be exposed to our partners, and we are currently working on achieving this.

Warning

Please do not develop the keys with an x- prefix as they will be excluded from distribution!

It is important to note that Travel Curious already uses the x- prefix for internal keys, no Operator or Reseller should ever create an extension starting with x- or it will be excluded from distribution.

Partner Specific Keys

In some integrations, Operators and Resellers need to share information that is very specific to them. This data can be shared using (partner).(key). These are the keys created specifically for this partner integration and will not be used in any other integration; therefore, Travel Curious will not add them to their spec, which is why the beta keys cannot be used.

Examples of partner keys

  • disney.marketRegions

  • disney.discountGroups

  • ticketmaster.safetix

No Prefix Keys

Any other data the Operator and Reseller want to share under the extensions can be added with any value as a no-prefix key. It needs to be discussed between the partners how to handle this data.

Warning

Please note that Travel Curious do not need to keep track of no prefix extensions apart from these:

  • supplier.reference

  • resellerReference

  • redemptionInstructions

Info

If an Operator and Reseller would like to use extensions to pass information we recommend they put their name at the start of the key

Examples of no prefix keys

  • (operatorname)-pickupLocation

  • (operatorname)-pickupTime

  • (operatorname)-pickupId

  • (resellername)-dietryRequirements

Locations for Extensions

Travel Curious has been using extensions for some time; they are already available in the Reseller API. The tables below give an overview of the corresponding fields in both the Reseller and the Operator APIs, with the links to the specs.

Suppliers


Operator API v2

Reseller API v1.2

RESPONSE

supplier.extensions New

supplier.extensions Already Existed in Spec

Example

Resellers can see a list of the Disney Suppliers divided by property brands (DWD, DLR…) and Points of Sale under the extensions.

suppliers ext: "disney-distributorName": "Reseller", "disney-marketRegions": "DOM_WHOLESALE", "disney-pointOfSaleName": "Reseller - WDW"

Products


Operator API v2

Reseller API v1.2

RESPONSE

product.extensions New

product.extensions Already Existed in Spec

Examples

Resellers connected to Disney can use the details in the extensions to identify if it is Theme Park, Special Event or Waterpark and the product duration.

products extensions "disney-productDuration": "10", "disney-productType": "themepark"

Resellers connected to Operators via Ticketmaster can see the following:

  • beta-availabilityPricingType: informs the Reseller if it is an attraction, seating or best available product

  • beta-localStartDate: this field identifies each date of a multiple date product

  • redemptionInstructions: this field holds information related to the venue and product to be considered by the customer for entry

products extensions "beta-availabilityPricingType": "SEATING", "beta-localStartDate": "2022-11-01", "beta-generalInfo": "An Evening with Whitney- All Ages Donny Osmond and Donny VIP Experience- All Ages Each person must have a ticket.. This is a non-smoking showroom . No cameras of any kind or outside food/drink. ", "redemptionInstructions": "The venue reserves the right to implement security procedures designed to protect the experience for all of our customers."

Options / Rates


Operator API v2

Reseller API v1.2

RESPONSE

option.extensions New

rate.extensions Already Existed in Spec

Example

Resellers connected to Disney see Supplier and product information, along with rate level details, in an accumulative form. The example below shows the buffer days applied to the ticket selected

rates "ext": { "disney-bookingBufferDays": "0", "disney-discountGroups": "STD_GST", "disney-marketRegions": "APAC_OTA,ASIA_TICKETONLY,CAN_WHOLESALE,CH_IN_OTA,DEST_SALES,DOM_WHOLESALE,INTL_WHOLESALE,LATAM_WHOLESALE,LATIN_OTA,NAT_SALES,UK_SELECT,WDTC_UK", "disney-parkReservationRequired": "false", "disney-productDuration": "1", "disney-productType": "specialevent", "disney-salesEnd": "2023-12-15T23:59:59-05:00", "disney-salesStart": "2023-07-06T00:00:00-04:00", "disney-ticketType": "fixed", "disney.ParkLocations": "Magic Kingdom® Park"

Units


Operator API v2

Reseller API v1.2

RESPONSE

unit.extensions New

rates.travellertype.extensions New

Example

rates prices travellerType extensions "disney-discountGroups": "STD_GST", "disney-marketRegions": "APAC_OTA,ASIA_TICKETONLY,CAN_WHOLESALE,CH_IN_OTA,DEST_SALES,DOM_WHOLESALE,INTL_WHOLESALE,LATAM_WHOLESALE,LATIN_OTA,NAT_SALES,UK_SELECT,WDTC_UK", "disney-parkReservationRequired": "false", "disney-productType": "specialevent", "disney-salesEnd": "2023-12-15T23:59:59-05:00", "disney-salesStart": "2023-07-06T00:00:00-04:00", "disney-ticketType": "fixed"

Availability


Operator API v2

Reseller API v1.2

RESPONSE

availability.extensions New

availabilities.extensions New

Examples

Resellers connected to Operators via Ticketmaster:

  • For any sports game, the host team displays under product name and the host name vs the opponent in the EventName

  • The currentTicketLimit changes dynamically with inventory updates, and if at any time a hold is made for a number of travelers higher than the current ticket limit value, it will fail

"availabilities": { "byRate": { "91521caa-2020-4520-aff1-b94434d0c653": { "availability": [ { "capacity": 146, "end": "2023-07-14T22:59:00Z", "extensions": { "ticketmaster.CurrentTicketLimit": "150", "ticketmaster.EventName": "Orlando Magic vs New York Knicks"

Create a New Pending Booking / Acquire a Hold


Operator API v2

Reseller API v1.2

REQUEST

extensions New

hold.ext Already Existed in Spec

REQUEST

unitItem.extensions New

hold.item.ext Already Existed in Spec

RESPONSE

extensions New

hold.extAlready Existed in Spec

RESPONSE

extensions New

hold.extAlready Existed in Spec

Example

When dealing with seating product types, Travel Curious shares the seat details in the booking response to the Reseller

  • beta-ticketLocations: contain the assigned seat information for the Reseller to share with the buyer

"hold": { "ext": { "resellerReference": "", "beta-ticketLocations": "[{\"section\":\"113\",\"row\":\"9\",\"seatNumbers\":[4,5,6,7,8],\"seats\":[\"4\",\"5\",\"6\",\"7\",\"8\"]}]",

Confirm an in-progress Booking / Create a Booking


Operator API v2

Reseller API v1.2

REQUEST

extensions New

booking.ext Already Existed in Spec

REQUEST

booking.contact.extensions New

booking.customer.extensions New

REQUEST

Doesn't exist at this point

booking.items.ext Already Existed in Spec

REQUEST

booking.guestDetails.extensions New

booking.items.traveller.extensions New

RESPONSE

booking.extensions New

booking.ext Already Existed in Spec

RESPONSE

booking.unitItems.extensions New

booking.items.ext Already Existed in Spec

Examples

Operators may require additional details for each traveler when a booking is being made, therefore, Travel Curious added extensions at the item.traveler level to collect the data from the Reseller side (Reseller API v1.2) and map to the guestDetails array on the Operator side (Operator API v2)

  • beta-height: guest height with unit measure

  • beta-weight: guest weight with unit measure

  • beta-hotel: guests's hotel details

  • beta-identifications: guest's official, government issued travel document

    • needs to be in a specific comma-separated key-value pair format

      • type: type of document (e.g. Passport, Military ID, Drivers License, National ID, Vaccination Certificate)

      • value: document number (e.g. Passport number. Military ID number, etc)

"traveler": [ { "age": 35, "country": "USA", "email": "traveler@email.com", "firstName": "Test", "gender": "MALE", "isLead": true, "lang": "English", "lastName": "Person", "phone": "(1) 212 555-1234", "type": "ADULT", "extensions": { "beta-height": "70 in", "beta-weight": "175 lbs, "beta-hotel": "Hotel Name", "beta-identifications": "driverslicense=328592539,passport=38295082390", } }, {
"guestDetails": [ { "firstName": "Test", "lastName": "Person", "unitType": "ADULT", "email": "traveler@email.com", "phone": "(1) 212 555-1234", "age": "35", "gender": "MALE", "height": "70 in", "weight": "175 lbs", "countryOfOrigin": "USA", "primaryLanguage": "English", "identifications": [ { "type": "driverslicense", "value":"328592539", } "type": "passport", "value":"38295082390", } "extensions": { "beta-hotel": "Hotel Name", } }, {

When dealing with seating product types, Travel Curious shares the seat details in the booking response to the Reseller

  • beta-ticketLocations: contain the assigned seat information for the Reseller to share with the buyer

Still in the booking response

  • beta-deliveryMethod: to the Reseller whether this confirmed booking contains one ticket per-unit, (TICKET) or one ticket per-booking (VOUCHER)

  • supplier.reference: maps the Ticketmaster Order Number added once the booking is confirmed. This is required information for the Reseller to pull and add to the voucher.

"booking": { "cancelable": false, "customer": { "email": "test@test.com", "firstName": "Test", "lastName": "Test", "phone": "+34666666666" }, "ext": { "beta-deliveryMethod": "VOUCHER", "beta-ticketLocations": "[{\"section\":\"113\",\"row\":\"9\",\"seatNumbers\":[4,5,6,7,8],\"seats\":[\"4\",\"5\",\"6\",\"7\",\"8\"]}]", "supplier.reference": "56-21231/FL2",

Order

Info

Please note that this capability / functionality only exists for the Operators at this time.


Operator API v2

Reseller API v1.2

REQUEST

order.extensions New

booking.extensions Already Existed in Spec

RESPONSE

order.extensions New

booking.extensions Already Existed in Spec

Cancel a Booking

Info

There is no request and response body in the Reseller cancellation transaction.


Operator API v2

REQUEST

extensions New

RESPONSE

booking.extensions New

RESPONSE

booking.unitItems.extensions New

SCAP

Info

Please note that this section is only for Resellers using the SCAP Flow (Seat Chart Availability & Pricing) for specific seat selection distribution.

GET Section Availability


v2 SCAP Models

RESPONSE

sectionAvailabilities.extensions New

RESPONSE

sectionAvailabilities.section.extensions New

RESPONSE

sectionAvailabilities.availability.extensions New

GET Section Seats


v2 SCAP Models

RESPONSE

locations.extensions New

RESPONSE

locations.section.extensions New

RESPONSE

locations.row.extensions New

RESPONSE

locations.seats.extensions New