Hotel API (v2)

Download OpenAPI description
Languages
Servers
Mock server
https://developer.spotnana.com/_mock/openapi/hotelapi/
Staging URL
https://apis.spotnana.com/

Hotel

These endpoints provide comprehensive functionality for managing hotel bookings. They enable users to search for hotels, check room rates and availability, create and modify bookings, and handle cancellations and rebooking.

Operations

Get hotel search results

Request

Get all available hotels for the requested search parameters.

Bodyapplication/jsonrequired
searchParamsobject(HotelSearchParams)required

The parameters required for searching hotels.

searchParams.​occupancyDatesobject(OccupancyDates)required

Occupancy values and dates for the hotel search.

searchParams.​occupancyDates.​occupancyArray of objects(Occupancy)required

List of occupancy details including the number of adults and children.

searchParams.​occupancyDates.​occupancy[].​numAdultsinteger>= 1required

The number of adults staying in the room.

Example: 1
searchParams.​occupancyDates.​occupancy[].​numChildreninteger

The number of children staying in the room.

Example: 0
searchParams.​occupancyDates.​checkInDateobject(DateTimeLocal)required

Local date and time represented in the ISO 8601 standard.

searchParams.​occupancyDates.​checkInDate.​iso8601string^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01...required
Example: "2017-07-21T17:32"
searchParams.​occupancyDates.​checkOutDateobject(DateTimeLocal)required

Local date and time represented in the ISO 8601 standard.

searchParams.​occupancyDates.​checkOutDate.​iso8601string^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01...required
Example: "2017-07-21T17:32"
searchParams.​searchByobjectrequired

Criteria used for searching hotels. The searchType field can contain one criteria per request.

searchParams.​searchBy.​searchTypestringrequired
Example: "AIRPORT"
Discriminator
searchParams.​searchBy.​airportstringrequired

IATA code of the airport. The search result will contain the list of hotels in close proximity to the specified airport.

Example: "LHR"
filtersobject(HotelSearchFilters)

Filters to refine the search result. Based on the user selected filters, the list of matching hotels will be displayed.

sortOptionsArray of objects(Hotel Sort Options)

Sort options for the search results.

userIdHotel User Identifier (object) or Hotel User Identifier (object)(HotelUserId)required
One of:

An identifier for the user involved in the hotel booking or search process.

userId.​userIdTypestringrequired
Example: "USER_ID"
userId.​userIdobject(UserId)required

User identifier

userId.​userId.​idstring(uuid)required
paginationParamsToken Based Pagination Request (object) or Token Based Pagination Request (object)(TokenBasedPaginationRequest)
One of:

The page token.

curl -i -X POST \
  https://developer.spotnana.com/_mock/openapi/hotelapi/v2/hotel/search \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "searchParams": {
      "occupancyDates": {
        "occupancy": [
          {
            "numAdults": 1,
            "numChildren": 0
          }
        ],
        "checkInDate": {
          "iso8601": "2017-07-21T17:32"
        },
        "checkOutDate": {
          "iso8601": "2017-07-21T17:32"
        }
      },
      "searchBy": {
        "searchType": "AIRPORT",
        "airport": "LHR"
      }
    },
    "filters": {
      "prepaidQualifier": "INCLUDE_PREPAID",
      "priceRange": {
        "min": {
          "amount": 510,
          "currencyCode": "GBP"
        },
        "max": {
          "amount": 510,
          "currencyCode": "GBP"
        }
      },
      "amenities": [
        "ECO_FRIENDLY"
      ],
      "chainCodes": [
        "string"
      ],
      "radius": {
        "length": 150,
        "unit": "MILE"
      },
      "starRatings": [
        0
      ],
      "nameQuery": "string",
      "eligibleForLoyalty": false,
      "showUnavailable": false,
      "payByPoints": false,
      "modifiableOnly": false,
      "rateTypes": [
        "PUBLISHED"
      ],
      "propertyTypes": [
        {
          "type": "ALL_SUITE",
          "description": "string"
        }
      ],
      "refundableOnly": false,
      "preferredOnly": false
    },
    "sortOptions": [
      {
        "sortBy": "PRICE",
        "sortOrder": "ASCENDING"
      }
    ],
    "userId": {
      "userIdType": "USER_ID",
      "userId": {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
      }
    },
    "paginationParams": {
      "requestType": "PAGE_TOKEN",
      "pageToken": "token"
    }
  }'

Responses

OK

Bodyapplication/json
hotelsArray of objects(Hotel Data)required

List of hotels matching the search criteria.

hotels[].​hotelDetailsKeystringrequired

Unique key for the hotel details.

Example: "Cg5TUE9UTkFOQTozMDc3NhIgCgIIARIMCgoyMDI0LTA="
hotels[].​hotelSpecobject(HotelSpec)required

Includes detailed specifications for a hotel, such as name, star rating, address, coordinates, amenities, and other information.

hotels[].​hotelSpec.​namestringrequired

Name of the hotel.

Example: "London Heathrow Marriott Hotel"
hotels[].​hotelSpec.​addressobject(PostalAddress)required

Postal Address Details

hotels[].​hotelSpec.​address.​addressLinesArray of stringsrequired

Address lines

Example: ["Golden Gate Bridge"]
hotels[].​hotelSpec.​address.​administrativeAreastring

Code of administrative area. For example: DL for Delhi, India. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. "Barcelona" and not "Catalonia"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.

Example: "CA"
hotels[].​hotelSpec.​address.​administrativeAreaNamestring

Name of administrative area. This is full name corresponding to administrativeArea. Like Delhi for DL area code. For some places, code and name maybe same as well like Tokyo.

Example: "California"
hotels[].​hotelSpec.​address.​descriptionstring

Address description

Example: "San Francisco Home"
hotels[].​hotelSpec.​address.​isDefaultboolean

Whether this address is default address in case multiple addresses are specified.

Example: true
hotels[].​hotelSpec.​address.​languageCodestring

BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. Examples: "zh-Hant", "ja", "ja-Latn", "en".

Example: "en"
hotels[].​hotelSpec.​address.​localitystring

Generally refers to the city/town portion of the address.

Example: "San Francisco"
hotels[].​hotelSpec.​address.​locationCodestring

IATA 3-letter location code. See https://www.iata.org/en/services/codes.

Example: "LAX"
hotels[].​hotelSpec.​address.​organizationstring

The name of the organization at the address.

Example: "Spotnana"
hotels[].​hotelSpec.​address.​postalCodestring

Postal code of the address. This is a required field when setting for a user/legal entity/company etc.

Example: "94130"
hotels[].​hotelSpec.​address.​continentCodestring

2 letter continent code of the continent this address falls in.

Example: "AF"
hotels[].​hotelSpec.​address.​recipientsArray of strings

The recipient at the address.

hotels[].​hotelSpec.​address.​regionCodestringrequired

Region code of the country/region of the address.

Example: "US"
hotels[].​hotelSpec.​address.​regionNamestring

Region name of the country/region of the address.

Example: "America"
hotels[].​hotelSpec.​address.​revisioninteger(int32)
Example: 1
hotels[].​hotelSpec.​address.​sortingCodestring

Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like "CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or just a number alone, representing the "sector code" (Jamaica), "delivery area indicator" (Malawi) or "post office indicator" (e.g. Côte d'Ivoire).

Example: "Jamaica"
hotels[].​hotelSpec.​address.​sublocalitystring

Sublocality of the address. This can be neighborhoods, boroughs, districts.

hotels[].​hotelSpec.​address.​timezonestring

Time zone of the address.

Example: "America/Los_Angeles"
hotels[].​hotelSpec.​address.​coordinatesobject(Latlng)

Latitude and Longitude for a Location

hotels[].​hotelSpec.​coordinatesobject(Latlng)required

Latitude and Longitude for a Location

hotels[].​hotelSpec.​coordinates.​latitudenumber(double)required

Latitude of the Location

Example: 77.1025
hotels[].​hotelSpec.​coordinates.​longitudenumber(double)required

Longitude of the Location

Example: 28.7041
hotels[].​hotelSpec.​contactInfoobject(ContactInfo)required

Provides contact information for a hotel.

hotels[].​hotelSpec.​contactInfo.​phoneArray of objects(PhoneNumber)required

List of phone numbers for the hotel.

hotels[].​hotelSpec.​contactInfo.​phone[].​countryCodeinteger(int32)

two digit country code

Example: 91
hotels[].​hotelSpec.​contactInfo.​phone[].​countryCodeSourcestring
Enum"UNSPECIFIED""FROM_NUMBER_WITH_PLUS_SIGN""FROM_NUMBER_WITH_IDD""FROM_NUMBER_WITHOUT_PLUS_SIGN""FROM_DEFAULT_COUNTRY"
Example: "FROM_NUMBER_WITH_PLUS_SIGN"
hotels[].​hotelSpec.​contactInfo.​phone[].​extensionstring

phone number extension

Example: "222"
hotels[].​hotelSpec.​contactInfo.​phone[].​isoCountryCodestring

ISO alpha-2 code

Example: "IN"
hotels[].​hotelSpec.​contactInfo.​phone[].​italianLeadingZeroboolean
Default false
Example: true
hotels[].​hotelSpec.​contactInfo.​phone[].​nationalNumberinteger(int64)
Example: 8150
hotels[].​hotelSpec.​contactInfo.​phone[].​numberOfLeadingZerosinteger(int32)
Default 0
Example: 1
hotels[].​hotelSpec.​contactInfo.​phone[].​preferredDomesticCarrierCodestring
Example: "7"
hotels[].​hotelSpec.​contactInfo.​phone[].​rawInputstring
Example: "77777"
hotels[].​hotelSpec.​contactInfo.​phone[].​typestring
Enum"UNKNOWN_TYPE""MOBILE""LANDLINE"
Example: "MOBILE"
hotels[].​hotelSpec.​contactInfo.​faxArray of strings

List of fax numbers for the hotel.

hotels[].​hotelSpec.​contactInfo.​emailArray of stringsrequired

List of email addresses for the hotel.

hotels[].​hotelSpec.​amenitiesArray of objects(Hotel Amenities)required

List of hotel amenities.

hotels[].​hotelSpec.​amenities[].​hotelAmenityTypestringrequired
Enum"TWENTY_FOUR_HOUR_FRONT_DESK""TWENTY_FOUR_HOUR_ROOM_SERVICE""TWENTY_FOUR_HOUR_SECURITY""ADJOINING_ROOMS""AIR_CONDITIONING""AIRLINE_DESK""ATM_CASH_MACHINE""BABY_SITTING""BBQ_PICNIC_AREA""BILINGUAL_STAFF"
Example: "ECO_FRIENDLY"
hotels[].​hotelSpec.​amenities[].​additionalInfostring

Amenity description

Example: "Complimentary in-room coffee or tea"
hotels[].​hotelSpec.​amenities[].​isComplimentaryboolean

Is Amenity complimentary

Example: true
hotels[].​hotelSpec.​descriptionsArray of objects(HotelDescription)

List of hotel descriptions.

hotels[].​hotelSpec.​imageSetsArray of objects(HotelImageSet)

List of hotel image sets.

hotels[].​hotelSpec.​hotelIdstringrequired

Unique hotel identifier.

Example: "SPOTNANA:1001"
hotels[].​hotelSpec.​brandCodestring

The code of hotel brand.

Example: "MC"
hotels[].​hotelSpec.​brandNamestring

Brand name of the hotel.

Example: "Marriott Hotel Brands"
hotels[].​hotelSpec.​chainCodestring

The code of hotel chain.

Example: "EM"
hotels[].​hotelSpec.​chainNamestring

Name of the hotel chain.

Example: "Marriott Hotels & Resorts"
hotels[].​hotelSpec.​propertyTypesArray of objects(Hotel Property Type)required

List of property types for the hotel.

hotels[].​hotelSpec.​propertyTypes[].​typestring(HotelPropertyEnum)required

Type of the property.

Enum"ALL_SUITE""ALL_INCLUSIVE_RESORT""APARTMENT""BED_AND_BREAKFAST""CABIN_OR_BUNGALOW""CAMPGROUND""CHALET""CONDOMINIUM""CONFERENCE_CENTER""CORPORATE_BUSINESS_TRANSIENT"
hotels[].​hotelSpec.​propertyTypes[].​descriptionstring

Description of the property type.

hotels[].​hotelSpec.​starRatingobject(HotelStarRatingInfo)required

Details about hotel star rating.

hotels[].​hotelSpec.​starRating.​starRatingnumber(float)[ 0 .. 5 ]required

Star rating of the hotel.

Example: 3
hotels[].​hotelSpec.​starRating.​ratingTypestring(Star Rating Type)required

Enum representing the type of star rating.

Enum"OFFICIAL""SELF_RATED"
hotels[].​hotelSpec.​additionalAmenitiesArray of strings

Additional amenities provided by the hotel.

hotels[].​hotelSpec.​checkinTimeobject(TimeLocal)

ISO8601 Local Time

hotels[].​hotelSpec.​checkoutTimeobject(TimeLocal)

ISO8601 Local Time

hotels[].​distanceobject(Length)required

Specifies the length or a distance.

hotels[].​distance.​lengthnumber(double)required

Distance from search point.

Example: 150
hotels[].​distance.​unitstringrequired

Unit of measure being applied.

Enum"UNKNOWN_UNIT""KM""MILE"
Example: "MILE"
hotels[].​policyInfoobject(CommonPolicyInfo)

Includes detailed information about a policy, such as its unique identifier, type, name, rules, version, and approval type.

hotels[].​hasNegotiatedRatesbooleanrequired

Indicates if the hotel has negotiated rates.

Example: false
hotels[].​preferencesArray of objects(Preference)

List of preferences applicable to the hotel.

hotels[].​rateInfoobject(HotelSearchRateInfo)required

Contains detailed rate information for a hotel search.

hotels[].​rateInfo.​averageNightlyRateobject(HotelRoomRate)required

Rate details for hotel room

hotels[].​rateInfo.​averageNightlyRate.​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

hotels[].​rateInfo.​averageNightlyRate.​base.​amountnumber(double)required

The numeric value for the amount of money.

