TABLE OF CONTENTS

Introduction

Product Addon APIs are used by distributors to get product addon details through the product addon detail API and check the real-time availability of certain product addons through the product addon availability API. Please be aware that distributors who connect with Disney are required to implement these APIs.

  • Product Addon Detail(/productAddon/{supplierId}/{hotelId}/{type}/{code})
  • Product Addon Availability(/productAddon/availability)
  • Product Addon Park Reservation(/productAddon/parkReservation)

Product Addon Detail

The API is used by distributors to get product addon details for a specific hotel.

GET /productAddon/{supplierId}/{hotelId}/{type}/{code}?distributorId={distributorId} HTTP/1.1
URL: {endpoint}/productAddon/{supplierId}/{hotelId}/{type}/{code}?distributorId={distributorId}
Authorization:Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8

Request Parameters

Name

Description

Required

Type

Example

supplierId

Supplier ID in DerbySoft's system

Yes

string

DISNEY

hotelId

Supplier's hotel ID

Yes

string

06

type

Type of product addon

Yes

string

DisneyTicket

codeCode of product addonYesstring/
distributorId

Distributor ID in DerbySoft's system

Yesstring/

Response Example

  • Success Response (HTTP Status 200)
{
    "supplierId": "DISNEY",
    "hotelId": "06",
    "productAddon": {
      "code": "code",
      "name": "name",
      "type": "DisneyTicket",
      "policies": [
        "policy",
        "policy"
      ],
      "restrictions": {
        "officeIds": [
          "officeId",
          "officeId"
        ],
        "discountGroups": [
          "group",
          "group"
        ],
        "ageQualifyingTypes": [
          {
            "type": "Adult",
            "minAge": 18,
            "maxAge": 99
          }
        ],
        "saleDateRange": {
          "startDate": "2018-01-01",
          "endDate": "2018-01-04"
        },
        "usageDateRange": {
          "startDate": "2018-01-01",
          "endDate": "2018-01-04"
        },
        "durationDays": 3,
        "usageBufferDays": 3
      },
      "rates": [
        {
          "dateRange": {
            "startDate": "2018-01-01",
            "endDate": "2018-01-04"
          },
          "rate": {
            "ageQualifyingType": {
              "type": "Adult",
              "minAge": 18,
              "maxAge": 99
            },
            "currency": "USD",
            "amountBeforeTax": 123.23,
            "amountAfterTax": 134.34
          }
        }
      ],
      "parkReservationRequired": true,
      "attractions": [
        {
          "attractionId": "magic-kingdom",
          "attractionName": "Magic Kingdom Park"
        },
        {
          "attractionId": "animal-kingdom",
          "attractionName": "Disney's Animal Kingdom Theme Park"
        }
      ]
    }
  }
  • Error Response (HTTP Status 403)
{
    "error": "Key not authorized"
}


  • Error Response (HTTP Status 500)
{
    "errorCode": "InvalidField",
    "errorMessage": "Invalid Message"
  }


Response Specification

Attribute

Type

Required

Description

Example

supplierId

string

Yes

Supplier ID in DerbySoft's system

DISNEY

hotelId

string

Yes

Supplier's hotel ID

06

productAddon

object

No

/

 /

@codestringYesProduct addon code/
@namestringYesProduct addon name/
@typestringYesProduct addon typeDisneyTicket

productAddon/policies

array[string]No//

productAddon/restrictions

objectNo//
restrictions/officeIdsarray[string]NoThe distributor identifier for each of their offices or points of sale[SC-1_SCUSA001]
restrictions/discountGroupsarray[string]No//
restrictions/ageQualifyingTypesarray[object]No//
@typeenumYesEnum: [Adult, Child]Adult
@minAgeintegerYes/18
@maxAgeintegerYes/99
restrictions/saleDateRangeobjectYes//
@startDatestringYesformat with yyyy-MM-dd2022-01-01
@endDatestringYesformat with yyyy-MM-dd2022-01-04
restrictions/usageDateRangeobjectYes//
@startDatestringYesformat with yyyy-MM-dd2022-01-01
@endDatestringYesformat with yyyy-MM-dd2022-01-04
restrictions/durationDaysintegerYes/3
restrictions/usageBufferDaysintegerYes/3

