Extensions
The Redeam 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 Redeam or to exchange required information between the connecting partners.
The below example includes a cancel policy on the product level:
product
extensions
cancelPolicyDescription : "my cancel policy"
This second example shows additional traveler information which could be required for a partner on the booking level:
booking
traveller
extensions
"(operatorname)-skiBootsSize":
"(operatorname)-skiClothingSize":
Please note that Redeam refer to extensions as “ext
" or "extensions
" in the JSON. They both share the exact same function
Redeam highly recommend that Resellers implement all of the extensions in order to get 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
Redeam make use of extensions to map useful information that have not been added to the spec yet or are still being defined as beta-(key)
. These keys are identified with the prefix beta-
so Redeam can keep track of them and their data.
Redeam 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-seatLocations
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 Redeam use 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 Redeam use keys labelled x-(key)
to internally pass data between the different systems.
Example of x keys
x-http202-enabled
Please note that the x-(key) are for Redeam's internal use only and should not be exposed to our partners and we are currently working on achieving this.
Please do not develop the keys with an x- prefix as they will be excluded from distribution!
It is important to note that Redeam already use 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 Redeam 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.
Please note that Redeam do not need to keep track of no prefix extensions apart from these:
supplier.reference
resellerReference
redemptionInstructions
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
Redeam use 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 | supplier.extensions |
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 | product.extensions |
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 productbeta-localStartDate
: this field identifies each date of a multiple date productredemptionInstructions
: 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 | rate.extensions |
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 | rates.travellertype.extensions |
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 | availabilities.extensions |
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
Example
When dealing with seating product types, Redeam shares the seat details in the booking response to the Reseller
beta-seatLocations
: contain the assigned seat information for the Reseller to share with the buyer
"hold": {
"ext": {
"resellerReference": "",
"beta-seatLocations": "[{\"section\":\"SECA\",\"row\":\"E\",\"startSeatNumber\":\"7\",\"endSeatNumber\":\"7\"}]",
Confirm an in-progress Booking / Create a Booking
Operator API v2 | Reseller API v1.2 | |
---|---|---|
REQUEST | extensions | booking.ext |
REQUEST | booking.contact.extensions | booking.customer.extensions |
REQUEST | booking.items.ext | |
REQUEST | booking.guestDetails.extensions | booking.items.traveller.extensions |
RESPONSE | booking.extensions | booking.ext |
RESPONSE | booking.unitItems.extensions | booking.items.ext |
Examples
Operators may require additional details for each traveler when a booking is being made, therefore, Redeam 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 measurebeta-weight
: guest weight with unit measurebeta-hotel
: guests's hotel detailsbeta-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)
- needs to be in a specific comma-separated key-value pair format
"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",
}
},
{
When dealing with seating product types, Redeam shares the seat details in the booking response to the Reseller
beta-seatLocations
: 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
ext:{
"beta-deliveryMethod": "TICKET",
"beta-seatLocations": "[{\"section\":\"SECA\",\"row\":\"E\",\"startSeatNumber\":\"7\",\"endSeatNumber\":\"7\"}]",
"supplier.reference":"59-54207/NV3"
Order
Please note that this capability / functionality only exists for the Operators at this time.
Operator API v2 | Reseller API v1.2 | |
---|---|---|
REQUEST | order.extensions | booking.extensions |
RESPONSE | order.extensions | booking.extensions |
Cancel a Booking
There is no request and response body in the Reseller cancellation transaction.
Operator API v2 | |
---|---|
REQUEST | extensions |
RESPONSE | booking.extensions |
RESPONSE | booking.unitItems.extensions |
SCAP
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 |
RESPONSE | sectionAvailabilities.section.extensions |
RESPONSE | sectionAvailabilities.availability.extensions |
GET Section Seats
v2 SCAP Models | |
---|---|
RESPONSE | locations.extensions |
RESPONSE | locations.section.extensions |
RESPONSE | locations.row.extensions |
RESPONSE | locations.seats.extensions |