Example: 510
hotels[].​rateInfo.​averageNightlyRate.​base.​currencyCodestringrequired

The 3-letter currency code for the money amount (defined using ISO 4217 standard).

Example: "GBP"
hotels[].​rateInfo.​averageNightlyRate.​base.​convertedAmountnumber(double)

The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).

Example: 715.42
hotels[].​rateInfo.​averageNightlyRate.​base.​convertedCurrencystring

The 3-letter currency code for the converted currency (defined using ISO 4217 standard).

Example: "USD"
hotels[].​rateInfo.​averageNightlyRate.​base.​otherCoinageArray of objects(OtherCoinage)

List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.

hotels[].​rateInfo.​averageNightlyRate.​taxobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

hotels[].​rateInfo.​averageNightlyRate.​tax.​amountnumber(double)required

The numeric value for the amount of money.

Example: 510
hotels[].​rateInfo.​averageNightlyRate.​tax.​currencyCodestringrequired

The 3-letter currency code for the money amount (defined using ISO 4217 standard).

Example: "GBP"
hotels[].​rateInfo.​averageNightlyRate.​tax.​convertedAmountnumber(double)

The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).

Example: 715.42
hotels[].​rateInfo.​averageNightlyRate.​tax.​convertedCurrencystring

The 3-letter currency code for the converted currency (defined using ISO 4217 standard).

Example: "USD"
hotels[].​rateInfo.​averageNightlyRate.​tax.​otherCoinageArray of objects(OtherCoinage)

List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.

hotels[].​rateInfo.​averageNightlyRate.​roomFeesArray of objects(RoomFee)
hotels[].​rateInfo.​averageNightlyRate.​commissionobject(Commission)

Commision on rate

hotels[].​rateInfo.​averageNightlyRate.​taxBreakdownArray of objects(TaxBreakdown)

Tax breakdown

hotels[].​rateInfo.​averageNightlyRate.​includesCommissionboolean

Whether the rate includes commission

Example: false
hotels[].​rateInfo.​totalRateobject(HotelRoomRate)required

Rate details for hotel room

hotels[].​rateInfo.​totalRate.​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

hotels[].​rateInfo.​totalRate.​base.​amountnumber(double)required

The numeric value for the amount of money.

Example: 510
hotels[].​rateInfo.​totalRate.​base.​currencyCodestringrequired

The 3-letter currency code for the money amount (defined using ISO 4217 standard).

Example: "GBP"
hotels[].​rateInfo.​totalRate.​base.​convertedAmountnumber(double)

The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).

Example: 715.42
hotels[].​rateInfo.​totalRate.​base.​convertedCurrencystring

The 3-letter currency code for the converted currency (defined using ISO 4217 standard).

Example: "USD"
hotels[].​rateInfo.​totalRate.​base.​otherCoinageArray of objects(OtherCoinage)

List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.

hotels[].​rateInfo.​totalRate.​taxobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

hotels[].​rateInfo.​totalRate.​tax.​amountnumber(double)required

The numeric value for the amount of money.

Example: 510
hotels[].​rateInfo.​totalRate.​tax.​currencyCodestringrequired

The 3-letter currency code for the money amount (defined using ISO 4217 standard).

Example: "GBP"
hotels[].​rateInfo.​totalRate.​tax.​convertedAmountnumber(double)

The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).

Example: 715.42
hotels[].​rateInfo.​totalRate.​tax.​convertedCurrencystring

The 3-letter currency code for the converted currency (defined using ISO 4217 standard).

Example: "USD"
hotels[].​rateInfo.​totalRate.​tax.​otherCoinageArray of objects(OtherCoinage)

List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.

hotels[].​rateInfo.​totalRate.​roomFeesArray of objects(RoomFee)
hotels[].​rateInfo.​totalRate.​commissionobject(Commission)

Commision on rate

hotels[].​rateInfo.​totalRate.​taxBreakdownArray of objects(TaxBreakdown)

Tax breakdown

hotels[].​rateInfo.​totalRate.​includesCommissionboolean

Whether the rate includes commission

Example: false
hotels[].​rateInfo.​isRefundablebooleanrequired

Set to true if the hotel rate is refundable.

Example: true
hotels[].​rateInfo.​rewardPointsEarnedArray of objects(Reward Points Earned)

Information about reward points earned.

hotels[].​rateInfo.​promotionalOffersArray of objects(Promotional Offer)

List of promotional offers applied to the hotel rate.

hotels[].​hotelCo2EmissionDetailobject(HotelCo2EmissionDetail)

The co2 emission detail for the hotel.

metadataobject(HotelSearchMetadata)required

Includes metadata for a hotel search.

metadata.​availableHotelChainsArray of objects(HotelChain)required

A list of available hotel chains.

metadata.​availableHotelChains[].​chainCodestring

The code of hotel chain.

Example: "EM"
metadata.​availableHotelChains[].​chainNamestring

The name of hotel chain.

Example: "Mariott"
metadata.​rateStatisticsobject(HotelRateStatistics)required

Contains statistical information about hotel search results.

metadata.​rateStatistics.​medianobject(HotelMedianRateInfo)required

Details median rate information for a hotel.

metadata.​rateStatistics.​median.​totalobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

metadata.​rateStatistics.​median.​total.​amountnumber(double)required

The numeric value for the amount of money.

Example: 510
metadata.​rateStatistics.​median.​total.​currencyCodestringrequired

The 3-letter currency code for the money amount (defined using ISO 4217 standard).

Example: "GBP"
metadata.​rateStatistics.​median.​total.​convertedAmountnumber(double)

The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).

Example: 715.42
metadata.​rateStatistics.​median.​total.​convertedCurrencystring

The 3-letter currency code for the converted currency (defined using ISO 4217 standard).

Example: "USD"
metadata.​rateStatistics.​median.​total.​otherCoinageArray of objects(OtherCoinage)

List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.

metadata.​rateStatistics.​median.​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

metadata.​rateStatistics.​median.​base.​amountnumber(double)required

The numeric value for the amount of money.

Example: 510
metadata.​rateStatistics.​median.​base.​currencyCodestringrequired

The 3-letter currency code for the money amount (defined using ISO 4217 standard).

Example: "GBP"
metadata.​rateStatistics.​median.​base.​convertedAmountnumber(double)

The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).

Example: 715.42
metadata.​rateStatistics.​median.​base.​convertedCurrencystring

The 3-letter currency code for the converted currency (defined using ISO 4217 standard).

Example: "USD"
metadata.​rateStatistics.​median.​base.​otherCoinageArray of objects(OtherCoinage)

List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.

metadata.​rateStatistics.​sampleSizeinteger(int32)required

Size of the sample set used to calculate the statistics.

Example: 100
metadata.​rateStatistics.​policyTypestringrequired

Enumeration of policy types for rate statistics.

Enum"DEFAULT""SET_BY_ADMIN"
metadata.​showOnlyBaseFarebooleanrequired

Indicates if only base fare should be shown.

Example: false
metadata.​sessionIdstring

Unique session identifier for the search.

paginationParamsobject(TokenBasedPaginationResponse)required

Pagination response for token based pagination. Contains the next page token(if next page is available) and pagination parameters.

paginationParams.​nextPageTokenstring

The next page token to retrieve the next page of results. If it is empty, it indicates that there are no more pages to retrieve.

paginationParams.​currentPageSizeinteger(int32)required

The number of results in the current page.

Example: 10
Response
application/json
{ "hotels": [ {} ], "metadata": { "availableHotelChains": [], "rateStatistics": {}, "showOnlyBaseFare": false, "sessionId": "string" }, "paginationParams": { "nextPageToken": "string", "currentPageSize": 10 } }

Get hotel details

Request

Get details for a specific hotel.

Bodyapplication/jsonrequired
hotelDetailsKeystringrequired

A unique identifier for the hotel details.

corporateInfoobject(CorporateInfoV2)

Corporate data to be collected during the search request workflow.

occupancyDatesobject(OccupancyDates)

Occupancy values and dates for the hotel details.

filtersobject(HotelDetailsFilters)

Filters for hotel details.

userIdHotel User Identifier (object) or Hotel User Identifier (object)(HotelUserId)
One of:

An identifier for the user involved in the hotel booking or search process.

curl -i -X POST \
  https://developer.spotnana.com/_mock/openapi/hotelapi/v2/hotel/details \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "hotelDetailsKey": "string",
    "corporateInfo": {
      "preSearchAnswers": {
        "answers": [
          {
            "entityId": "string",
            "userInput": "string",
            "itemIds": [
              0
            ],
            "answers": [
              {
                "item": "string",
                "value": "string",
                "description": "string"
              }
            ],
            "customFieldType": "QUESTION",
            "questionDisplayText": "string",
            "question": {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "questionFormat": "CHECKBOX",
              "optionInfo": {
                "source": "MANUAL",
                "sourceMetadata": {},
                "totalNumOptions": 0,
                "options": [
                  null
                ]
              },
              "isRequired": true,
              "isDisabled": true,
              "includeInItinerary": true,
              "customFieldLocations": [
                "POLICY_APPROVAL_EMAIL"
              ],
              "matchConditions": {
                "travelerConditions": {
                  "workerTypes": [],
                  "countries": [],
                  "legalEntities": [],
                  "departments": [],
                  "costCenters": [],
                  "offices": []
                },
                "travelTypes": [
                  null
                ],
                "travelRegionTypes": [
                  null
                ],
                "tripUsageTypes": [
                  null
                ]
              },
              "questionType": {
                "preSearchQuestionType": "PURPOSE_OF_TRIP",
                "preCheckoutQuestionType": "OOP_REASON_CODE"
              }
            }
          }
        ],
        "userEntitiesResponseId": "string"
      }
    },
    "occupancyDates": {
      "occupancy": [
        {
          "numAdults": 1,
          "numChildren": 0
        }
      ],
      "checkInDate": {
        "iso8601": "2017-07-21T17:32"
      },
      "checkOutDate": {
        "iso8601": "2017-07-21T17:32"
      }
    },
    "filters": {
      "rateTypes": [
        "PUBLISHED"
      ]
    },
    "userId": {
      "userIdType": "USER_ID",
      "userId": {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
      }
    }
  }'

Responses

OK

Bodyapplication/json
hotelSpecobject(HotelSpec)required

Includes detailed specifications for a hotel, such as name, star rating, address, coordinates, amenities, and other information.

hotelSpec.​namestringrequired

Name of the hotel.

Example: "London Heathrow Marriott Hotel"
hotelSpec.​addressobject(PostalAddress)required

Postal Address Details

hotelSpec.​address.​addressLinesArray of stringsrequired

Address lines

Example: ["Golden Gate Bridge"]
hotelSpec.​address.​administrativeAreastring

Code of administrative area. For example: DL for Delhi, India. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. "Barcelona" and not "Catalonia"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.

Example: "CA"
hotelSpec.​address.​administrativeAreaNamestring

Name of administrative area. This is full name corresponding to administrativeArea. Like Delhi for DL area code. For some places, code and name maybe same as well like Tokyo.

Example: "California"
hotelSpec.​address.​descriptionstring

Address description

Example: "San Francisco Home"
hotelSpec.​address.​isDefaultboolean

Whether this address is default address in case multiple addresses are specified.

Example: true
hotelSpec.​address.​languageCodestring

BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. Examples: "zh-Hant", "ja", "ja-Latn", "en".

Example: "en"
hotelSpec.​address.​localitystring

Generally refers to the city/town portion of the address.

Example: "San Francisco"
hotelSpec.​address.​locationCodestring

IATA 3-letter location code. See https://www.iata.org/en/services/codes.

Example: "LAX"
hotelSpec.​address.​organizationstring

The name of the organization at the address.

Example: "Spotnana"
hotelSpec.​address.​postalCodestring

Postal code of the address. This is a required field when setting for a user/legal entity/company etc.

Example: "94130"
hotelSpec.​address.​continentCodestring

2 letter continent code of the continent this address falls in.

Example: "AF"
hotelSpec.​address.​recipientsArray of strings

The recipient at the address.

hotelSpec.​address.​regionCodestringrequired

Region code of the country/region of the address.

Example: "US"
hotelSpec.​address.​regionNamestring

Region name of the country/region of the address.

Example: "America"
hotelSpec.​address.​revisioninteger(int32)
Example: 1
hotelSpec.​address.​sortingCodestring

Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like "CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or just a number alone, representing the "sector code" (Jamaica), "delivery area indicator" (Malawi) or "post office indicator" (e.g. Côte d'Ivoire).

Example: "Jamaica"
hotelSpec.​address.​sublocalitystring

Sublocality of the address. This can be neighborhoods, boroughs, districts.

hotelSpec.​address.​timezonestring

Time zone of the address.

Example: "America/Los_Angeles"
hotelSpec.​address.​coordinatesobject(Latlng)

Latitude and Longitude for a Location

hotelSpec.​coordinatesobject(Latlng)required

Latitude and Longitude for a Location

hotelSpec.​coordinates.​latitudenumber(double)required

Latitude of the Location

Example: 77.1025
hotelSpec.​coordinates.​longitudenumber(double)required

Longitude of the Location

Example: 28.7041
hotelSpec.​contactInfoobject(ContactInfo)required

Provides contact information for a hotel.

hotelSpec.​contactInfo.​phoneArray of objects(PhoneNumber)required

List of phone numbers for the hotel.

hotelSpec.​contactInfo.​phone[].​countryCodeinteger(int32)

two digit country code

Example: 91
hotelSpec.​contactInfo.​phone[].​countryCodeSourcestring
Enum"UNSPECIFIED""FROM_NUMBER_WITH_PLUS_SIGN""FROM_NUMBER_WITH_IDD""FROM_NUMBER_WITHOUT_PLUS_SIGN""FROM_DEFAULT_COUNTRY"
Example: "FROM_NUMBER_WITH_PLUS_SIGN"
hotelSpec.​contactInfo.​phone[].​extensionstring

phone number extension

Example: "222"
hotelSpec.​contactInfo.​phone[].​isoCountryCodestring

ISO alpha-2 code