productAddon/rates

array[object]No//
rates/dateRangeobjectYes//
@startDatestringYes

start date of date range, format with yyyy-MM-dd

2022-01-01
@endDatestringYes

end date of date range, format with yyyy-MM-dd

2022-01-04
rates/ratearray[object]Yes//
rate/ageQualifyingTypeobjectNo//
@typeenumYesEnum: [Adult, Child]Adult
@minAgeintegerYes/18
@maxAgeintegerYes/99
rate/currencystringYes/USD
rate/amountBeforeTaxnumberNo/123.23
rate/amountAfterTaxnumberNo/134.34
productAddon/parkReservationRequiredbooleanNoThe flag indicates whether this addon needs reservation or not.true
productAddon/attractionsarray[object]No//
@attractionIdstringYesTheme Park's IDmagic-kingdom
@attractionNamestringYesTheme Park's nameMagic Kingdom Park


Product Addon Availability

This API is used to check real-time availability for certain product addons. It will hit the hotel suppliers' system to get real-time results.

POST /productAddon/availability HTTP/1.1
URL: {endpoint}/productAddon/availability
Authorization:Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8

Request Example

{
    "header": {
      "supplierId": "DISNEY",
      "distributorId": "SUNCOAST",
      "version": "v4",
      "token": "18393849028490234"
    },
    "bookingChannel": "string",
    "officeId": "string",
    "hotelId": "06",
    "date": "2022-01-01",
    "productAddonType": "DisneyTicket",
    "productAddonCandidates": [
      {
        "code": "string",
        "quantity": 1
      }
    ]
  }

Request Specification

Attribute

Type

Required

Description

Example

headerobjectYes//
@supplierIdstringYes

Max Length: 32

Supplier ID in DerbySoft's system

DISNEY

@distributorId

string

Yes

Max Length: 32

Distributor ID in DerbySoft's system

SUNCOAST

@version

string

Yes

Max Length: 20

Version of API

v4

@token

string

Yes

Max Length: 64

A unique ID to identify requests and responses, usually it's a UUID identity.

18393849028490234

bookingChannel

string

No

Sub-distributor or office ID, This attribute is optional when Disney offers the distributor with only 1 bookingChannel code.

/

officeId

string

No

The distributor identifier for each of their offices or points of sale.

NOTE: This attribute is mandatory when requesting product addon availability from Disney. And for other suppliers, it depends.

/

hotelId

string

Yes

Hotel ID in supplier's system

06

date

string

Yes

format with yyyy-MM-dd

 2022-01-01

productAddonTypestringYesthe type of product addonDisneyTicket
productAddonCandidatesarray[object]Yes//
@codestringYesproduct addon code/
@quantityintegerYes/1

Response Example

  • Success Response (HTTP Status 200)
{
    "header": {
      "supplierId": "DISNEY",
      "distributorId": "SUNCOAST",
      "version": "v4",
      "token": "18393849028490234"
    },
    "bookingChannel": "string",
    "officeId": "string",
    "hotelId": "06",
    "date": "2022-01-01",
    "productAddonType": "DisneyTicket",
    "productAddons": [
      {
        "code": "string",
        "rates": [
          {
            "ageQualifyingType": {
              "type": "Adult",
              "minAge": 18,
              "maxAge": 99
            },
            "currency": "USD",
            "amountBeforeTax": 123.23,
            "amountAfterTax": 134.34
          }
        ]
      }
    ]
  }
  • Error Response (HTTP Status 401)
{
    "error": "Key not authorized"
}
  • Error Response (HTTP Status 500)
{
    "errorCode": "InvalidField",
    "errorMessage": "Invalid Message"
  }

Response Specification

Name

Description

Required

Type

Example

headerobjectYes//
@supplierIdstringYes

MaxLength: 32

Supplier ID in DerbySoft's system

DISNEY

@distributorId

