---
title: "Returns detailed information about a hotel reservation."
method: POST
path: "/hotels/reservation/read"
tags: ["Service"]
---

# Returns detailed information about a hotel reservation.

`POST /hotels/reservation/read`

Read reservation details. Used in a process of reserving a hotel to acknowledge receipt of booking confirmation as well as write information to Itinerary. Not invoked by user, but by automatic Concur process. Hotel Supplier should reply with the same response as provided for the book response.

## Headers

- `Accept-Language` string
- `concur-correlationid` string, required

## Request body

- ReadCriteria
  - `confirmationCodes` ConfirmationCode[], required
    - `code` string, required
    - `codeType` 'RESERVATION' | 'SUPPLIER_CONFIRMATION' | 'CANCELLATION' | 'HOTEL_CONFIRMATION' | 'CONCUR_GDS_REFERENCE' | 'PASSIVE_CONFIRMATION' | 'PIN', required — Confirmation Code Types that maps to OTA codes for Unique Id Types list RESERVATION(Record Locator)=14, SUPPLIER_CONFIRMATION=40, CANCELLATION=50, HOTEL_CONFIRMATION(Property Confirmation No.)=10, CONCUR_GDS_REFERENCE -> Concur Booking Record Locator for Passives
  - `requestorInfo` RequestorInfo, required — Information about POS (Point Of Sale), traveler and user associated with this request
    - `bookingForSelf` boolean — Is logged in person booking for self or on behalf of someone else
    - `loginId` string — Login ID of traveler within Concur. Only sent when available.
    - `posRequestorId` string, required — An identifier of the entity making the request (e.g. ATA/IATA/ID number)
    - `travelerUuid` string, required — UUID that identifies the traveler within Concur
    - `gdsName` 'SABRE' | 'AMADEUS' | 'TRAVELPORT' — Name of the GDS (Global Distribution System) to be used for this booking (active or passive segment). Supported values: SABRE, AMADEUS, TRAVELPORT
    - `pcc` string — Pseudo City Code or Office ID (OID) for the GDS account to be used for this booking (active or passive segment).
    - `singlePNR` boolean — Indicates if the booking should be made in a single PNR (Passenger Name Record) for all travelers. If true, all travelers will be booked under the same PNR. If false, each traveler will have their own PNR.

## Response `200`

Successful read itinerary