Example: "IN"
hotelSpec.​contactInfo.​phone[].​italianLeadingZeroboolean
Default false
Example: true
hotelSpec.​contactInfo.​phone[].​nationalNumberinteger(int64)
Example: 8150
hotelSpec.​contactInfo.​phone[].​numberOfLeadingZerosinteger(int32)
Default 0
Example: 1
hotelSpec.​contactInfo.​phone[].​preferredDomesticCarrierCodestring
Example: "7"
hotelSpec.​contactInfo.​phone[].​rawInputstring
Example: "77777"
hotelSpec.​contactInfo.​phone[].​typestring
Enum"UNKNOWN_TYPE""MOBILE""LANDLINE"
Example: "MOBILE"
hotelSpec.​contactInfo.​faxArray of strings

List of fax numbers for the hotel.

hotelSpec.​contactInfo.​emailArray of stringsrequired

List of email addresses for the hotel.

hotelSpec.​amenitiesArray of objects(Hotel Amenities)required

List of hotel amenities.

hotelSpec.​amenities[].​hotelAmenityTypestringrequired
Enum"TWENTY_FOUR_HOUR_FRONT_DESK""TWENTY_FOUR_HOUR_ROOM_SERVICE""TWENTY_FOUR_HOUR_SECURITY""ADJOINING_ROOMS""AIR_CONDITIONING""AIRLINE_DESK""ATM_CASH_MACHINE""BABY_SITTING""BBQ_PICNIC_AREA""BILINGUAL_STAFF"
Example: "ECO_FRIENDLY"
hotelSpec.​amenities[].​additionalInfostring

Amenity description

Example: "Complimentary in-room coffee or tea"
hotelSpec.​amenities[].​isComplimentaryboolean

Is Amenity complimentary

Example: true
hotelSpec.​descriptionsArray of objects(HotelDescription)

List of hotel descriptions.

hotelSpec.​imageSetsArray of objects(HotelImageSet)

List of hotel image sets.

hotelSpec.​hotelIdstringrequired

Unique hotel identifier.

Example: "SPOTNANA:1001"
hotelSpec.​brandCodestring

The code of hotel brand.

Example: "MC"
hotelSpec.​brandNamestring

Brand name of the hotel.

Example: "Marriott Hotel Brands"
hotelSpec.​chainCodestring

The code of hotel chain.

Example: "EM"
hotelSpec.​chainNamestring

Name of the hotel chain.

Example: "Marriott Hotels & Resorts"
hotelSpec.​propertyTypesArray of objects(Hotel Property Type)required

List of property types for the hotel.

hotelSpec.​propertyTypes[].​typestring(HotelPropertyEnum)required

Type of the property.

Enum"ALL_SUITE""ALL_INCLUSIVE_RESORT""APARTMENT""BED_AND_BREAKFAST""CABIN_OR_BUNGALOW""CAMPGROUND""CHALET""CONDOMINIUM""CONFERENCE_CENTER""CORPORATE_BUSINESS_TRANSIENT"
hotelSpec.​propertyTypes[].​descriptionstring

Description of the property type.

hotelSpec.​starRatingobject(HotelStarRatingInfo)required

Details about hotel star rating.

hotelSpec.​starRating.​starRatingnumber(float)[ 0 .. 5 ]required

Star rating of the hotel.

Example: 3
hotelSpec.​starRating.​ratingTypestring(Star Rating Type)required

Enum representing the type of star rating.

Enum"OFFICIAL""SELF_RATED"
hotelSpec.​additionalAmenitiesArray of strings

Additional amenities provided by the hotel.

hotelSpec.​checkinTimeobject(TimeLocal)

ISO8601 Local Time

hotelSpec.​checkoutTimeobject(TimeLocal)

ISO8601 Local Time

roomsArray of objects(Hotel Room Data)required

List of available rooms in the hotel.

rooms[].​descriptionstringrequired

A detailed description of the hotel room.

rooms[].​rateOptionsArray of objects(Rate Option)required

A list of rate options available for the hotel room.

rooms[].​rateOptions[].​bedInfosArray of objects(BedInfo)required

Information about the beds in the room.

rooms[].​rateOptions[].​bedInfos[].​bedCountinteger(int32)

Number of beds.

Example: 1
rooms[].​rateOptions[].​bedInfos[].​bedTypestring(BedType)

Bed types.

Enum"UNKNOWN_BED_TYPE""DOUBLE""FUTON""KING""MURPHY""QUEEN""SOFA""TATAMI_MATS""TWIN""SINGLE"
rooms[].​rateOptions[].​priceValidateKeystringrequired

A key used to validate the price.

rooms[].​rateOptions[].​descriptionstringrequired

A description of the rate option.

rooms[].​rateOptions[].​rateInfoobject(HotelRateInfo)required

Information about a hotel rate.

rooms[].​rateOptions[].​rateInfo.​rateSourcestringrequired

The source of the rate.

Enum"SABRE""BOOKING_COM""EXPEDIA""OFFLINE""HRS""BCD""QANTAS_HOTELS""HOTEL_HUB""MARRIOTT"
rooms[].​rateOptions[].​rateInfo.​totalRateobject(HotelRoomRate)required

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​totalRate.​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​totalRate.​taxobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​totalRate.​roomFeesArray of objects(RoomFee)
rooms[].​rateOptions[].​rateInfo.​totalRate.​commissionobject(Commission)

Commision on rate

rooms[].​rateOptions[].​rateInfo.​totalRate.​taxBreakdownArray of objects(TaxBreakdown)

Tax breakdown

rooms[].​rateOptions[].​rateInfo.​totalRate.​includesCommissionboolean

Whether the rate includes commission

Example: false
rooms[].​rateOptions[].​rateInfo.​rateTypestring(HotelRateType)required

The type of rate.

Enum"PUBLISHED""CORPORATE""SPOTNANA""REGULAR""AAA""AARP""SENIOR_CITIZEN""GOVERNMENT""MILITARY""MEMBERSHIP"
rooms[].​rateOptions[].​rateInfo.​nightlyRateArray of objects(HotelRoomRate)required

The nightly rate for the room.

rooms[].​rateOptions[].​rateInfo.​nightlyRate[].​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​nightlyRate[].​taxobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​nightlyRate[].​roomFeesArray of objects(RoomFee)
rooms[].​rateOptions[].​rateInfo.​nightlyRate[].​commissionobject(Commission)

Commision on rate

rooms[].​rateOptions[].​rateInfo.​nightlyRate[].​taxBreakdownArray of objects(TaxBreakdown)

Tax breakdown

rooms[].​rateOptions[].​rateInfo.​nightlyRate[].​includesCommissionboolean

Whether the rate includes commission

Example: false
rooms[].​rateOptions[].​rateInfo.​ratePlanNamestringrequired

The name of the rate plan.

rooms[].​rateOptions[].​rateInfo.​isCvvRequiredbooleanrequired

Indicates if CVV is required for payment.

rooms[].​rateOptions[].​rateInfo.​averageNightlyRateobject(HotelRoomRate)required

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​averageNightlyRate.​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​averageNightlyRate.​taxobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​averageNightlyRate.​roomFeesArray of objects(RoomFee)
rooms[].​rateOptions[].​rateInfo.​averageNightlyRate.​commissionobject(Commission)

Commision on rate

rooms[].​rateOptions[].​rateInfo.​averageNightlyRate.​taxBreakdownArray of objects(TaxBreakdown)

Tax breakdown

rooms[].​rateOptions[].​rateInfo.​averageNightlyRate.​includesCommissionboolean

Whether the rate includes commission

Example: false
rooms[].​rateOptions[].​rateInfo.​refundAmountobject(Money)

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​rateSupplierstring(ThirdPartySource)required

The supplier of the rate.

Enum"UNKNOWN_SOURCE""SABRE""TRAVEL_FUSION""AVIA""NDC""TRAINLINE""ATPCO_NDC""FARELOGIX_NDC""OFFLINE""CONNEXUS"
rooms[].​rateOptions[].​rateInfo.​publishedRateobject(HotelRoomRate)

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​publishedNightlyRateobject(HotelRoomRate)

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​rateDifferenceobject(HotelRoomRate)

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​prepaidRateobject(HotelRoomRate)required

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​prepaidRate.​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​prepaidRate.​taxobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​prepaidRate.​roomFeesArray of objects(RoomFee)
rooms[].​rateOptions[].​rateInfo.​prepaidRate.​commissionobject(Commission)

Commision on rate

rooms[].​rateOptions[].​rateInfo.​prepaidRate.​taxBreakdownArray of objects(TaxBreakdown)

Tax breakdown

rooms[].​rateOptions[].​rateInfo.​prepaidRate.​includesCommissionboolean

Whether the rate includes commission

Example: false
rooms[].​rateOptions[].​rateInfo.​postpaidRateobject(HotelRoomRate)required

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​postpaidRate.​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​postpaidRate.​taxobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​postpaidRate.​roomFeesArray of objects(RoomFee)
rooms[].​rateOptions[].​rateInfo.​postpaidRate.​commissionobject(Commission)

Commision on rate

rooms[].​rateOptions[].​rateInfo.​postpaidRate.​taxBreakdownArray of objects(TaxBreakdown)

Tax breakdown

rooms[].​rateOptions[].​rateInfo.​postpaidRate.​includesCommissionboolean

Whether the rate includes commission

Example: false
rooms[].​rateOptions[].​rateInfo.​penaltyAmountobject(Money)

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​rateTagstring

A tag associated with the rate.

rooms[].​rateOptions[].​mealsobject(HotelRoomMeals)

Meal details for the room

rooms[].​rateOptions[].​amenitiesArray of objects(HotelRoomAmenity)required

A list of amenities included with the rate.

rooms[].​rateOptions[].​amenities[].​additionalInfostring

Extra information about the room amenity

rooms[].​rateOptions[].​amenities[].​complimentaryboolean

Is amenity complimentary

Example: true
rooms[].​rateOptions[].​amenities[].​typestring

Room amenity type

Enum"UNKNOWN""ADJOINING_ROOMS""AIR_CONDITIONING""ALARM_CLOCK""ALL_NEWS_CHANNEL""AM_FM_RADIO""BABY_LISTENING_DEVICE""BALCONY_LANAI_TERRACE""BARBEQUE_GRILLS""BATH_TUB_WITH_SPRAY_JETS"
Example: "WEB_ENABLED"
rooms[].​rateOptions[].​cancellationPolicyobject(HotelCancellationPolicy)required

Cancellation policy for the PNR

rooms[].​rateOptions[].​cancellationPolicy.​refundablestring

Is refundable or not

Enum"UNKNOWN""TRUE""FALSE"
Example: "TRUE"
rooms[].​rateOptions[].​cancellationPolicy.​termsArray of objects(CancellationPolicyTerm)
rooms[].​rateOptions[].​policyInfoobject(CommonPolicyInfo)required

Includes detailed information about a policy, such as its unique identifier, type, name, rules, version, and approval type.

rooms[].​rateOptions[].​policyInfo.​idobject(EntityId)required

Identifier of an object

rooms[].​rateOptions[].​policyInfo.​id.​idstring(uuid)required
rooms[].​rateOptions[].​policyInfo.​policyTypestring(PolicyType)required

Policy type.

Enum"DEFAULT""GROUP""INTERNAL"
rooms[].​rateOptions[].​policyInfo.​policyNamestringrequired

Name of the policy.

rooms[].​rateOptions[].​policyInfo.​ruleResultInfosArray of objects(PolicyRuleResultInfo)

Information about the policy rules.

rooms[].​rateOptions[].​policyInfo.​versionintegerrequired

Version of the policy.

rooms[].​rateOptions[].​policyInfo.​approvalTypestring(ApprovalType)required

Type of APPROVAL

Enum"HARD_APPROVAL""SOFT_APPROVAL""PASSIVE_APPROVAL"
rooms[].​rateOptions[].​guaranteeTypestringrequired

The type of guarantee required for the rate.

Enum"GUARANTEE""DEPOSIT"
rooms[].​rateOptions[].​displayNamestringrequired

The display name of the rate option.

rooms[].​rateOptions[].​roomInfoobject(HotelRoomInfo)required

Information about the room.

rooms[].​rateOptions[].​roomInfo.​roomTypestring(RoomType)

Room Type

Enum"ROOM""SUITE""VILLA""APARTMENT""COTTAGE""STUDIO""UNKNOWN_ROOM"
rooms[].​rateOptions[].​roomInfo.​typeClassDescriptionstring

A description of the room type class.

rooms[].​rateOptions[].​roomInfo.​roomClassesArray of strings(RoomClass)

List of room class.

Items Enum"STANDARD""PREMIUM""DELUXE""BUSINESS""PRESIDENTIAL""SUPERIOR""JUNIOR""CLUB""UNKNOWN"
Example: ["PRESIDENTIAL"]
rooms[].​rateOptions[].​roomInfo.​roomViewstring(RoomView)

The type of room view.

Enum"UNKNOWN""AIRPORT""BAY""CITY""COURTYARD""GOLF""HARBOR""INTERCOASTAL""LAKE""MARINA"
rooms[].​rateOptions[].​rateGroupKeystringrequired

A key used to group similar rates.

rooms[].​rateOptions[].​additionalAmenitiesArray of strings

A list of additional amenities included with the rate.

rooms[].​rateOptions[].​isPrepaidRoombooleanrequired

Indicates if the room is prepaid.

rooms[].​rateOptions[].​supportedCardTypesArray of objects(Card Type)

A list of card types supported for payment.

rooms[].​rateOptions[].​numRoomsRequiredinteger(int32)required

The number of rooms required for this rate option.

rooms[].​rateOptions[].​maxOccupancyobject(Occupancy)required

The maximum occupancy for the room.

rooms[].​rateOptions[].​maxOccupancy.​numAdultsinteger>= 1required

The number of adults staying in the room.

Example: 1
rooms[].​rateOptions[].​maxOccupancy.​numChildreninteger

The number of children staying in the room.

Example: 0
rooms[].​rateOptions[].​isModifiablebooleanrequired

Indicates if the rate is modifiable.

rooms[].​rateOptions[].​additionalDetailsArray of objects(HotelAdditionalDetail)

A list of additional details about the rate option.