string

Yes

MaxLength: 32

Distributor ID in DerbySoft's system

SUNCOAST

@version

string

Yes

MaxLength: 20

Version of API

v4

@token

string

Yes

MaxLength: 64

A unique ID to identify requests and responses, normally it should be a UUID identity.

18393849028490234

bookingChannel

string

No

Sub-distributor ID

/

officeId

string

No

The distributor identifier for each of their offices or points of sale.

/

hotelId

string

Yes

Hotel ID in supplier's system

06

date

string

No

format with yyyy-MM-dd

 2022-01-01

productAddonTypestringNothe type of product addonDisneyTicket

productAddons

array[object]No//
@codestringYesproduct addon code
productAddons/ratesarray[object]Yes//
rates/ageQualifyingTypeobjectNo//
@typeenumYesEnum: [Adult, Child]Adult
@minAgeintegerYes/18
@maxAgeintegerYes/99
rates/currencystringYes/USD
rates/amountBeforeTaxnumberNo/123.23
rates/amountAfterTaxnumberNo/134.34


Product Addon Park Reservation

This API was used by Distributors to book the parks with product add-ons. It will be forwarded to the hotel supplier system to get real-time results.


Disney has a "parkReservationRequired" true/false flag in their API for ticket products. When this is "true", the park pass reservation is required and this API can be used instead of the customer going directly to Disney.  Any modification or cancellation for the park pass reservations would require the customer to contact Disney directly. 


Distributors can use the Park Reservation API to plan their visit to the park and make reservations in advance if necessary. Distributors can send reservation requests to the product Addon Reservation API and provide the attraction IDs, the entry date, and the reservation IDs of the room package.  

How to use: 
① Distributors can send reservation dates in separate requests for a reservation id.The response will contain both success and error messages for the reservations. Distributors need to parse the full messages.
② If the park pass reservation fails, Distributors can send requests for a different date or a different park.
③ Only 1 park needs to be reserved for a ticket if visiting on the same date. If the visits are for two different dates, the request need to be made for the entire entry period.
POST /productAddon/parkReservation HTTP/1.1
URL: {endpoint}/productAddon/parkReservation
Authorization:Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8

Request Example

{
    "header": {
      "supplierId": "DISNEY",
      "distributorId": "SUNCOAST",
      "version": "v4",
      "token": "18393849028490234"
    },
    "reservationIds": {
      "distributorResId": "C2084DFL0",
      "derbyResId": "D15F893D34DF",
      "supplierResId": "89389494"
    },
    "productAddonAttractions": [
      {
        "productAddonCode": "3LXRE",
        "officeId": "SC-1 SCUSA001",
        "attractionsDetail": [
          {
            "attractionId": "magic-kingdom",
            "entryDate": "2023-07-13"
          },
          {
            "attractionId": "magic-kingdom",
            "entryDate": "2023-07-13"
          }
        ]
      },
      {
        "productAddonCode": "3LBFE",
        "officeId": "SC-1 SCUSA001",
        "attractionsDetail": [
          {
            "attractionId": "animal-kingdom",
            "entryDate": "2023-07-14"
          },
          {
            "attractionId": "animal-kingdom",
            "entryDate": "2023-07-14"
          }
        ]
      }
    ]
  }

Request Specification

Attribute

Type

Required

Description

Example

headerobjectYes//
@supplierIdstringYes

Max Length: 32

Supplier ID in DerbySoft's system

DISNEY

@distributorId

string

Yes

Max Length: 32

Distributor ID in DerbySoft's system

SUNCOAST

@version

string

Yes

Max Length: 20

Version of API

v4

@token

string

Yes

Max Length: 64

A unique ID to identify requests and responses, normally it should be a UUID identity.

18393849028490234

reservationIdsobjectYes//
@distributorResIdstringYes

Distributor's reservation ID. Distributors should keep the ID unique on their system to avoid any potential issues caused by duplicate reservation IDs.

C2084DFL0
@derbyResIdstringNo

Reservation ID in DerbySoft's system, This is a unique ID as DerbySoft would do splitting reservations.