- ReservationDetails
  - `basicHotelProperty` BasicHotelProperty, required
    - `address` Address
      - `addressLines` string[], required
      - `city` string, required — City name
      - `countryCode` string, required — Two-character ISO code (ISO ALPHA-2) for country
      - `postalCode` string
      - `state` string — **Deprecated - Use stateName instead** Two-character state code - provided when available
      - `stateName` string — Name or code of the State/Province/Adminstrative region
    - `chainCode` string
    - `cityCode` string, required — IATA 3 char city code for this property (required for adding passive segments)
    - `contactInfo` ContactInfo, required
      - `emails` string[], required
      - `faxNumber` string
      - `phoneNumbers` string[], required
    - `hotelName` string, required
    - `position` Geolocation
      - `latitude` number, required
      - `longitude` number, required
    - `propertyCode` string, required
  - `checkin` string, date
  - `checkout` string, date
  - `comments` string[] — Additional information from the supplier for the traveler (e.g., whether loyalty points are applicable to the booking)
  - `confirmationCodes` ConfirmationCode[], required
    - `code` string, required
    - `codeType` 'RESERVATION' | 'SUPPLIER_CONFIRMATION' | 'CANCELLATION' | 'HOTEL_CONFIRMATION' | 'CONCUR_GDS_REFERENCE' | 'PASSIVE_CONFIRMATION' | 'PIN', required — Confirmation Code Types that maps to OTA codes for Unique Id Types list RESERVATION(Record Locator)=14, SUPPLIER_CONFIRMATION=40, CANCELLATION=50, HOTEL_CONFIRMATION(Property Confirmation No.)=10, CONCUR_GDS_REFERENCE -> Concur Booking Record Locator for Passives
  - `guests` Guest[], required
    - `address` Address
      - `addressLines` string[], required
      - `city` string, required — City name
      - `countryCode` string, required — Two-character ISO code (ISO ALPHA-2) for country
      - `postalCode` string
      - `state` string — **Deprecated - Use stateName instead** Two-character state code - provided when available
      - `stateName` string — Name or code of the State/Province/Adminstrative region
    - `birthdate` string, date
    - `companyName` string
    - `contactInfo` ContactInfo
      - `emails` string[], required
      - `faxNumber` string
      - `phoneNumbers` string[], required
    - `firstname` string, required
    - `middleName` string — Middle name of the guest.
    - `lastname` string, required
  - `isModifiable` boolean — Whether or not this reservation can be modified.
  - `voucherUrl` string — The URL to the voucher for this booking
  - `roomDescription` string[], required
  - `roomRate` RoomRateDetails
    - `cancelPenalties` CancelPenalties, required
      - `description` string — Common description applicable to all the penalties
      - `penalties` CancelPenalty[], required — Cancel penalties associated with the rate
        - `amountPercent` AmountPercent
          - `amount` Price
            - `amount` number, required
            - `currencyCode` string, required — ISO 4217 currency code
          - `applyAs` 'FIRST_NIGHT_DEPOSIT' | 'LAST_NIGHT_DEPOST' | 'FIRST_AND_LAST_NIGHT_DEPOSIT' | 'FIRST_NIGHT_PAYMENT' | 'LAST_NIGHT_PAYMENT' | 'FIRST_AND_LAST_NIGHT_PAYMENT'
          - `basisType` 'FULL_STAY' | 'NIGHTS' | 'FIRST_LAST'
          - `feesInclusive` boolean — If true, all fees are included in the returned rate.
          - `numberOfNights` integer — The number of nights that are to be spent in the property.
          - `percent` number — The percentage used to calculate the amount of the cancel fee.
          - `taxInclusive` boolean — If true, all taxes are included in the returned rate.
        - `cancelDeadline` string — Date string in the date-time notation as defined by RFC 3339 with or without timezone, section 5.6. If there is no timezone it is assumed to be local timezone of the hotel
        - `description` string
        - `refundableStatus` 'UNKNOWN' | 'FULLY_REFUNDABLE' | 'PARTIALLY_REFUNDABLE' | 'NON_REFUNDABLE', required
    - `guarantee` RoomRateGuarantee, required
      - `acceptedPayments` PaymentCardType[]
      - `amountPercent` AmountPercent
        - `amount` Price
          - `amount` number, required
          - `currencyCode` string, required — ISO 4217 currency code
        - `applyAs` 'FIRST_NIGHT_DEPOSIT' | 'LAST_NIGHT_DEPOST' | 'FIRST_AND_LAST_NIGHT_DEPOSIT' | 'FIRST_NIGHT_PAYMENT' | 'LAST_NIGHT_PAYMENT' | 'FIRST_AND_LAST_NIGHT_PAYMENT'
        - `basisType` 'FULL_STAY' | 'NIGHTS' | 'FIRST_LAST'
        - `feesInclusive` boolean — If true, all fees are included in the returned rate.
        - `numberOfNights` integer — The number of nights that are to be spent in the property.
        - `percent` number — The percentage used to calculate the amount of the cancel fee.
        - `taxInclusive` boolean — If true, all taxes are included in the returned rate.
      - `cvvRequired` boolean
      - `guaranteeType` 'DEPOSIT_REQUIRED' | 'GUARANTEE_REQUIRED' | 'NONE', required
    - `nightlyPrices` NightlyPrice[]
      - `basePrice` number, required
      - `currencyCode` string, required — ISO 4217 currency code
      - `endDate` string, date, required
      - `fees` Fees — Representation of nightly fees associated with a rate for given dates along with optional breakdown.
        - `amount` number, required
        - `feeBreakdown` FeeTaxType[]
          - `amount` number, required
          - `fttCode` integer, required — Code based on OTA's Fee Tax Type (FTT) list (https://www.opentraveldevelopersnetwork.com/code-list)
          - `inclusive` boolean, required — Whether or not this tax/fee is included in totalAmountAfterTax amount.
          - `isPayableAtProperty` boolean — Whether or not this tax/fee is payable at the property.
      - `startDate` string, date, required
      - `taxes` Taxes — Representation of nightly tax amount associated with a rate along with optional breakdown.
        - `amount` number, required
        - `taxBreakdown` FeeTaxType[]
          - `amount` number, required
          - `fttCode` integer, required — Code based on OTA's Fee Tax Type (FTT) list (https://www.opentraveldevelopersnetwork.com/code-list)
          - `inclusive` boolean, required — Whether or not this tax/fee is included in totalAmountAfterTax amount.
          - `isPayableAtProperty` boolean — Whether or not this tax/fee is payable at the property.
      - `totalPrice` number
    - `prepayRequired` boolean — Whether or not prepayment is required for booking this rate
    - `rateCategory` RateCategory
      - `otaCode` integer, required — Code based on OTA Rate Plan Type (RPT) list (https://www.opentraveldevelopersnetwork.com/code-list)
      - `value` string — Optional value for the given rate plan type code
    - `rateCustomText` string — Informational text for rate
    - `rateChangesOverStay` boolean, required
    - `loyaltyMembershipRequired` boolean — Whether or not loyalty card/program is required for booking this rate
    - `rateDescription` string[]
    - `prepaymentDetails` RatePrepaymentDetails
      - `paymentDate` string, date-time, required — Scheduled payment date
      - `termsAndConditionsUrl` string, required — URL for the terms and conditions of the rate provided by supplier
    - `ratePlanId` string, required
    - `refundable` boolean — Is this rate refundable or not (based on all cancel penalties)
    - `roomId` string
    - `totalPrice` TotalPrice, required — Details about total pricing associated with the stay
      - `currencyCode` string, required — ISO 4217 currency code
      - `fees` number
      - `feesBreakdown` FeeTaxType[]
        - `amount` number, required
        - `fttCode` integer, required — Code based on OTA's Fee Tax Type (FTT) list (https://www.opentraveldevelopersnetwork.com/code-list)
        - `inclusive` boolean, required — Whether or not this tax/fee is included in totalAmountAfterTax amount.
        - `isPayableAtProperty` boolean — Whether or not this tax/fee is payable at the property.
      - `isTotalBeforeTaxDisplayEligible` boolean — Controls what value is shown on property details page for rates. Displays totalBeforeTax if set to true otherwise display totalAftertax. Note that totalAfterTax will be required if this is set false.
      - `taxes` number
      - `taxesBreakdown` FeeTaxType[]
        - `amount` number, required
        - `fttCode` integer, required — Code based on OTA's Fee Tax Type (FTT) list (https://www.opentraveldevelopersnetwork.com/code-list)
        - `inclusive` boolean, required — Whether or not this tax/fee is included in totalAmountAfterTax amount.
        - `isPayableAtProperty` boolean — Whether or not this tax/fee is payable at the property.
      - `totalAfterTax` number
      - `totalBeforeTax` number, required
    - `highlightedRateText` string — Informational text for highlighted rate
    - `rateDetailsCallRequired` boolean — Does this rate require a call to rateDetails before booking
  - `status` 'PENDING_CONFIRMATION' | 'RESERVED' | 'CANCELLED', required
  - `activeSegmentInConcurPNR` boolean — Whether or not this reservation was added to Concur PNR as active segment (true) or not. Required if using Single PNR Solution

## Other responses

- `400` — Invalid client request. Request shouldn't be retried without changing it.
- `401` — Unauthorized
- `404` — Reservation record not found
- `500` — Error while processing the request. Request can be retried as is at a later time.

---

[API](https://skmtc.net/concur/apis/hotel-service-api.md) · [All operations](https://skmtc.net/concur/apis/hotel-service-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/concur/hotel-service-api/versions/1fbd68eda4fc/schema)