rooms[].​rateOptions[].​earnLoyaltyPointsbooleanrequired

Indicates if loyalty points can be earned with this rate.

rooms[].​rateOptions[].​rewardPointsEarnedArray of objects(Reward Points Earned)required

A list of reward points earned with this rate.

rooms[].​rateOptions[].​rewardPointsEarned[].​rewardPointsTypestringrequired

Type of reward points.

Enum"QBR""QFF"
rooms[].​rateOptions[].​rewardPointsEarned[].​totalPointsEarnednumber(double)required

Total points that will be credited.

rooms[].​rateOptions[].​rewardPointsEarned[].​conversionMultipliernumber(double)required

Multiplier for converting points.

rooms[].​rateOptions[].​promotionalOffersArray of objects(Promotional Offer)

A list of promotional offers applicable to the rate.

rooms[].​rateOptions[].​paymentDescriptionArray of strings

A list of descriptions related to payment for the rate.

rooms[].​rateOptions[].​isFopModifiablebooleanrequired

Indicates if the form of payment is modifiable.

rooms[].​rateOptions[].​accessibilityInfoArray of objects(Accessibility)

A list of accessibility features for the rate.

rooms[].​imageSetsArray of objects(HotelImageSet)

A list of image sets for the hotel room.

rooms[].​roomGroupKeystring

A unique key identifying the room group.

rooms[].​penaltyAmountobject(Money)

Money object containing details such as the amount, the currency code, and the converted amount.

bookedRoomsArray of objects(Hotel Room Data)

List of booked rooms in the hotel, present only as part of modification details response.

occupancyDatesobject(OccupancyDates)required

Occupancy values and dates for the hotel details.

occupancyDates.​occupancyArray of objects(Occupancy)required

List of occupancy details including the number of adults and children.

occupancyDates.​occupancy[].​numAdultsinteger>= 1required

The number of adults staying in the room.

Example: 1
occupancyDates.​occupancy[].​numChildreninteger

The number of children staying in the room.

Example: 0
occupancyDates.​checkInDateobject(DateTimeLocal)required

Local date and time represented in the ISO 8601 standard.

occupancyDates.​checkInDate.​iso8601string^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01...required
Example: "2017-07-21T17:32"
occupancyDates.​checkOutDateobject(DateTimeLocal)required

Local date and time represented in the ISO 8601 standard.

occupancyDates.​checkOutDate.​iso8601string^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01...required
Example: "2017-07-21T17:32"
rateStatisticsobject(HotelRateStatistics)

Contains statistical information about hotel search results.

showOnlyBaseFareboolean

Flag to indicate if only the base fare should be shown.

preferencesArray of objects(Preference)

List of user preferences.

termsAndConditionsArray of objects(TermsAndConditions)

List of terms and conditions applicable to the booking.

Response
application/json
{ "hotelSpec": { "name": "London Heathrow Marriott Hotel", "address": {}, "coordinates": {}, "contactInfo": {}, "amenities": [], "descriptions": [], "imageSets": [], "hotelId": "SPOTNANA:1001", "brandCode": "MC", "brandName": "Marriott Hotel Brands", "chainCode": "EM", "chainName": "Marriott Hotels & Resorts", "propertyTypes": [], "starRating": {}, "additionalAmenities": [], "checkinTime": {}, "checkoutTime": {} }, "rooms": [ {} ], "bookedRooms": [ {} ], "occupancyDates": { "occupancy": [], "checkInDate": {}, "checkOutDate": {} }, "rateStatistics": { "median": {}, "sampleSize": 100, "policyType": "DEFAULT" }, "showOnlyBaseFare": true, "preferences": [ {} ], "termsAndConditions": [ {} ] }

Verify hotel price

Request

Checks if the previously selected hotel price has been modified. To indicate the change in hotel price, the priceChange field in the response will be set to true and the price object will contain the latest hotel price. If the price remains unchanged, the priceChange field will be set as false and the price object will contain the original price.

Bodyapplication/jsonrequired
priceValidateKeystringrequired

The key used to validate the price.

tripIdstring

The trip ID for the booking.

curl -i -X POST \
  https://developer.spotnana.com/_mock/openapi/hotelapi/v2/hotel/price-check \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "priceValidateKey": "string",
    "tripId": "string"
  }'

Responses

OK

Bodyapplication/json
bookingKeystringrequired

The unique key used to make the hotel booking.

timeoutinteger(int32)required

Timeout for the booking key in seconds.

priceChangebooleanrequired

Indicates if the price has changed.

priceobject(HotelRoomRate)required

Rate details for hotel room

price.​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

price.​base.​amountnumber(double)required

The numeric value for the amount of money.

Example: 510
price.​base.​currencyCodestringrequired

The 3-letter currency code for the money amount (defined using ISO 4217 standard).

Example: "GBP"
price.​base.​convertedAmountnumber(double)

The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).

Example: 715.42
price.​base.​convertedCurrencystring

The 3-letter currency code for the converted currency (defined using ISO 4217 standard).

Example: "USD"
price.​base.​otherCoinageArray of objects(OtherCoinage)

List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.

price.​taxobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

price.​tax.​amountnumber(double)required

The numeric value for the amount of money.

Example: 510
price.​tax.​currencyCodestringrequired

The 3-letter currency code for the money amount (defined using ISO 4217 standard).

Example: "GBP"
price.​tax.​convertedAmountnumber(double)

The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).

Example: 715.42
price.​tax.​convertedCurrencystring

The 3-letter currency code for the converted currency (defined using ISO 4217 standard).

Example: "USD"
price.​tax.​otherCoinageArray of objects(OtherCoinage)

List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.

price.​roomFeesArray of objects(RoomFee)
price.​commissionobject(Commission)

Commision on rate

price.​taxBreakdownArray of objects(TaxBreakdown)

Tax breakdown

price.​includesCommissionboolean

Whether the rate includes commission

Example: false
Response
application/json
{ "bookingKey": "string", "timeout": 0, "priceChange": true, "price": { "base": {}, "tax": {}, "roomFees": [], "commission": {}, "taxBreakdown": [], "includesCommission": false } }

Validate rebooking for price optimization

Request

Validates if a hotel rebooking can be performed for price optimization purpose. The Source PNR ID provided in the request will be checked if it's eligible for rebooking. In the response, if isValid is true then users can proceed to checkout flow, which cancels the existing Source PNR and creates a new PNR to save booking cost.

Bodyapplication/jsonrequired
cancelSourcePnrIdstringrequired

Source PNR ID that needs to be validated.

Example: "1cf76aba18e4015f"
travelersArray of objects(Traveler)required

List of travelers

travelers[].​travelerPersonalInfoobject(TravelerPersonalInfo)

Traveler personal information.

travelers[].​userobject(User)

User details.

travelers[].​userBusinessInfoobject(UserBusinessInfo)

User business information.

travelers[].​userOrgIdobject(UserOrgId)

User and user's organization information.

travelers[].​personastring(Persona)

Persona of the user

Enum"UNKNOWN_PERSONA""EMPLOYEE""GUEST""PERSONAL""RELATIVE""ADHOC"
travelers[].​isActiveboolean

A boolean flag to show if traveler is active.

Example: true
travelers[].​tierstring(Tier)

Tier of User. Note: In default UI, BASIC is displayed as Standard, and SEAT1A is displayed as VIP.

Enum"BASIC""SEAT1A"
travelers[].​adhocUserInfoobject(AdhocUserInfo)

Basic information related to ad-hoc traveler profile.

travelers[].​externalIdstring

External id of this user.

tripIdobject(TripId)required

Id of trip.

tripId.​idstringrequired

Id.