D15F893D34DF
@supplierResIdstringNo

Reservation ID in Suppliers' system

89389494

productAddonAttractions

array[object]

Yes

/

/

@productAddonCodestringYesproduct addon code3LXRE
@officeIdstringYesThe distributor identifier for each of their offices or points of sale.

Note: The pre-assigned ID from the supplier. This attribute is mandatory when requesting addOn availability from Disney
3C-1_SCUSA001
productAddonAttractions/attractionsDetailarray[object]Yes//
@attractionIdstringYesThe attraction ID of the product addonmagic-kingdom
@entryDatestringYesThe entry date to the attraction( format: YYYY-MM-DD)2023-07-13

Response Example

  • Success Response (HTTP Status 200)
{
    "header": {
      "supplierId": "DISNEY",
      "distributorId": "SUNCOAST",
      "version": "v4",
      "token": "18393849028490234"
    },
    "reservationIds": {
      "distributorResId": "C2084DFL0",
      "derbyResId": "D15F893D34DF",
      "supplierResId": "89389494"
    },
    "productAddonAttractions": [
      {
        "productAddonCode": "3LXRE",
        "officeId": "SC-1 SCUSA001",
        "productAddonResId": "string",
        "attractionsDetail": [
          {
            "attractionId": "magic-kingdom",
            "entryDate": "2023-07-13",
            "attractionResId": "string"
          },
          {
            "attractionId": "magic-kingdom",
            "entryDate": "2023-07-13",
            "attractionResId": "string"
          }
        ]
      },
      {
        "productAddonCode": "3LBFE",
        "officeId": "SC-1 SCUSA001",
        "productAddonResId": "string",
        "attractionsDetail": [
          {
            "attractionId": "animal-kingdom",
            "entryDate": "2023-07-14",
            "attractionResId": "string"
          },
          {
            "attractionId": "animal-kingdom",
            "entryDate": "2023-07-14",
            "failCause": {
              "errorCode": "string",
              "errorMessage": "string"
            }
          }
        ]
      }
    ]
  }
  • Error Response (HTTP Status 403)
{
    "error": "Key not authorized"
}
  • Error Response (HTTP Status 500)
{
    "errorCode": "InvalidField",
    "errorMessage": "Invalid Message"
  }

Response Specification

Attribute

Type

Required

Description

Example

headerobjectYes//
@supplierIdstringYes

Max Length: 32

Supplier ID in DerbySoft's system

DISNEY

@distributorId

string

Yes

Max Length: 32

Distributor ID in DerbySoft's system

SUNCOAST

@version

string

Yes

Max Length: 20

Version of API

v4

@token

string

Yes

Max Length: 64

A unique ID to identify requests and responses, normally it should be a UUID identity.

18393849028490234

reservationIdsobjectYes//
@distributorResIdstringNoDistributor's reservation ID. Distributors should keep the ID unique on their system to avoid any potential issues caused by duplicate reservation IDs.C2084DFL0
@derbyResIdstringNoReservation ID in DerbySoft’s system. The ID is uniqueD15F893D34DF
@supplierResIdstringYesReservation ID in suppliers' system89389494

productAddonAttractions

array[object]

Yes

/

/

@productAddonCodestringYesproduct addon code3LXRE
@officeIdstringYesThe distributor identifier for each of their offices or points of sale.

Note: The pre-assigned Id from the supplier. This attribute is mandatory when requesting addOn availability from Disney
3C-1_SCUSA001
@productAddonResIdstringYesThe reservation id of the product addon returned from the supplier. This is a mandatory attribute when sending reservation requests to Disney1234
productAddonAttractions/attractionsDetailarray[object]Yes//
@attractionIdstringYesThe attraction ID of product addonmagic-kingdom
@entryDatestringYesThe entry date to the attraction( format: YYYY-MM-DD)2023-07-13
@attractionResIdstringNoIf the attractionResId is returned, it means the reservation is successful12345
failCauseobjectNo//
@errorCodestringYeserror code/
@errorMessagestringYeserror message/