Example: "2783425534"
curl -i -X POST \
  https://developer.spotnana.com/_mock/openapi/hotelapi/v2/hotel/validate-rebooking \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "cancelSourcePnrId": "1cf76aba18e4015f",
    "travelers": [
      {
        "travelerPersonalInfo": {
          "loyaltyInfos": [
            {
              "appliedTo": [
                "TAJ"
              ],
              "id": "firstId",
              "issuedBy": "firstIssuedBy",
              "type": "AIR"
            }
          ],
          "travelPref": {
            "airPref": {
              "airlinePrefs": [
                {
                  "airlines": []
                }
              ],
              "alliancePref": {
                "alliances": [
                  null
                ]
              },
              "farePref": {
                "fareTypes": [
                  null
                ]
              },
              "homeAirport": "NEW YORK",
              "mealPref": {
                "exclMealPrefs": [
                  null
                ],
                "inclMealPrefs": [
                  null
                ],
                "specialMealDescription": "Veg only meal"
              },
              "numStopPref": {
                "numOfStops": 34
              },
              "seatAmenityPref": {
                "seatAmenityTypes": [
                  null
                ]
              },
              "seatLocationPrefs": [
                {
                  "cabins": []
                }
              ],
              "preferredAirports": [
                {}
              ]
            },
            "preferredCurrency": "USD",
            "railCards": [
              {
                "cardNumber": "string",
                "expiryDate": {},
                "name": "Veterans Railcard",
                "spotnanaCode": "VET",
                "vendor": "ATOC"
              }
            ],
            "railPref": {
              "preferredRailStations": [
                {}
              ],
              "seatPreference": {
                "hasAccessibility": false,
                "seatTypes": [
                  null
                ],
                "seatLocations": [
                  null
                ],
                "deckLevels": [
                  null
                ],
                "seatDirections": [
                  null
                ]
              },
              "travelClasses": [
                "FIRST"
              ],
              "coachPreferences": [
                "NON_SMOKING"
              ],
              "conditionalRates": [
                "AAA"
              ]
            },
            "carPref": {
              "vendors": [
                {}
              ],
              "carTypes": [
                "ECONOMY"
              ],
              "engineTypes": [
                "PETROL"
              ],
              "transmissionTypes": [
                "AUTOMATIC"
              ],
              "conditionalRates": [
                "AAA"
              ]
            },
            "hotelPref": {
              "hotelParentChains": [
                {}
              ],
              "hotelBrands": [
                {}
              ],
              "hotelAmenityTypes": [
                "PARKING"
              ],
              "roomPreference": {
                "isMobilityAccessible": false,
                "bedCount": "ONE_BED",
                "roomType": "SMOKING",
                "mostImportantFact": "BED_COUNT",
                "roomLocation": "HIGH_FLOOR",
                "pillowType": "FOAM",
                "roomAmenityPrefs": [
                  null
                ]
              },
              "conditionalRates": [
                "AAA"
              ]
            }
          }
        },
        "user": {
          "addresses": [
            {
              "addressLines": [
                "Golden Gate Bridge"
              ],
              "administrativeArea": "CA",
              "administrativeAreaName": "California",
              "description": "San Francisco Home",
              "isDefault": true,
              "languageCode": "en",
              "locality": "San Francisco",
              "locationCode": "LAX",
              "organization": "Spotnana",
              "postalCode": "94130",
              "continentCode": "AF",
              "recipients": [
                "string"
              ],
              "regionCode": "US",
              "regionName": "America",
              "revision": 1,
              "sortingCode": "Jamaica",
              "sublocality": "string",
              "timezone": "America/Los_Angeles",
              "coordinates": {
                "latitude": 77.1025,
                "longitude": 28.7041
              }
            }
          ],
          "dob": {
            "iso8601": "2017-07-21"
          },
          "email": "example@email.com",
          "emergencyContactInfo": {
            "address": {
              "addressLines": [
                "Golden Gate Bridge"
              ],
              "administrativeArea": "CA",
              "administrativeAreaName": "California",
              "description": "San Francisco Home",
              "isDefault": true,
              "languageCode": "en",
              "locality": "San Francisco",
              "locationCode": "LAX",
              "organization": "Spotnana",
              "postalCode": "94130",
              "continentCode": "AF",
              "recipients": [
                "string"
              ],
              "regionCode": "US",
              "regionName": "America",
              "revision": 1,
              "sortingCode": "Jamaica",
              "sublocality": "string",
              "timezone": "America/Los_Angeles",
              "coordinates": {
                "latitude": 77.1025,
                "longitude": 28.7041
              }
            },
            "designation": "MANAGER",
            "email": "emergency-contact@email.com",
            "name": {
              "family1": "Gandas",
              "family2": "FamilyTwo",
              "given": "Vichitr",
              "middle": "Kumar",
              "suffix": "SR",
              "preferred": "Don"
            },
            "phoneNumber": {
              "countryCode": 91,
              "countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
              "extension": "222",
              "isoCountryCode": "IN",
              "italianLeadingZero": true,
              "nationalNumber": 8150,
              "numberOfLeadingZeros": 1,
              "preferredDomesticCarrierCode": "7",
              "rawInput": "77777",
              "type": "MOBILE"
            },
            "userOrgId": {
              "organizationAgencyId": {
                "id": "string"
              },
              "organizationId": {
                "id": "string"
              },
              "userId": {
                "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
              },
              "tmcInfo": {
                "id": {},
                "primaryServiceProviderTmc": {},
                "secondaryServiceProviderTmcs": [
                  null
                ],
                "partnerTmcId": {}
              },
              "tmcBasicInfo": {
                "contractingTmc": {},
                "bookingTmc": {}
              }
            }
          },
          "emergencyContact": {
            "name": "John Smith",
            "email": "emergency-contact@email.com",
            "designation": "MANAGER",
            "relation": "SPOUSE",
            "phoneNumbers": [
              {
                "countryCode": 91,
                "countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
                "extension": "222",
                "isoCountryCode": "IN",
                "italianLeadingZero": true,
                "nationalNumber": 8150,
                "numberOfLeadingZeros": 1,
                "preferredDomesticCarrierCode": "7",
                "rawInput": "77777",
                "type": "MOBILE"
              }
            ],
            "preferredLanguage": "en-US"
          },
          "gender": "FEMALE",
          "identityDocs": [
            {
              "passport": {
                "docId": "PASSPORTID",
                "expiryDate": {
                  "iso8601": "2017-07-21"
                },
                "issueCountry": "IN",
                "issuedDate": {
                  "iso8601": "2017-07-21"
                },
                "nationalityCountry": "IN",
                "type": "REGULAR"
              }
            },
            {
              "ktn": {
                "number": "123456",
                "issueCountry": "US"
              }
            }
          ],
          "name": {
            "family1": "Gandas",
            "family2": "FamilyTwo",
            "given": "Vichitr",
            "middle": "Kumar",
            "suffix": "SR",
            "preferred": "Don"
          },
          "paymentInfos": [
            {
              "applicableTo": [
                "HOTEL"
              ],
              "card": {
                "id": "34d536b6-f8ff-11eb-9a61-0242ac180002",
                "type": "CREDIT",
                "company": "VISA",
                "name": "Harrison Schwartz",
                "address": {
                  "addressLines": [],
                  "recipients": []
                },
                "number": "4111111111111111",
                "expiryMonth": 1,
                "expiryYear": 2010,
                "cvv": "012",
                "label": "Label amex",
                "currency": "USD",
                "externalId": "bxt_RNGsNfzgJDaTstKIKqK4xEuhGYAnMdYK8T40",
                "vaultId": "34d536b6-f8ff-11eb-9a61-0242ac180002",
                "expiry": {},
                "ownershipLabel": "CENTRAL"
              },
              "accessType": "UNKNOWN_TYPE",
              "access": {
                "accessType": "UNKNOWN_TYPE",
                "entityIds": [
                  null
                ],
                "entities": [
                  null
                ]
              }
            }
          ],
          "phoneNumbers": [
            {
              "countryCode": 91,
              "countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
              "extension": "222",
              "isoCountryCode": "IN",
              "italianLeadingZero": true,
              "nationalNumber": 8150,
              "numberOfLeadingZeros": 1,
              "preferredDomesticCarrierCode": "7",
              "rawInput": "77777",
              "type": "MOBILE"
            }
          ],
          "profilePicture": {
            "data": "6935813e12584abda0e43d71cd2ea260",
            "dimensions": {
              "height": 120,
              "width": 240
            },
            "url": "https://static.wixstatic.com/media/73f2e2_6935813e12584abda0e43d71cd2ea260~mv2.png/v1/fill/w_630,h_94,al_c,q_85,usm_0.66_1.00_0.01/Spotnana%403x.webp"
          },
          "nationality": "Indian",
          "title": "MR"
        },
        "userBusinessInfo": {
          "department": {
            "id": {
              "id": "631ccbcf-9414-5fe0-c234-b324dfbe7422"
            },
            "name": "IT Department",
            "externalId": "department-ext-id",
            "employeeCount": 57
          },
          "designation": "MANAGER",
          "email": "user@business.com",
          "employeeId": "101",
          "grade": {
            "employeeCount": 75,
            "id": {
              "id": "831ccbcb-1416-7fe2-e236-d324dfbe7424"
            },
            "name": "Grade"
          },
          "legalEntityId": {
            "id": "fc1ccbce-8413-4fe9-b233-a324dfbe7421"
          },
          "managerBasicInfo": {
            "userOrgId": {
              "organizationAgencyId": {
                "id": "string"
              },
              "organizationId": {
                "id": "string"
              },
              "userId": {
                "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
              },
              "tmcInfo": {
                "id": {},
                "primaryServiceProviderTmc": {},
                "secondaryServiceProviderTmcs": [
                  null
                ],
                "partnerTmcId": {}
              },
              "tmcBasicInfo": {
                "contractingTmc": {},
                "bookingTmc": {}
              }
            },
            "persona": "EMPLOYEE",
            "email": "example@email.com",
            "name": {
              "family1": "Gandas",
              "family2": "FamilyTwo",
              "given": "Vichitr",
              "middle": "Kumar",
              "suffix": "SR",
              "preferred": "Don"
            },
            "profilePicture": {
              "data": "6935813e12584abda0e43d71cd2ea260",
              "dimensions": {
                "height": 120,
                "width": 240
              },
              "url": "https://static.wixstatic.com/media/73f2e2_6935813e12584abda0e43d71cd2ea260~mv2.png/v1/fill/w_630,h_94,al_c,q_85,usm_0.66_1.00_0.01/Spotnana%403x.webp"
            },
            "tier": "SEAT1A",
            "phoneNumber": {
              "countryCode": 91,
              "countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
              "extension": "222",
              "isoCountryCode": "IN",
              "italianLeadingZero": true,
              "nationalNumber": 8150,
              "numberOfLeadingZeros": 1,
              "preferredDomesticCarrierCode": "7",
              "rawInput": "77777",
              "type": "MOBILE"
            },
            "employeeId": "string",
            "isActive": true
          },
          "office": {
            "address": {
              "addressLines": [
                "Golden Gate Bridge"
              ],
              "administrativeArea": "CA",
              "administrativeAreaName": "California",
              "description": "San Francisco Home",
              "isDefault": true,
              "languageCode": "en",
              "locality": "San Francisco",
              "locationCode": "LAX",
              "organization": "Spotnana",
              "postalCode": "94130",
              "continentCode": "AF",
              "recipients": [
                "string"
              ],
              "regionCode": "US",
              "regionName": "America",
              "revision": 1,
              "sortingCode": "Jamaica",
              "sublocality": "string",
              "timezone": "America/Los_Angeles",
              "coordinates": {
                "latitude": 77.1025,
                "longitude": 28.7041
              }
            },
            "id": {
              "id": "531ccbce-8413-4fe9-b233-a324dfbe7421"
            },
            "name": "Office",
            "latlng": {
              "latitude": 77.1025,
              "longitude": 28.7041
            },
            "taxId": "133232"
          },
          "organizationId": {
            "id": "string"
          },
          "phoneNumbers": [
            {
              "countryCode": 91,
              "countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
              "extension": "222",
              "isoCountryCode": "IN",
              "italianLeadingZero": true,
              "nationalNumber": 8150,
              "numberOfLeadingZeros": 1,
              "preferredDomesticCarrierCode": "7",
              "rawInput": "77777",
              "type": "MOBILE"
            }
          ],
          "userCostCenter": {
            "employeeCount": 120,
            "id": {
              "id": "731ccbca-0415-6fe1-d235-c324dfbe7423"
            },
            "name": "CostCenter",
            "externalId": "external-id"
          },
          "designatedApproverInfos": [
            {
              "userOrgId": {
                "organizationAgencyId": {},
                "organizationId": {},
                "userId": {},
                "tmcInfo": {
                  "secondaryServiceProviderTmcs": []
                },
                "tmcBasicInfo": {}
              },
              "persona": "EMPLOYEE",
              "email": "example@email.com",
              "name": {
                "family1": "Gandas",
                "family2": "FamilyTwo",
                "given": "Vichitr",
                "middle": "Kumar",
                "suffix": "SR",
                "preferred": "Don"
              },
              "profilePicture": {
                "data": "6935813e12584abda0e43d71cd2ea260",
                "dimensions": {},
                "url": "https://static.wixstatic.com/media/73f2e2_6935813e12584abda0e43d71cd2ea260~mv2.png/v1/fill/w_630,h_94,al_c,q_85,usm_0.66_1.00_0.01/Spotnana%403x.webp"
              },
              "tier": "SEAT1A",
              "phoneNumber": {
                "countryCode": 91,
                "countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
                "extension": "222",
                "isoCountryCode": "IN",
                "italianLeadingZero": true,
                "nationalNumber": 8150,
                "numberOfLeadingZeros": 1,
                "preferredDomesticCarrierCode": "7",
                "rawInput": "77777",
                "type": "MOBILE"
              },
              "employeeId": "string",
              "isActive": true
            }
          ],
          "designatedApproverUserIds": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
            }
          ],
          "authorizerEmail": "example@email.com"
        },
        "userOrgId": {
          "organizationAgencyId": {
            "id": "string"
          },
          "organizationId": {
            "id": "string"
          },
          "userId": {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
          },
          "tmcInfo": {
            "id": {
              "id": "f49d00fe-1eda-4304-ba79-a980f565281d"
            },
            "primaryServiceProviderTmc": {
              "tmcId": {
                "id": "f49d00fe-1eda-4304-ba79-a980f565281d"
              }
            },
            "secondaryServiceProviderTmcs": [
              {
                "tmcId": {},
                "supplier": "SABRE",
                "travelType": "AIR"
              }
            ],
            "partnerTmcId": {
              "id": "f49d00fe-1eda-4304-ba79-a980f565281d"
            }
          },
          "tmcBasicInfo": {
            "contractingTmc": {
              "id": {
                "id": "f49d00fe-1eda-4304-ba79-a980f565281d"
              },
              "name": "string",
              "logo": {
                "data": "6935813e12584abda0e43d71cd2ea260",
                "dimensions": {},
                "url": "https://static.wixstatic.com/media/73f2e2_6935813e12584abda0e43d71cd2ea260~mv2.png/v1/fill/w_630,h_94,al_c,q_85,usm_0.66_1.00_0.01/Spotnana%403x.webp"
              }
            },
            "bookingTmc": {
              "id": {
                "id": "f49d00fe-1eda-4304-ba79-a980f565281d"
              },
              "name": "string",
              "logo": {
                "data": "6935813e12584abda0e43d71cd2ea260",
                "dimensions": {},
                "url": "https://static.wixstatic.com/media/73f2e2_6935813e12584abda0e43d71cd2ea260~mv2.png/v1/fill/w_630,h_94,al_c,q_85,usm_0.66_1.00_0.01/Spotnana%403x.webp"
              }
            }
          }
        },
        "persona": "EMPLOYEE",
        "isActive": true,
        "tier": "SEAT1A",
        "adhocUserInfo": {
          "profileOwner": {
            "userId": {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
            }
          },
          "isSaved": false
        },
        "externalId": "string"
      }
    ],
    "tripId": {
      "id": "2783425534"
    }
  }'

Responses

OK

Bodyapplication/json
isValidbooleanrequired

Indicates if the validation is successful.

Example: true
spotnanaPnrIdstringrequired

The Spotnana PNR ID of the corresponding source PNR ID provided in the request.

Example: "1cf76aba18e4015f"
Response
application/json
{ "isValid": true, "spotnanaPnrId": "1cf76aba18e4015f" }

Create a new hotel booking

Request

Creates a new hotel booking for the given request parameters.

Bodyapplication/jsonrequired
bookingKeystringrequired

The booking key for the hotel booking.

Example: "example_booking_key"
travelersArray of objects(Travelers)required

The list of travelers and their details. The traveler at index 0 will be considered as the primary traveler and their details will be passed to the supplier.

travelers[].​travelerIdobject(UserId)required

User identifier

travelers[].​travelerId.​idstring(uuid)required
travelers[].​nameobject(Name)required

Full name containing first, middle, last (family) names, and suffix.

travelers[].​name.​family1stringrequired

Last (family) name.

Example: "Gandas"
travelers[].​name.​family2string
Example: "FamilyTwo"
travelers[].​name.​givenstringrequired

First (given) name.

Example: "Vichitr"
travelers[].​name.​middlestring

Middle name.

Example: "Kumar"
travelers[].​name.​suffixstring(NameSuffix)

Suffix for name

Enum"NAME_SUFFIX_UNKNOWN""SR""JR""MD""PHD""II""III""IV""DO""ATTY"
Example: "SR"
travelers[].​name.​preferredstring

Informal preferred name added by traveler. This is not used on any PNR or tickets

Example: "Don"
travelers[].​dobobject(DateModel)

Date in ISO 8601 standard.

travelers[].​phoneNumberobject(PhoneNumber)required

Properly formatted phone number.

travelers[].​phoneNumber.​countryCodeinteger(int32)

two digit country code

Example: 91
travelers[].​phoneNumber.​countryCodeSourcestring
Enum"UNSPECIFIED""FROM_NUMBER_WITH_PLUS_SIGN""FROM_NUMBER_WITH_IDD""FROM_NUMBER_WITHOUT_PLUS_SIGN""FROM_DEFAULT_COUNTRY"
Example: "FROM_NUMBER_WITH_PLUS_SIGN"
travelers[].​phoneNumber.​extensionstring

phone number extension

Example: "222"
travelers[].​phoneNumber.​isoCountryCodestring

ISO alpha-2 code

Example: "IN"
travelers[].​phoneNumber.​italianLeadingZeroboolean
Default false
Example: true
travelers[].​phoneNumber.​nationalNumberinteger(int64)
Example: 8150
travelers[].​phoneNumber.​numberOfLeadingZerosinteger(int32)
Default 0
Example: 1
travelers[].​phoneNumber.​preferredDomesticCarrierCodestring
Example: "7"
travelers[].​phoneNumber.​rawInputstring
Example: "77777"
travelers[].​phoneNumber.​typestring
Enum"UNKNOWN_TYPE""MOBILE""LANDLINE"
Example: "MOBILE"
travelers[].​emailstringrequired

Email of the traveler.

Example: "mail@mail.com"
travelers[].​loyaltyInfoobject(LoyaltyInfo)

Loyalty Info details.

travelers[].​adhocInfoobject

Adhoc Info of the traveler. It is only present if the traveler is adhoc user.

tripDataobject(TripData)required

Trip data to book a PNR.

tripData.​approverEmailstring

Email address of the approver who should receives approval email for the current booking.

tripData.​approverNamestring

Name of the approver.

tripData.​hardApprovalRequiredboolean

Whether the current booking requires hard approval or soft approval. This flag should be used only if valid approver is present.

tripData.​outOfPolicyboolean

If the given booking is out of policy.

tripData.​policyIdstring

Policy Id for which violation is done.

tripData.​policyVersioninteger(int32)

Version of policy.

tripData.​tripIdobject(TripId)required

Id of trip.

tripData.​tripId.​idstringrequired

Id.

Example: "2783425534"
preBookAnswersobject(PreBookAnswers)
bookingPaymentDetailsobject(BookingPaymentDetails)required

Payment details used for booking.

bookingPaymentDetails.​bookingTravelerPaymentDetailsArray of objects(BookingTravelerPaymentDetails)required
bookingPaymentDetails.​bookingTravelerPaymentDetails[].​selectedFormOfPaymentsArray of objects(SelectedFormOfPayment)required
bookingPaymentDetails.​bookingTravelerPaymentDetails[].​selectedFormOfPayments[].​paymentItemsArray of objects(PaymentItem)required
bookingPaymentDetails.​bookingTravelerPaymentDetails[].​selectedFormOfPayments[].​paymentItems[].​itemTypestring(ItemType)

Type of payment item eligible for this fop rule

Enum"SERVICE_FEE""TRAVEL_TICKET""SEAT""BAGGAGE""EARLY_BIRD"
bookingPaymentDetails.​bookingTravelerPaymentDetails[].​selectedFormOfPayments[].​paymentItems[].​fareComponentArray of strings(FareComponent)
Items Enum"BASE""TAX"
Example: ["BASE"]
bookingPaymentDetails.​bookingTravelerPaymentDetails[].​selectedFormOfPayments[].​selectedPaymentSourcesArray of objects(SelectedPaymentSource)required
bookingPaymentDetails.​bookingTravelerPaymentDetails[].​selectedFormOfPayments[].​selectedPaymentSources[].​paymentSourceIdstring(uuid)

Unique identifier identifying this payment source.

Example: "f49d00fe-1eda-4304-ba79-a980f565281d"
bookingPaymentDetails.​bookingTravelerPaymentDetails[].​selectedFormOfPayments[].​selectedPaymentSources[].​rawPaymentSourceRawPaymentSourceDetails (object) or RawPaymentSourceDetails (object)(RawPaymentSourceDetails)
One of:

Object to pass through dpan payment source details through the api call.

bookingPaymentDetails.​bookingTravelerPaymentDetails[].​selectedFormOfPayments[].​selectedPaymentSources[].​postPaymentRedirectionUrlstring

Url for post payment redirection if payment source navigates user to a third party url

Example: "https://mycompany.com/checkout?paymentSourceId=f49d00fe-1eda-4304-ba79-a980f565281d"
bookingPaymentDetails.​bookingTravelerPaymentDetails[].​selectedFormOfPayments[].​selectedPaymentSources[].​cvvstring

CVV associated with associated payment source, if any.

bookingPaymentDetails.​bookingTravelerPaymentDetails[].​selectedFormOfPayments[].​selectedPaymentSources[].​amountobject(Money)

Money object containing details such as the amount, the currency code, and the converted amount.

bookingContactobject(BookingContact)required
bookingContact.​emailAddressstring

Email address of the booking contact

Example: "mail@mail.com"
bookingContact.​phoneNumberobject(PhoneNumber)

Properly formatted phone number.

hotelSpecialRequestsobject(HotelSpecialRequests)

Hotel special requests

cancelSourcePnrIdstring

The source PNR ID within the booking source that needs to be canceled in favor of the new booking that is being created.

Example: "ABC123"
hotelRateAssuranceInfoobject(HotelRateAssuranceMetadata)

Savings information from the rate assurance rebooking

curl -i -X POST \
  https://developer.spotnana.com/_mock/openapi/hotelapi/v2/hotel/create-pnr \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "bookingKey": "example_booking_key",
    "travelers": [
      {
        "travelerId": {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
        },
        "name": {
          "family1": "Gandas",
          "family2": "FamilyTwo",
          "given": "Vichitr",
          "middle": "Kumar",
          "suffix": "SR",
          "preferred": "Don"
        },
        "dob": {
          "iso8601": "2017-07-21"
        },
        "phoneNumber": {
          "countryCode": 91,
          "countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
          "extension": "222",
          "isoCountryCode": "IN",
          "italianLeadingZero": true,
          "nationalNumber": 8150,
          "numberOfLeadingZeros": 1,
          "preferredDomesticCarrierCode": "7",
          "rawInput": "77777",
          "type": "MOBILE"
        },
        "email": "mail@mail.com",
        "loyaltyInfo": {
          "appliedTo": [
            "TAJ"
          ],
          "id": "firstId",
          "issuedBy": "firstIssuedBy",
          "type": "AIR"
        },
        "adhocInfo": {
          "profileOwnerId": {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
          }
        }
      }
    ],
    "tripData": {
      "approverEmail": "string",
      "approverName": "string",
      "hardApprovalRequired": true,
      "outOfPolicy": true,
      "policyId": "string",
      "policyVersion": 0,
      "tripId": {
        "id": "2783425534"
      }
    },
    "preBookAnswers": {
      "answers": [
        {
          "entityId": "string",
          "userInput": "string",
          "itemIds": [
            0
          ],
          "answers": [
            {
              "item": "string",
              "value": "string",
              "description": "string"
            }
          ],
          "customFieldType": "QUESTION",
          "questionDisplayText": "string",
          "question": {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
            "name": "string",
            "questionFormat": "CHECKBOX",
            "optionInfo": {
              "source": "MANUAL",
              "sourceMetadata": {
                "companyConfig": {}
              },
              "totalNumOptions": 0,
              "options": [
                {}
              ]
            },
            "isRequired": true,
            "isDisabled": true,
            "includeInItinerary": true,
            "customFieldLocations": [
              "POLICY_APPROVAL_EMAIL"
            ],
            "matchConditions": {
              "travelerConditions": {
                "workerTypes": [
                  null
                ],
                "countries": [
                  null
                ],
                "legalEntities": [
                  null
                ],
                "departments": [
                  null
                ],
                "costCenters": [
                  null
                ],
                "offices": [
                  null
                ]
              },
              "travelTypes": [
                "AIR"
              ],
              "travelRegionTypes": [
                "DOMESTIC"
              ],
              "tripUsageTypes": [
                "STANDARD"
              ]
            },
            "questionType": {
              "preSearchQuestionType": "PURPOSE_OF_TRIP",
              "preCheckoutQuestionType": "OOP_REASON_CODE"
            }
          }
        }
      ],
      "preBookQuestionResponseId": "string"
    },
    "bookingPaymentDetails": {
      "bookingTravelerPaymentDetails": [
        {
          "selectedFormOfPayments": [
            {
              "paymentItems": [
                {
                  "fareComponent": []
                }
              ],
              "selectedPaymentSources": [
                {}
              ]
            }
          ]
        }
      ]
    },
    "bookingContact": {
      "emailAddress": "mail@mail.com",
      "phoneNumber": {
        "countryCode": 91,
        "countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
        "extension": "222",
        "isoCountryCode": "IN",
        "italianLeadingZero": true,
        "nationalNumber": 8150,
        "numberOfLeadingZeros": 1,
        "preferredDomesticCarrierCode": "7",
        "rawInput": "77777",
        "type": "MOBILE"
      }
    },
    "hotelSpecialRequests": {
      "roomLocations": [
        "HIGH_FLOOR"
      ],
      "roomFeatures": [
        "FEATHER_FREE_ROOM"
      ],
      "checkIn": "LATE_CHECK_IN",
      "checkInTime": {
        "iso8601": "17:32"
      },
      "flightNumber": "AC1234",
      "additionalNote": "Extra pillows and blankets for added comfort during the stay.",
      "accessibleFeatures": [
        "MOBILITY_ACCESSIBLE_ROOM_WITH_TUB"
      ]
    },
    "cancelSourcePnrId": "ABC123",
    "hotelRateAssuranceInfo": {
      "selfReportedSavings": {
        "amount": 510,
        "currencyCode": "GBP"
      },
      "actualSavings": {
        "amount": 510,
        "currencyCode": "GBP"
      }
    }
  }'

Responses

OK

Bodyapplication/json
pnrIdstringrequired

A unique PNR ID created by Spotnana for the new hotel booking.

Example: "7373737373"
pnrStatusstringrequired

The status of the PNR.

Enum"SUCCESS""APPROVAL_PENDING""CONFIRMATION_PENDING"
Example: "SUCCESS"
externalPnrIdstring

The external PNR ID for the hotel booking, created by the third party suppliers.

Example: "ABC123"
Response
application/json
{ "pnrId": "7373737373", "pnrStatus": "SUCCESS", "externalPnrId": "ABC123" }

Cancel hotel pnr

Request

This endpoint deletes a pnr by pnrID.

Path
pnrIdstringrequired

Pnr Id of the Pnr to be cancelled.

Example: 4974a66b
curl -i -X POST \
  'https://developer.spotnana.com/_mock/openapi/hotelapi/v2/hotel/pnrs/{pnrId}/cancel-pnr' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Bodyapplication/json
confirmationIdstringrequired

The confirmation ID of the cancelled hotel pnr.

Example: "231241232"
Response
application/json
{ "confirmationId": "231241232" }

Modify hotel details

Request

Modify the details of an existing hotel booking. This API displays the list of modifications available for the same hotel. Currently, the details such as occupancy date and room type can be modified. To confirm the selected changes, use the Modify hotel booking API.

Path
pnrIdstringrequired

PNR ID of the hotel booking for which the details need to be modified.

Example: 4974a66b
Bodyapplication/jsonrequired
occupancyDatesobject(OccupancyDates)required

Occupancy values and dates for the hotel details.

occupancyDates.​occupancyArray of objects(Occupancy)required

List of occupancy details including the number of adults and children.

occupancyDates.​occupancy[].​numAdultsinteger>= 1required

The number of adults staying in the room.

Example: 1
occupancyDates.​occupancy[].​numChildreninteger

The number of children staying in the room.

Example: 0
occupancyDates.​checkInDateobject(DateTimeLocal)required

Local date and time represented in the ISO 8601 standard.

occupancyDates.​checkInDate.​iso8601string^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01...required
Example: "2017-07-21T17:32"
occupancyDates.​checkOutDateobject(DateTimeLocal)required

Local date and time represented in the ISO 8601 standard.

occupancyDates.​checkOutDate.​iso8601string^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01...required
Example: "2017-07-21T17:32"
corporateInfoobject(CorporateInfoV2)

Corporate data to be collected during the search request workflow.

curl -i -X POST \
  'https://developer.spotnana.com/_mock/openapi/hotelapi/v2/hotel/pnrs/{pnrId}/modify-details' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "occupancyDates": {
      "occupancy": [
        {
          "numAdults": 1,
          "numChildren": 0
        }
      ],
      "checkInDate": {
        "iso8601": "2017-07-21T17:32"
      },
      "checkOutDate": {
        "iso8601": "2017-07-21T17:32"
      }
    },
    "corporateInfo": {
      "preSearchAnswers": {
        "answers": [
          {
            "entityId": "string",
            "userInput": "string",
            "itemIds": [
              0
            ],
            "answers": [
              {
                "item": "string",
                "value": "string",
                "description": "string"
              }
            ],
            "customFieldType": "QUESTION",
            "questionDisplayText": "string",
            "question": {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "questionFormat": "CHECKBOX",
              "optionInfo": {
                "source": "MANUAL",
                "sourceMetadata": {},
                "totalNumOptions": 0,
                "options": [
                  null
                ]
              },
              "isRequired": true,
              "isDisabled": true,
              "includeInItinerary": true,
              "customFieldLocations": [
                "POLICY_APPROVAL_EMAIL"
              ],
              "matchConditions": {
                "travelerConditions": {
                  "workerTypes": [],
                  "countries": [],
                  "legalEntities": [],
                  "departments": [],
                  "costCenters": [],
                  "offices": []
                },
                "travelTypes": [
                  null
                ],
                "travelRegionTypes": [
                  null
                ],
                "tripUsageTypes": [
                  null
                ]
              },
              "questionType": {
                "preSearchQuestionType": "PURPOSE_OF_TRIP",
                "preCheckoutQuestionType": "OOP_REASON_CODE"
              }
            }
          }
        ],
        "userEntitiesResponseId": "string"
      }
    }
  }'

Responses

OK

Bodyapplication/json
hotelSpecobject(HotelSpec)required

Includes detailed specifications for a hotel, such as name, star rating, address, coordinates, amenities, and other information.

hotelSpec.​namestringrequired

Name of the hotel.

Example: "London Heathrow Marriott Hotel"
hotelSpec.​addressobject(PostalAddress)required

Postal Address Details

hotelSpec.​address.​addressLinesArray of stringsrequired

Address lines

Example: ["Golden Gate Bridge"]
hotelSpec.​address.​administrativeAreastring

Code of administrative area. For example: DL for Delhi, India. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. "Barcelona" and not "Catalonia"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.

Example: "CA"
hotelSpec.​address.​administrativeAreaNamestring

Name of administrative area. This is full name corresponding to administrativeArea. Like Delhi for DL area code. For some places, code and name maybe same as well like Tokyo.

Example: "California"
hotelSpec.​address.​descriptionstring

Address description

Example: "San Francisco Home"
hotelSpec.​address.​isDefaultboolean

Whether this address is default address in case multiple addresses are specified.

Example: true
hotelSpec.​address.​languageCodestring

BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. Examples: "zh-Hant", "ja", "ja-Latn", "en".

Example: "en"
hotelSpec.​address.​localitystring

Generally refers to the city/town portion of the address.

Example: "San Francisco"
hotelSpec.​address.​locationCodestring

IATA 3-letter location code. See https://www.iata.org/en/services/codes.

Example: "LAX"
hotelSpec.​address.​organizationstring

The name of the organization at the address.

Example: "Spotnana"
hotelSpec.​address.​postalCodestring

Postal code of the address. This is a required field when setting for a user/legal entity/company etc.

Example: "94130"
hotelSpec.​address.​continentCodestring

2 letter continent code of the continent this address falls in.

Example: "AF"
hotelSpec.​address.​recipientsArray of strings

The recipient at the address.

hotelSpec.​address.​regionCodestringrequired

Region code of the country/region of the address.

Example: "US"
hotelSpec.​address.​regionNamestring

Region name of the country/region of the address.

Example: "America"
hotelSpec.​address.​revisioninteger(int32)
Example: 1
hotelSpec.​address.​sortingCodestring

Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like "CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or just a number alone, representing the "sector code" (Jamaica), "delivery area indicator" (Malawi) or "post office indicator" (e.g. Côte d'Ivoire).

Example: "Jamaica"
hotelSpec.​address.​sublocalitystring

Sublocality of the address. This can be neighborhoods, boroughs, districts.

hotelSpec.​address.​timezonestring

Time zone of the address.

Example: "America/Los_Angeles"
hotelSpec.​address.​coordinatesobject(Latlng)

Latitude and Longitude for a Location

hotelSpec.​coordinatesobject(Latlng)required

Latitude and Longitude for a Location

hotelSpec.​coordinates.​latitudenumber(double)required

Latitude of the Location

Example: 77.1025
hotelSpec.​coordinates.​longitudenumber(double)required

Longitude of the Location

Example: 28.7041
hotelSpec.​contactInfoobject(ContactInfo)required

Provides contact information for a hotel.

hotelSpec.​contactInfo.​phoneArray of objects(PhoneNumber)required

List of phone numbers for the hotel.

hotelSpec.​contactInfo.​phone[].​countryCodeinteger(int32)

two digit country code

Example: 91
hotelSpec.​contactInfo.​phone[].​countryCodeSourcestring
Enum"UNSPECIFIED""FROM_NUMBER_WITH_PLUS_SIGN""FROM_NUMBER_WITH_IDD""FROM_NUMBER_WITHOUT_PLUS_SIGN""FROM_DEFAULT_COUNTRY"
Example: "FROM_NUMBER_WITH_PLUS_SIGN"
hotelSpec.​contactInfo.​phone[].​extensionstring

phone number extension

Example: "222"
hotelSpec.​contactInfo.​phone[].​isoCountryCodestring

ISO alpha-2 code

Example: "IN"
hotelSpec.​contactInfo.​phone[].​italianLeadingZeroboolean
Default false
Example: true
hotelSpec.​contactInfo.​phone[].​nationalNumberinteger(int64)
Example: 8150
hotelSpec.​contactInfo.​phone[].​numberOfLeadingZerosinteger(int32)
Default 0
Example: 1
hotelSpec.​contactInfo.​phone[].​preferredDomesticCarrierCodestring
Example: "7"
hotelSpec.​contactInfo.​phone[].​rawInputstring
Example: "77777"
hotelSpec.​contactInfo.​phone[].​typestring
Enum"UNKNOWN_TYPE""MOBILE""LANDLINE"
Example: "MOBILE"
hotelSpec.​contactInfo.​faxArray of strings

List of fax numbers for the hotel.

hotelSpec.​contactInfo.​emailArray of stringsrequired

List of email addresses for the hotel.

hotelSpec.​amenitiesArray of objects(Hotel Amenities)required

List of hotel amenities.

hotelSpec.​amenities[].​hotelAmenityTypestringrequired
Enum"TWENTY_FOUR_HOUR_FRONT_DESK""TWENTY_FOUR_HOUR_ROOM_SERVICE""TWENTY_FOUR_HOUR_SECURITY""ADJOINING_ROOMS""AIR_CONDITIONING""AIRLINE_DESK""ATM_CASH_MACHINE""BABY_SITTING""BBQ_PICNIC_AREA""BILINGUAL_STAFF"
Example: "ECO_FRIENDLY"
hotelSpec.​amenities[].​additionalInfostring

Amenity description

Example: "Complimentary in-room coffee or tea"
hotelSpec.​amenities[].​isComplimentaryboolean

Is Amenity complimentary

Example: true
hotelSpec.​descriptionsArray of objects(HotelDescription)

List of hotel descriptions.

hotelSpec.​imageSetsArray of objects(HotelImageSet)

List of hotel image sets.

hotelSpec.​hotelIdstringrequired

Unique hotel identifier.

Example: "SPOTNANA:1001"
hotelSpec.​brandCodestring

The code of hotel brand.

Example: "MC"
hotelSpec.​brandNamestring

Brand name of the hotel.

Example: "Marriott Hotel Brands"
hotelSpec.​chainCodestring

The code of hotel chain.

Example: "EM"
hotelSpec.​chainNamestring

Name of the hotel chain.

Example: "Marriott Hotels & Resorts"
hotelSpec.​propertyTypesArray of objects(Hotel Property Type)required

List of property types for the hotel.

hotelSpec.​propertyTypes[].​typestring(HotelPropertyEnum)required

Type of the property.

Enum"ALL_SUITE""ALL_INCLUSIVE_RESORT""APARTMENT""BED_AND_BREAKFAST""CABIN_OR_BUNGALOW""CAMPGROUND""CHALET""CONDOMINIUM""CONFERENCE_CENTER""CORPORATE_BUSINESS_TRANSIENT"
hotelSpec.​propertyTypes[].​descriptionstring

Description of the property type.

hotelSpec.​starRatingobject(HotelStarRatingInfo)required

Details about hotel star rating.

hotelSpec.​starRating.​starRatingnumber(float)[ 0 .. 5 ]required

Star rating of the hotel.

Example: 3
hotelSpec.​starRating.​ratingTypestring(Star Rating Type)required

Enum representing the type of star rating.

Enum"OFFICIAL""SELF_RATED"
hotelSpec.​additionalAmenitiesArray of strings

Additional amenities provided by the hotel.

hotelSpec.​checkinTimeobject(TimeLocal)

ISO8601 Local Time

hotelSpec.​checkoutTimeobject(TimeLocal)

ISO8601 Local Time

roomsArray of objects(Hotel Room Data)required

List of available rooms in the hotel.

rooms[].​descriptionstringrequired

A detailed description of the hotel room.

rooms[].​rateOptionsArray of objects(Rate Option)required

A list of rate options available for the hotel room.

rooms[].​rateOptions[].​bedInfosArray of objects(BedInfo)required

Information about the beds in the room.

rooms[].​rateOptions[].​bedInfos[].​bedCountinteger(int32)

Number of beds.

Example: 1
rooms[].​rateOptions[].​bedInfos[].​bedTypestring(BedType)

Bed types.

Enum"UNKNOWN_BED_TYPE""DOUBLE""FUTON""KING""MURPHY""QUEEN""SOFA""TATAMI_MATS""TWIN""SINGLE"
rooms[].​rateOptions[].​priceValidateKeystringrequired

A key used to validate the price.

rooms[].​rateOptions[].​descriptionstringrequired

A description of the rate option.

rooms[].​rateOptions[].​rateInfoobject(HotelRateInfo)required

Information about a hotel rate.

rooms[].​rateOptions[].​rateInfo.​rateSourcestringrequired

The source of the rate.

Enum"SABRE""BOOKING_COM""EXPEDIA""OFFLINE""HRS""BCD""QANTAS_HOTELS""HOTEL_HUB""MARRIOTT"
rooms[].​rateOptions[].​rateInfo.​totalRateobject(HotelRoomRate)required

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​totalRate.​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​totalRate.​taxobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​totalRate.​roomFeesArray of objects(RoomFee)
rooms[].​rateOptions[].​rateInfo.​totalRate.​commissionobject(Commission)

Commision on rate

rooms[].​rateOptions[].​rateInfo.​totalRate.​taxBreakdownArray of objects(TaxBreakdown)

Tax breakdown

rooms[].​rateOptions[].​rateInfo.​totalRate.​includesCommissionboolean

Whether the rate includes commission

Example: false
rooms[].​rateOptions[].​rateInfo.​rateTypestring(HotelRateType)required

The type of rate.

Enum"PUBLISHED""CORPORATE""SPOTNANA""REGULAR""AAA""AARP""SENIOR_CITIZEN""GOVERNMENT""MILITARY""MEMBERSHIP"
rooms[].​rateOptions[].​rateInfo.​nightlyRateArray of objects(HotelRoomRate)required

The nightly rate for the room.

rooms[].​rateOptions[].​rateInfo.​nightlyRate[].​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​nightlyRate[].​taxobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​nightlyRate[].​roomFeesArray of objects(RoomFee)
rooms[].​rateOptions[].​rateInfo.​nightlyRate[].​commissionobject(Commission)

Commision on rate

rooms[].​rateOptions[].​rateInfo.​nightlyRate[].​taxBreakdownArray of objects(TaxBreakdown)

Tax breakdown

rooms[].​rateOptions[].​rateInfo.​nightlyRate[].​includesCommissionboolean

Whether the rate includes commission

Example: false
rooms[].​rateOptions[].​rateInfo.​ratePlanNamestringrequired

The name of the rate plan.

rooms[].​rateOptions[].​rateInfo.​isCvvRequiredbooleanrequired

Indicates if CVV is required for payment.

rooms[].​rateOptions[].​rateInfo.​averageNightlyRateobject(HotelRoomRate)required

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​averageNightlyRate.​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​averageNightlyRate.​taxobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​averageNightlyRate.​roomFeesArray of objects(RoomFee)
rooms[].​rateOptions[].​rateInfo.​averageNightlyRate.​commissionobject(Commission)

Commision on rate

rooms[].​rateOptions[].​rateInfo.​averageNightlyRate.​taxBreakdownArray of objects(TaxBreakdown)

Tax breakdown

rooms[].​rateOptions[].​rateInfo.​averageNightlyRate.​includesCommissionboolean

Whether the rate includes commission

Example: false
rooms[].​rateOptions[].​rateInfo.​refundAmountobject(Money)

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​rateSupplierstring(ThirdPartySource)required

The supplier of the rate.

Enum"UNKNOWN_SOURCE""SABRE""TRAVEL_FUSION""AVIA""NDC""TRAINLINE""ATPCO_NDC""FARELOGIX_NDC""OFFLINE""CONNEXUS"
rooms[].​rateOptions[].​rateInfo.​publishedRateobject(HotelRoomRate)

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​publishedNightlyRateobject(HotelRoomRate)

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​rateDifferenceobject(HotelRoomRate)

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​prepaidRateobject(HotelRoomRate)required

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​prepaidRate.​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​prepaidRate.​taxobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​prepaidRate.​roomFeesArray of objects(RoomFee)
rooms[].​rateOptions[].​rateInfo.​prepaidRate.​commissionobject(Commission)

Commision on rate

rooms[].​rateOptions[].​rateInfo.​prepaidRate.​taxBreakdownArray of objects(TaxBreakdown)

Tax breakdown

rooms[].​rateOptions[].​rateInfo.​prepaidRate.​includesCommissionboolean

Whether the rate includes commission

Example: false
rooms[].​rateOptions[].​rateInfo.​postpaidRateobject(HotelRoomRate)required

Rate details for hotel room

rooms[].​rateOptions[].​rateInfo.​postpaidRate.​baseobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​postpaidRate.​taxobject(Money)required

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​postpaidRate.​roomFeesArray of objects(RoomFee)
rooms[].​rateOptions[].​rateInfo.​postpaidRate.​commissionobject(Commission)

Commision on rate

rooms[].​rateOptions[].​rateInfo.​postpaidRate.​taxBreakdownArray of objects(TaxBreakdown)

Tax breakdown

rooms[].​rateOptions[].​rateInfo.​postpaidRate.​includesCommissionboolean

Whether the rate includes commission

Example: false
rooms[].​rateOptions[].​rateInfo.​penaltyAmountobject(Money)

Money object containing details such as the amount, the currency code, and the converted amount.

rooms[].​rateOptions[].​rateInfo.​rateTagstring

A tag associated with the rate.

rooms[].​rateOptions[].​mealsobject(HotelRoomMeals)

Meal details for the room

rooms[].​rateOptions[].​amenitiesArray of objects(HotelRoomAmenity)required

A list of amenities included with the rate.

rooms[].​rateOptions[].​amenities[].​additionalInfostring

Extra information about the room amenity

rooms[].​rateOptions[].​amenities[].​complimentaryboolean

Is amenity complimentary

Example: true
rooms[].​rateOptions[].​amenities[].​typestring

Room amenity type

Enum"UNKNOWN""ADJOINING_ROOMS""AIR_CONDITIONING""ALARM_CLOCK""ALL_NEWS_CHANNEL""AM_FM_RADIO""BABY_LISTENING_DEVICE""BALCONY_LANAI_TERRACE""BARBEQUE_GRILLS""BATH_TUB_WITH_SPRAY_JETS"
Example: "WEB_ENABLED"
rooms[].​rateOptions[].​cancellationPolicyobject(HotelCancellationPolicy)required

Cancellation policy for the PNR

rooms[].​rateOptions[].​cancellationPolicy.​refundablestring

Is refundable or not

Enum"UNKNOWN""TRUE""FALSE"
Example: "TRUE"
rooms[].​rateOptions[].​cancellationPolicy.​termsArray of objects(CancellationPolicyTerm)
rooms[].​rateOptions[].​policyInfoobject(CommonPolicyInfo)required

Includes detailed information about a policy, such as its unique identifier, type, name, rules, version, and approval type.

rooms[].​rateOptions[].​policyInfo.​idobject(EntityId)required

Identifier of an object

rooms[].​rateOptions[].​policyInfo.​id.​idstring(uuid)required
rooms[].​rateOptions[].​policyInfo.​policyTypestring(PolicyType)required

Policy type.

Enum"DEFAULT""GROUP""INTERNAL"
rooms[].​rateOptions[].​policyInfo.​policyNamestringrequired

Name of the policy.

rooms[].​rateOptions[].​policyInfo.​ruleResultInfosArray of objects(PolicyRuleResultInfo)

Information about the policy rules.

rooms[].​rateOptions[].​policyInfo.​versionintegerrequired

Version of the policy.

rooms[].​rateOptions[].​policyInfo.​approvalTypestring(ApprovalType)required

Type of APPROVAL

Enum"HARD_APPROVAL""SOFT_APPROVAL""PASSIVE_APPROVAL"
rooms[].​rateOptions[].​guaranteeTypestringrequired

The type of guarantee required for the rate.

Enum"GUARANTEE""DEPOSIT"
rooms[].​rateOptions[].​displayNamestringrequired

The display name of the rate option.

rooms[].​rateOptions[].​roomInfoobject(HotelRoomInfo)required

Information about the room.

rooms[].​rateOptions[].​roomInfo.​roomTypestring(RoomType)

Room Type

Enum"ROOM""SUITE""VILLA""APARTMENT""COTTAGE""STUDIO""UNKNOWN_ROOM"
rooms[].​rateOptions[].​roomInfo.​typeClassDescriptionstring

A description of the room type class.

rooms[].​rateOptions[].​roomInfo.​roomClassesArray of strings(RoomClass)

List of room class.

Items Enum"STANDARD""PREMIUM""DELUXE""BUSINESS""PRESIDENTIAL""SUPERIOR""JUNIOR""CLUB""UNKNOWN"
Example: ["PRESIDENTIAL"]
rooms[].​rateOptions[].​roomInfo.​roomViewstring(RoomView)

The type of room view.

Enum"UNKNOWN""AIRPORT""BAY""CITY""COURTYARD""GOLF""HARBOR""INTERCOASTAL""LAKE""MARINA"
rooms[].​rateOptions[].​rateGroupKeystringrequired

A key used to group similar rates.

rooms[].​rateOptions[].​additionalAmenitiesArray of strings

A list of additional amenities included with the rate.

rooms[].​rateOptions[].​isPrepaidRoombooleanrequired

Indicates if the room is prepaid.

rooms[].​rateOptions[].​supportedCardTypesArray of objects(Card Type)

A list of card types supported for payment.

rooms[].​rateOptions[].​numRoomsRequiredinteger(int32)required

The number of rooms required for this rate option.

rooms[].​rateOptions[].​maxOccupancyobject(Occupancy)required

The maximum occupancy for the room.

rooms[].​rateOptions[].​maxOccupancy.​numAdultsinteger>= 1required

The number of adults staying in the room.

Example: 1
rooms[].​rateOptions[].​maxOccupancy.​numChildreninteger

The number of children staying in the room.

Example: 0
rooms[].​rateOptions[].​isModifiablebooleanrequired

Indicates if the rate is modifiable.

rooms[].​rateOptions[].​additionalDetailsArray of objects(HotelAdditionalDetail)

A list of additional details about the rate option.

rooms[].​rateOptions[].​earnLoyaltyPointsbooleanrequired

Indicates if loyalty points can be earned with this rate.

rooms[].​rateOptions[].​rewardPointsEarnedArray of objects(Reward Points Earned)required

A list of reward points earned with this rate.

rooms[].​rateOptions[].​rewardPointsEarned[].​rewardPointsTypestringrequired

Type of reward points.

Enum"QBR""QFF"
rooms[].​rateOptions[].​rewardPointsEarned[].​totalPointsEarnednumber(double)required

Total points that will be credited.

rooms[].​rateOptions[].​rewardPointsEarned[].​conversionMultipliernumber(double)required

Multiplier for converting points.

rooms[].​rateOptions[].​promotionalOffersArray of objects(Promotional Offer)

A list of promotional offers applicable to the rate.

rooms[].​rateOptions[].​paymentDescriptionArray of strings

A list of descriptions related to payment for the rate.

rooms[].​rateOptions[].​isFopModifiablebooleanrequired

Indicates if the form of payment is modifiable.

rooms[].​rateOptions[].​accessibilityInfoArray of objects(Accessibility)

A list of accessibility features for the rate.

rooms[].​imageSetsArray of objects(HotelImageSet)

A list of image sets for the hotel room.

rooms[].​roomGroupKeystring

A unique key identifying the room group.

rooms[].​penaltyAmountobject(Money)

Money object containing details such as the amount, the currency code, and the converted amount.

bookedRoomsArray of objects(Hotel Room Data)

List of booked rooms in the hotel, present only as part of modification details response.

occupancyDatesobject(OccupancyDates)required

Occupancy values and dates for the hotel details.

occupancyDates.​occupancyArray of objects(Occupancy)required

List of occupancy details including the number of adults and children.

occupancyDates.​occupancy[].​numAdultsinteger>= 1required

The number of adults staying in the room.

Example: 1
occupancyDates.​occupancy[].​numChildreninteger

The number of children staying in the room.

Example: 0
occupancyDates.​checkInDateobject(DateTimeLocal)required

Local date and time represented in the ISO 8601 standard.

occupancyDates.​checkInDate.​iso8601string^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01...required
Example: "2017-07-21T17:32"
occupancyDates.​checkOutDateobject(DateTimeLocal)required

Local date and time represented in the ISO 8601 standard.

occupancyDates.​checkOutDate.​iso8601string^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01...required
Example: "2017-07-21T17:32"
rateStatisticsobject(HotelRateStatistics)

Contains statistical information about hotel search results.

showOnlyBaseFareboolean

Flag to indicate if only the base fare should be shown.

preferencesArray of objects(Preference)

List of user preferences.

termsAndConditionsArray of objects(TermsAndConditions)

List of terms and conditions applicable to the booking.

Response
application/json
{ "hotelSpec": { "name": "London Heathrow Marriott Hotel", "address": {}, "coordinates": {}, "contactInfo": {}, "amenities": [], "descriptions": [], "imageSets": [], "hotelId": "SPOTNANA:1001", "brandCode": "MC", "brandName": "Marriott Hotel Brands", "chainCode": "EM", "chainName": "Marriott Hotels & Resorts", "propertyTypes": [], "starRating": {}, "additionalAmenities": [], "checkinTime": {}, "checkoutTime": {} }, "rooms": [ {} ], "bookedRooms": [ {} ], "occupancyDates": { "occupancy": [], "checkInDate": {}, "checkOutDate": {} }, "rateStatistics": { "median": {}, "sampleSize": 100, "policyType": "DEFAULT" }, "showOnlyBaseFare": true, "preferences": [ {} ], "termsAndConditions": [ {} ] }

Modify hotel booking

Request

Modify an existing hotel booking based on the request parameters. This API is used to confirm the requested changes for the booking.

Path
pnrIdstringrequired

PNR ID of the hotel booking that needs to be modified.

Example: 4974a66b
Bodyapplication/jsonrequired
bookingKeystringrequired

The booking key for the hotel booking

Example: "example_booking_key"
travelersArray of objects(Travelers)required

The list of travelers, the first traveler is considered as primary traveler

travelers[].​travelerIdobject(UserId)required

User identifier

travelers[].​travelerId.​idstring(uuid)required
travelers[].​nameobject(Name)required

Full name containing first, middle, last (family) names, and suffix.

travelers[].​name.​family1stringrequired

Last (family) name.

Example: "Gandas"
travelers[].​name.​family2string
Example: "FamilyTwo"
travelers[].​name.​givenstringrequired

First (given) name.

Example: "Vichitr"
travelers[].​name.​middlestring

Middle name.

Example: "Kumar"
travelers[].​name.​suffixstring(NameSuffix)

Suffix for name

Enum"NAME_SUFFIX_UNKNOWN""SR""JR""MD""PHD""II""III""IV""DO""ATTY"
Example: "SR"
travelers[].​name.​preferredstring

Informal preferred name added by traveler. This is not used on any PNR or tickets

Example: "Don"
travelers[].​dobobject(DateModel)

Date in ISO 8601 standard.

travelers[].​phoneNumberobject(PhoneNumber)required

Properly formatted phone number.

travelers[].​phoneNumber.​countryCodeinteger(int32)

two digit country code

Example: 91
travelers[].​phoneNumber.​countryCodeSourcestring
Enum"UNSPECIFIED""FROM_NUMBER_WITH_PLUS_SIGN""FROM_NUMBER_WITH_IDD""FROM_NUMBER_WITHOUT_PLUS_SIGN""FROM_DEFAULT_COUNTRY"
Example: "FROM_NUMBER_WITH_PLUS_SIGN"
travelers[].​phoneNumber.​extensionstring

phone number extension

Example: "222"
travelers[].​phoneNumber.​isoCountryCodestring

ISO alpha-2 code

Example: "IN"
travelers[].​phoneNumber.​italianLeadingZeroboolean
Default false
Example: true
travelers[].​phoneNumber.​nationalNumberinteger(int64)
Example: 8150
travelers[].​phoneNumber.​numberOfLeadingZerosinteger(int32)
Default 0
Example: 1
travelers[].​phoneNumber.​preferredDomesticCarrierCodestring
Example: "7"
travelers[].​phoneNumber.​rawInputstring
Example: "77777"
travelers[].​phoneNumber.​typestring
Enum"UNKNOWN_TYPE""MOBILE""LANDLINE"
Example: "MOBILE"
travelers[].​emailstringrequired

Email of the traveler.

Example: "mail@mail.com"
travelers[].​loyaltyInfoobject(LoyaltyInfo)

Loyalty Info details.

travelers[].​adhocInfoobject

Adhoc Info of the traveler. It is only present if the traveler is adhoc user.

tripDataobject(TripData)required

Trip data to book a PNR.

tripData.​approverEmailstring

Email address of the approver who should receives approval email for the current booking.

tripData.​approverNamestring

Name of the approver.

tripData.​hardApprovalRequiredboolean

Whether the current booking requires hard approval or soft approval. This flag should be used only if valid approver is present.

tripData.​outOfPolicyboolean

If the given booking is out of policy.

tripData.​policyIdstring

Policy Id for which violation is done.

tripData.​policyVersioninteger(int32)

Version of policy.

tripData.​tripIdobject(TripId)required

Id of trip.

tripData.​tripId.​idstringrequired

Id.

Example: "2783425534"
preBookAnswersobject(PreBookAnswers)
hotelSpecialRequestsobject(HotelSpecialRequests)

Hotel special requests

bookingPaymentDetailsobject(BookingPaymentDetails)

Payment details used for booking.

bookingContactobject(BookingContact)required
bookingContact.​emailAddressstring

Email address of the booking contact

Example: "mail@mail.com"
bookingContact.​phoneNumberobject(PhoneNumber)

Properly formatted phone number.

curl -i -X POST \
  'https://developer.spotnana.com/_mock/openapi/hotelapi/v2/hotel/pnrs/{pnrId}/modify-book' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "bookingKey": "example_booking_key",
    "travelers": [
      {
        "travelerId": {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
        },
        "name": {
          "family1": "Gandas",
          "family2": "FamilyTwo",
          "given": "Vichitr",
          "middle": "Kumar",
          "suffix": "SR",
          "preferred": "Don"
        },
        "dob": {
          "iso8601": "2017-07-21"
        },
        "phoneNumber": {
          "countryCode": 91,
          "countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
          "extension": "222",
          "isoCountryCode": "IN",
          "italianLeadingZero": true,
          "nationalNumber": 8150,
          "numberOfLeadingZeros": 1,
          "preferredDomesticCarrierCode": "7",
          "rawInput": "77777",
          "type": "MOBILE"
        },
        "email": "mail@mail.com",
        "loyaltyInfo": {
          "appliedTo": [
            "TAJ"
          ],
          "id": "firstId",
          "issuedBy": "firstIssuedBy",
          "type": "AIR"
        },
        "adhocInfo": {
          "profileOwnerId": {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
          }
        }
      }
    ],
    "tripData": {
      "approverEmail": "string",
      "approverName": "string",
      "hardApprovalRequired": true,
      "outOfPolicy": true,
      "policyId": "string",
      "policyVersion": 0,
      "tripId": {
        "id": "2783425534"
      }
    },
    "preBookAnswers": {
      "answers": [
        {
          "entityId": "string",
          "userInput": "string",
          "itemIds": [
            0
          ],
          "answers": [
            {
              "item": "string",
              "value": "string",
              "description": "string"
            }
          ],
          "customFieldType": "QUESTION",
          "questionDisplayText": "string",
          "question": {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
            "name": "string",
            "questionFormat": "CHECKBOX",
            "optionInfo": {
              "source": "MANUAL",
              "sourceMetadata": {
                "companyConfig": {}
              },
              "totalNumOptions": 0,
              "options": [
                {}
              ]
            },
            "isRequired": true,
            "isDisabled": true,
            "includeInItinerary": true,
            "customFieldLocations": [
              "POLICY_APPROVAL_EMAIL"
            ],
            "matchConditions": {
              "travelerConditions": {
                "workerTypes": [
                  null
                ],
                "countries": [
                  null
                ],
                "legalEntities": [
                  null
                ],
                "departments": [
                  null
                ],
                "costCenters": [
                  null
                ],
                "offices": [
                  null
                ]
              },
              "travelTypes": [
                "AIR"
              ],
              "travelRegionTypes": [
                "DOMESTIC"
              ],
              "tripUsageTypes": [
                "STANDARD"
              ]
            },
            "questionType": {
              "preSearchQuestionType": "PURPOSE_OF_TRIP",
              "preCheckoutQuestionType": "OOP_REASON_CODE"
            }
          }
        }
      ],
      "preBookQuestionResponseId": "string"
    },
    "hotelSpecialRequests": {
      "roomLocations": [
        "HIGH_FLOOR"
      ],
      "roomFeatures": [
        "FEATHER_FREE_ROOM"
      ],
      "checkIn": "LATE_CHECK_IN",
      "checkInTime": {
        "iso8601": "17:32"
      },
      "flightNumber": "AC1234",
      "additionalNote": "Extra pillows and blankets for added comfort during the stay.",
      "accessibleFeatures": [
        "MOBILITY_ACCESSIBLE_ROOM_WITH_TUB"
      ]
    },
    "bookingPaymentDetails": {
      "bookingTravelerPaymentDetails": [
        {
          "selectedFormOfPayments": [
            {
              "paymentItems": [
                {
                  "fareComponent": []
                }
              ],
              "selectedPaymentSources": [
                {}
              ]
            }
          ]
        }
      ]
    },
    "bookingContact": {
      "emailAddress": "mail@mail.com",
      "phoneNumber": {
        "countryCode": 91,
        "countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
        "extension": "222",
        "isoCountryCode": "IN",
        "italianLeadingZero": true,
        "nationalNumber": 8150,
        "numberOfLeadingZeros": 1,
        "preferredDomesticCarrierCode": "7",
        "rawInput": "77777",
        "type": "MOBILE"
      }
    }
  }'

Responses

OK

Bodyapplication/json
pnrIdstringrequired

The unique PNR ID for the modified hotel booking

Example: "7373737373"
pnrStatusstringrequired

The status of the PNR

Enum"INITIATED""CANCELLED""CONFIRMED""PENDING""CONTACT_SUPPORT""REQUEST_PENDING""REQUESTED"
Example: "CONFIRMED"
externalPnrIdstring

The external PNR ID for the modified hotel booking, provided by the third party suppliers

Example: "ABC123"
Response
application/json
{ "pnrId": "7373737373", "pnrStatus": "CONFIRMED", "externalPnrId": "ABC123" }