diff --git a/src/api-explorer/v4-0/HotelService.swagger2-new.json b/src/api-explorer/v4-0/HotelService-new.swagger2.json similarity index 100% rename from src/api-explorer/v4-0/HotelService.swagger2-new.json rename to src/api-explorer/v4-0/HotelService-new.swagger2.json diff --git a/src/api-explorer/v4-0/HotelService.swagger2.json b/src/api-explorer/v4-0/HotelService.swagger2.json new file mode 100644 index 000000000..bd8f0f058 --- /dev/null +++ b/src/api-explorer/v4-0/HotelService.swagger2.json @@ -0,0 +1,2764 @@ +{ + "swagger": "2.0", + "x-sap-shortText": "Hotel workflow endpoints.", + "tags": [ + { + "description": "Hotel workflow endpoints", + "name": "Service" + } + ], + "x-servers": [ + { + "url": "https://www.concursolutions.com/api/v4.0", + "description": "Concur API EndPoint" + } + ], + "basePath": "/", + "host": "hs-mock.service.cnqr.tech", + "info": { + "description": "## Important: Please refer to [Endpoints](https://developer.concur.com/api-reference/direct-connects/hotel-service-4/v4.endpoints.html) document for detailed documentation on all endpoints for this API.\nHotel Service API provides a method for Custom Hotel Source vendors to provide hotel inventory, rates and booking related functionality to users of Concur OBT (Online Booking Tool).", + "title": "Hotel Service API", + "version": "4.0" + }, + "paths": { + "/hotels/details": { + "post": { + "consumes": [ + "application/json" + ], + "description": "Retrieve hotel property information", + "operationId": "hoteldetails", + "parameters": [ + { + "in": "header", + "name": "Accept-Language", + "required": false, + "type": "string", + "description": "Advertises which languages the client is able to understand" + }, + { + "description": "This unique code can be used during troubleshooting as it identifies the API call in the log files.", + "in": "header", + "name": "concur-correlationid", + "required": true, + "type": "string" + }, + { + "description": "Hotel details criteria", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/HotelDetailsCriteria" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Hotel descriptive info for requested properties", + "schema": { + "$ref": "#/definitions/HotelDetailsResponse" + } + }, + "400": { + "description": "Invalid client request. Request shouldn't be retried without changing it.", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Error while processing the request. Request can be retried as is at a later time.", + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "summary": "Retrieve descriptive details about specified hotels.", + "tags": [ + "Service" + ] + } + }, + "/hotels/ratedetails": { + "post": { + "consumes": [ + "application/json" + ], + "description": "Retrieve hotel rate details for rates of a property - used when rate details are missing from /rates call and/or during checkout process.", + "operationId": "ratedetails", + "parameters": [ + { + "in": "header", + "name": "Accept-Language", + "required": false, + "type": "string", + "description": "Advertises which languages the client is able to understand" + }, + { + "description": "This unique code can be used during troubleshooting as it identifies the API call in the log files.", + "in": "header", + "name": "concur-correlationid", + "required": true, + "type": "string" + }, + { + "description": "Hotel rates criteria", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/RateDetailsCriteria" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Hotel rates for requested properties", + "schema": { + "$ref": "#/definitions/RateDetailsResponse" + } + }, + "400": { + "description": "Invalid client request. Request shouldn't be retried without changing it.", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Error while processing the request. Request can be retried as is at a later time.", + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "summary": "Retrieve hotel rate details", + "tags": [ + "Service" + ] + } + }, + "/hotels/rates": { + "post": { + "consumes": [ + "application/json" + ], + "description": "Retrieve hotel rates", + "operationId": "rates", + "parameters": [ + { + "in": "header", + "name": "Accept-Language", + "required": false, + "type": "string", + "description": "Advertises which languages the client is able to understand" + }, + { + "description": "This unique code can be used during troubleshooting as it identifies the API call in the log files.", + "in": "header", + "name": "concur-correlationid", + "required": true, + "type": "string" + }, + { + "description": "Hotel rates criteria", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/RatesCriteria" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Hotel rates for requested properties", + "schema": { + "$ref": "#/definitions/RatesResponse" + } + }, + "400": { + "description": "Invalid client request. Request shouldn't be retried without changing it.", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Error while processing the request. Request can be retried as is at a later time.", + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "summary": "Retrieve rates for specific hotel properties", + "tags": [ + "Service" + ] + } + }, + "/hotels/reservation": { + "post": { + "consumes": [ + "application/json" + ], + "description": "Reserve hotel rate", + "operationId": "reservation", + "parameters": [ + { + "in": "header", + "name": "Accept-Language", + "required": false, + "type": "string", + "description": "Advertises which languages the client is able to understand" + }, + { + "description": "This unique code can be used during troubleshooting as it identifies the API call in the log files.", + "in": "header", + "name": "concur-correlationid", + "required": true, + "type": "string" + }, + { + "description": "Reservation criteria", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ReservationCriteria" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Hotel reservation successful", + "schema": { + "$ref": "#/definitions/ReservationDetails" + } + }, + "400": { + "description": "Invalid client request. Request shouldn't be retried without changing it.", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Error while processing the request. Request can be retried as is at a later time.", + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "summary": "Reserve the given hotel rate", + "tags": [ + "Service" + ] + } + }, + "/hotels/reservation/cancel": { + "post": { + "consumes": [ + "application/json" + ], + "description": "Cancel specified reservation according to parameters", + "operationId": "cancel", + "parameters": [ + { + "in": "header", + "name": "Accept-Language", + "required": false, + "type": "string", + "description": "Advertises which languages the client is able to understand" + }, + { + "description": "This unique code can be used during troubleshooting as it identifies the API call in the log files.", + "in": "header", + "name": "concur-correlationid", + "required": true, + "type": "string" + }, + { + "description": "Cancel reservation criteria", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CancelCriteria" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Reservation successfully cancelled", + "schema": { + "$ref": "#/definitions/CancelDetails" + } + }, + "400": { + "description": "Invalid client request. Request shouldn't be retried without changing it.", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Reservation record not found" + }, + "500": { + "description": "Error while processing the request. Request can be retried as is at a later time.", + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "summary": "Cancel specified reservation", + "tags": [ + "Service" + ] + } + }, + "/hotels/reservation/modify": { + "post": { + "consumes": [ + "application/json" + ], + "description": "Modify given reservation", + "operationId": "modify", + "parameters": [ + { + "in": "header", + "name": "Accept-Language", + "required": false, + "type": "string", + "description": "Advertises which languages the client is able to understand" + }, + { + "description": "This unique code can be used during troubleshooting as it identifies the API call in the log files.", + "in": "header", + "name": "concur-correlationid", + "required": true, + "type": "string" + }, + { + "description": "Modify reservation criteria", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ModifyCriteria" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Reservation succeessfully modified", + "schema": { + "$ref": "#/definitions/ReservationDetails" + } + }, + "400": { + "description": "Invalid client request. Request shouldn't be retried without changing it.", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Reservation record not found" + }, + "500": { + "description": "Error while processing the request. Request can be retried as is at a later time.", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "501": { + "description": "Endpoint not implemented" + } + }, + "summary": "Modify specific reservation", + "tags": [ + "Service" + ] + } + }, + "/hotels/reservation/read": { + "post": { + "consumes": [ + "application/json" + ], + "description": "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.\n", + "operationId": "read", + "parameters": [ + { + "in": "header", + "name": "Accept-Language", + "required": false, + "type": "string", + "description": "Advertises which languages the client is able to understand" + }, + { + "description": "This unique code can be used during troubleshooting as it identifies the API call in the log files.", + "in": "header", + "name": "concur-correlationid", + "required": true, + "type": "string" + }, + { + "description": "Read itinerary criteria", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ReadCriteria" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Successful read itinerary", + "schema": { + "$ref": "#/definitions/ReservationDetails" + } + }, + "400": { + "description": "Invalid client request. Request shouldn't be retried without changing it.", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Reservation record not found" + }, + "500": { + "description": "Error while processing the request. Request can be retried as is at a later time.", + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "summary": "Returns detailed information about a hotel reservation.", + "tags": [ + "Service" + ] + } + }, + "/hotels/search": { + "post": { + "consumes": [ + "application/json" + ], + "description": "Perform the initial search for hotels according to params", + "operationId": "search", + "parameters": [ + { + "in": "header", + "name": "Accept-Language", + "required": false, + "type": "string", + "description": "Advertises which languages the client is able to understand" + }, + { + "in": "header", + "name": "concur-correlationid", + "required": true, + "type": "string", + "description": "Correlation ID to track the record across the logs" + }, + { + "description": "Hotel search criteria", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/SearchCriteria" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Search results that meet criteria", + "schema": { + "$ref": "#/definitions/SearchResponse" + } + }, + "400": { + "description": "Invalid client request. Request shouldn't be retried without changing it.", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Error while processing the request. Request can be retried as is at a later time.", + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "summary": "Perform the initial search for hotels.", + "tags": [ + "Service" + ] + } + } + }, + "schemes": [ + "https" + ], + "security": [ + { + "BasicAuth": [] + } + ], + "securityDefinitions": { + "BasicAuth": { + "type": "basic" + } + }, + "definitions": { + "AcceptedPayments": { + "items": { + "$ref": "#/definitions/PaymentCardType" + }, + "type": "array" + }, + "Address": { + "properties": { + "addressLines": { + "items": { + "example": "910 Mainland Street", + "type": "string" + }, + "type": "array" + }, + "city": { + "description": "City name", + "example": "Vancouver", + "type": "string" + }, + "countryCode": { + "description": "Two-character ISO code (ISO ALPHA-2) for country", + "example": "CA", + "type": "string" + }, + "postalCode": { + "example": "V5K 0A1", + "type": "string" + }, + "state": { + "description": "**Deprecated - Use stateName instead** Two-character state code - provided when available", + "example": "BC", + "type": "string" + }, + "stateName": { + "description": "Name or code of the State/Province/Adminstrative region ", + "example": "British Columbia", + "type": "string" + } + }, + "required": [ + "addressLines", + "city", + "countryCode" + ], + "type": "object" + }, + "AmountPercent": { + "properties": { + "amount": { + "$ref": "#/definitions/Price" + }, + "applyAs": { + "$ref": "#/definitions/AmountPercentApplyAs" + }, + "basisType": { + "$ref": "#/definitions/AmountPercentBasisType" + }, + "feesInclusive": { + "description": "If true, all fees are included in the returned rate.", + "example": true, + "type": "boolean" + }, + "numberOfNights": { + "description": "The number of nights that are to be spent in the property.", + "example": 5, + "type": "integer" + }, + "percent": { + "description": "The percentage used to calculate the amount of the cancel fee.", + "example": 10.05, + "multipleOf": 0.01, + "type": "number" + }, + "taxInclusive": { + "description": "If true, all taxes are included in the returned rate.", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "AmountPercentApplyAs": { + "enum": [ + "FIRST_NIGHT_DEPOSIT", + "LAST_NIGHT_DEPOST", + "FIRST_AND_LAST_NIGHT_DEPOSIT", + "FIRST_NIGHT_PAYMENT", + "LAST_NIGHT_PAYMENT", + "FIRST_AND_LAST_NIGHT_PAYMENT" + ], + "type": "string" + }, + "AmountPercentBasisType": { + "enum": [ + "FULL_STAY", + "NIGHTS", + "FIRST_LAST" + ], + "type": "string" + }, + "AvailabilityStatus": { + "enum": [ + "AVAILABLE_FOR_SALE", + "CLOSED_OUT", + "UNKNOWN" + ], + "type": "string" + }, + "SustainabilityProvider": { + "description": "Sustainability providers that are supported by hsv4", + "enum": [ + "GSTC", + "EARTH_CHECK", + "GREEN_GLOBE", + "GREEN_KEY", + "TRAVELIFE", + "GREEN_LEAF", + "LEED", + "GREEN_GROWTH_2050", + "GREEN_SEAL", + "HILTON_LIGHTSTAY", + "IHG_GREEN_ENGAGE", + "NORDIC_SWAN", + "ACTIVITY_GREEN", + "ADVENTURE_GREEN_ALASKA", + "ECO_CERTIFICATION_MALTA", + "GLOBAL_ECOSPHERE_RETREATS", + "GREAT_GREEN_DEAL", + "SEYCHELLES_SUSTAINABLE_TOURISM", + "GREEN_STAY", + "OTHER" + ], + "example": "EARTH_CHECK", + "type": "string" + }, + "Measure" : { + "enum" : [ "CO2E", "CO2" ], + "type" : "string" + }, + "UnitOfMeasure" : { + "enum" : [ "TONNES", "KILOGRAMS" ], + "type" : "string" + }, + "BasicHotelProperty": { + "properties": { + "address": { + "$ref": "#/definitions/Address" + }, + "chainCode": { + "example": "HH", + "type": "string" + }, + "cityCode": { + "description": "IATA 3 char city code for this property (required for adding passive segments)", + "example": "DFW", + "type": "string" + }, + "contactInfo": { + "$ref": "#/definitions/ContactInfo" + }, + "hotelName": { + "example": "JW Marriott Parq", + "type": "string" + }, + "position": { + "$ref": "#/definitions/Geolocation" + }, + "propertyCode": { + "$ref": "#/definitions/PropertyCode" + } + }, + "required": [ + "cityCode", + "contactInfo", + "hotelName", + "propertyCode" + ], + "type": "object" + }, + "Bedding": { + "description": "Details about bedding associated with the room", + "properties": { + "bedTypeCode": { + "description": "Code based on OTA Bed Type (BED) list (https://www.opentraveldevelopersnetwork.com/code-list)", + "example": 3, + "format": "int32", + "type": "integer" + }, + "quantity": { + "description": "No. of beds", + "example": 1, + "type": "integer" + } + }, + "required": [ + "bedTypeCode", + "quantity" + ], + "type": "object" + }, + "CancelCriteria": { + "properties": { + "confirmationCodes": { + "items": { + "$ref": "#/definitions/ConfirmationCode" + }, + "type": "array" + }, + "requestorInfo": { + "$ref": "#/definitions/RequestorInfo" + } + }, + "required": [ + "confirmationCodes", + "requestorInfo" + ], + "type": "object" + }, + "CancelDetails": { + "properties": { + "cancellationRemarks": { + "example": "Reservation cancelled with no penalty", + "type": "string" + }, + "confirmationCodes": { + "items": { + "$ref": "#/definitions/ConfirmationCode" + }, + "type": "array" + } + }, + "required": [ + "confirmationCodes" + ], + "type": "object" + }, + "CancelPenalties": { + "properties": { + "description": { + "description": "Common description applicable to all the penalties", + "example": "Free cancellation up to 1 week before checkin", + "type": "string" + }, + "penalties": { + "description": "Cancel penalties associated with the rate", + "items": { + "$ref": "#/definitions/CancelPenalty" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "penalties" + ], + "type": "object" + }, + "CancelPenalty": { + "properties": { + "amountPercent": { + "$ref": "#/definitions/AmountPercent" + }, + "cancelDeadline": { + "description": "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", + "example": "2017-07-21T17:32:28Z07:00 or 2017-07-21T17:32:28 or 2017-07-21 17:32:28", + "type": "string" + }, + "description": { + "example": "Free cancellation up to 1 week before checkin", + "type": "string" + }, + "refundableStatus": { + "$ref": "#/definitions/RefundableStatus" + } + }, + "required": [ + "refundableStatus" + ], + "type": "object" + }, + "CatalogName": { + "description": "Northstar, Giata and GDS (Sabre, Amadeus, Galileo) are preferred options at this time", + "enum": [ + "NORTHSTAR", + "GIATA", + "LEONARDO", + "AMADEUS", + "SABRE", + "GALILEO", + "CWT", + "EXPEDIA", + "HRS", + "BOOKING.COM", + "OMNIBEES" + ], + "type": "string" + }, + "ConfirmationCode": { + "properties": { + "code": { + "example": "3704188022P5683", + "type": "string" + }, + "codeType": { + "$ref": "#/definitions/ConfirmationCodeType" + } + }, + "required": [ + "code", + "codeType" + ], + "type": "object" + }, + "ConfirmationCodeType": { + "description": "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", + "enum": [ + "RESERVATION", + "SUPPLIER_CONFIRMATION", + "CANCELLATION", + "HOTEL_CONFIRMATION", + "CONCUR_GDS_REFERENCE", + "PASSIVE_CONFIRMATION", + "PIN" + ], + "type": "string" + }, + "ContactInfo": { + "properties": { + "emails": { + "items": { + "format": "email", + "type": "string" + }, + "type": "array" + }, + "faxNumber": { + "example": "+1-555-555-5678", + "type": "string" + }, + "phoneNumbers": { + "items": { + "example": "+1-555-555-1234", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "emails", + "phoneNumbers" + ], + "type": "object" + }, + "CurrencyCode": { + "description": "ISO 4217 currency code", + "example": "USD", + "maxLength": 3, + "minLength": 3, + "type": "string" + }, + "CustomField": { + "description": "Vendor supported custom field", + "properties": { + "name": { + "description": "Name of the custom field", + "example": "OrgUnit", + "type": "string" + }, + "value": { + "description": "Value of the custom field", + "example": "Travel Agents", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "DistanceUnit": { + "description": "Unit of distance", + "enum": [ + "MILE", + "KM" + ], + "type": "string" + }, + "Error": { + "description": "Error with OTA code and description", + "properties": { + "message": { + "type": "string" + }, + "otaCode": { + "description": "Code based on OTA Error Codes list (https://www.opentraveldevelopersnetwork.com/code-list)", + "format": "int32", + "type": "integer" + } + }, + "required": [ + "message" + ], + "type": "object" + }, + "FeeTaxType": { + "description": "Fee or Tax associated with rate - can be either included or excluded from total rate as marked with 'inclusive' field.", + "properties": { + "amount": { + "example": 8.05, + "multipleOf": 0.01, + "type": "number" + }, + "fttCode": { + "description": "Code based on OTA's Fee Tax Type (FTT) list (https://www.opentraveldevelopersnetwork.com/code-list)", + "example": 15, + "format": "int32", + "type": "integer" + }, + "inclusive": { + "description": "Whether or not this tax/fee is included in totalAmountAfterTax amount.", + "example": true, + "type": "boolean" + } + }, + "required": [ + "amount", + "fttCode", + "inclusive" + ], + "type": "object" + }, + "Fees": { + "description": "Representation of nightly fees associated with a rate for given dates along with optional breakdown.", + "properties": { + "amount": { + "example": 10.95, + "multipleOf": 0.01, + "type": "number" + }, + "feeBreakdown": { + "items": { + "$ref": "#/definitions/FeeTaxType" + }, + "type": "array" + } + }, + "required": [ + "amount" + ], + "type": "object" + }, + "Geolocation": { + "properties": { + "latitude": { + "example": 49.246292, + "type": "number" + }, + "longitude": { + "example": -123.116226, + "type": "number" + } + }, + "required": [ + "latitude", + "longitude" + ], + "type": "object" + }, + "GuaranteeType": { + "enum": [ + "DEPOSIT_REQUIRED", + "GUARANTEE_REQUIRED", + "NONE" + ], + "type": "string" + }, + "Guest": { + "properties": { + "address": { + "$ref": "#/definitions/Address" + }, + "birthdate": { + "example": "1990-04-17", + "format": "date", + "type": "string" + }, + "companyName": { + "example": "SAP Concur", + "type": "string" + }, + "contactInfo": { + "$ref": "#/definitions/ContactInfo" + }, + "firstname": { + "example": "Blake", + "type": "string" + }, + "lastname": { + "example": "Smith", + "type": "string" + } + }, + "required": [ + "firstname", + "lastname" + ], + "type": "object" + }, + "HotelAmenity": { + "description": "Hotel amenity containing code as described in OTA code list Hotel Amenity Code (HAC)", + "properties": { + "amenityCode": { + "format": "int32", + "type": "integer" + }, + "cost": { + "$ref": "#/definitions/Price" + } + }, + "required": [ + "amenityCode" + ], + "type": "object" + }, + "HotelDescriptiveInfo": { + "properties": { + "contents": { + "example": [ + "Check-in at 3:00PM", + "Check-out at 11:00AM" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "endDate": { + "description": "End date for descriptive info if applicable only for specific dates (e.g. for alerts or special events)", + "example": "2021-11-20", + "format": "date", + "type": "string" + }, + "otaCode": { + "description": "Code based on OTA Additional Detail Type (ADT) list (https://www.opentraveldevelopersnetwork.com/code-list)", + "example": 8, + "format": "int32", + "type": "integer" + }, + "startDate": { + "description": "Start date for descriptive info if applicable only for specific dates (e.g. for alerts or special events)", + "example": "2021-10-20", + "format": "date", + "type": "string" + } + }, + "required": [ + "contents", + "otaCode" + ], + "type": "object" + }, + "HotelDetails": { + "properties": { + "hotelDescriptiveInfo": { + "$ref": "#/definitions/HotelDetails_hotelDescriptiveInfo" + }, + "propertyRef": { + "$ref": "#/definitions/HotelPropertyRef" + }, + "checkInTime": { + "description": "check-in time in HH:MM 24 hour format eg. 11:00", + "type": "string" + }, + "checkOutTime": { + "description": "check-out time in HH:MM 24 hour format eg. 16:00.", + "type": "string" + } + }, + "required": [ + "hotelDescriptiveInfo", + "propertyRef" + ], + "type": "object" + }, + "HotelDetailsCriteria": { + "properties": { + "hotelCodes": { + "description": "Reference Ids to hotel properties for which rate is requested", + "items": { + "$ref": "#/definitions/HotelPropertyRef" + }, + "type": "array" + }, + "requestorInfo": { + "$ref": "#/definitions/RequestorInfo" + }, + "searchSessionToken": { + "$ref": "#/definitions/SearchSessionToken" + } + }, + "required": [ + "hotelCodes", + "requestorInfo" + ], + "type": "object" + }, + "HotelDetailsResponse": { + "properties": { + "hotelDetailsList": { + "items": { + "$ref": "#/definitions/HotelDetails" + }, + "type": "array" + } + }, + "required": [ + "hotelDetailsList" + ], + "type": "object" + }, + "HotelDetails_hotelDescriptiveInfo": { + "properties": { + "descriptiveInfos": { + "items": { + "$ref": "#/definitions/HotelDescriptiveInfo" + }, + "type": "array" + }, + "mediaItems": { + "items": { + "$ref": "#/definitions/HotelMedia" + }, + "type": "array" + }, + "propertyDescription": { + "example": "Offering a restaurant and a fitness centre, Hilton Garden Inn Long Island City is located in Long Island City. Free WiFi access is available. Each room here will provide you with a TV. Complete with a microwave, the dining area also has a refrigerator and a coffee machine. Guests will enjoy a full service restaurant and bar with evening room service. Other facilities offered at the property include a shared lounge and luggage storage. LaGuardia Airport is 8 km away. Guests are required to show a photo identification and credit card upon check-in. Please note that all Special Requests are subject to availability and additional charges may apply. Due to Coronavirus (COVID-19), wearing a face mask is mandatory in all indoor common areas. In response to Coronavirus (COVID-19), additional safety and sanitation measures are currently in effect at this property. Food & beverage services at this property may be limited or unavailable due to Coronavirus (COVID-19). Due to Coronavirus (COVID-19), this property is taking steps to help protect the safety of guests and staff. Certain services and amenities may be reduced or unavailable as a result. Please note that the Extra Bed / Crib is subject to availability. The property will be under renovations to the lobby bar and lounge area from 6 January 2020 until 30 March 2020.\n", + "type": "string" + } + }, + "required": [ + "descriptiveInfos", + "mediaItems", + "propertyDescription" + ], + "type": "object" + }, + "HotelMedia": { + "description": "Hotel media details", + "properties": { + "category": { + "description": "OTA code describing the image as defined in OTA Picture Category Code (PIC) list", + "format": "int32", + "type": "integer" + }, + "description": { + "example": "Hotel entrance", + "type": "string" + }, + "type": { + "$ref": "#/definitions/MediaType" + }, + "url": { + "example": "https://images.samplehost.com/samplepath/hotelEntrance.jpg", + "format": "uri", + "type": "string" + } + }, + "required": [ + "type", + "url" + ], + "type": "object" + }, + "HotelProperty": { + "description": "Hotel property object returned by hotel search", + "properties": { + "address": { + "$ref": "#/definitions/Address" + }, + "altPropertyCode": { + "$ref": "#/definitions/HotelProperty_altPropertyCode" + }, + "amenities": { + "items": { + "$ref": "#/definitions/HotelAmenity" + }, + "type": "array" + }, + "availabilityStatus": { + "$ref": "#/definitions/AvailabilityStatus" + }, + "chainCode": { + "description": "Chain code associated with hotel if any", + "example": "HH", + "type": "string" + }, + "contactInfo": { + "$ref": "#/definitions/ContactInfo" + }, + "hotelName": { + "example": "JW Marriott Parq", + "type": "string" + }, + "leadImageURI": { + "description": "Contains an HTTPS URL pointing to a .png or .jpg hotel image file. The image will be used as a thumbnail and should be limited to 70x70 pixels to prevent image artifacts by scaling.", + "example": "https://images.samplehost.com/samplepath/leadimage.jpg", + "format": "uri", + "type": "string" + }, + "leadRate": { + "$ref": "#/definitions/LeadRate" + }, + "totalPrice": { + "$ref": "#/definitions/TotalPriceHotel" + }, + "onRequest": { + "description": "Indicates that the hotel can only be confirmed on request.", + "example": true, + "type": "boolean" + }, + "position": { + "$ref": "#/definitions/Geolocation" + }, + "preferenceRank": { + "$ref": "#/definitions/PreferenceRank" + }, + "preferenceLevel": { + "$ref": "#/definitions/PreferenceLevel" + }, + "propertyCode": { + "$ref": "#/definitions/PropertyCode" + }, + "rating": { + "$ref": "#/definitions/HotelRating" + }, + "superChainCode": { + "example": "EM", + "type": "string" + }, + "sustainabilityAwards": { + "items": { + "$ref": "#/definitions/SustainabilityAward" + }, + "type": "array" + }, + "emissionInfo" : { + "$ref" : "#/definitions/EmissionInfo" + }, + "exactMatch": { + "description": "Flag if true indicates that this hotel is an exact match for what was asked in search request.", + "example": true, + "type": "boolean" + }, + "safetyScore": { + "$ref" : "#/definitions/SafetyScore" + } + }, + "required": [ + "address", + "amenities", + "availabilityStatus", + "contactInfo", + "hotelName", + "leadImageURI", + "leadRate", + "propertyCode" + ], + "type": "object" + }, + "HotelPropertyRef": { + "description": "Reference to hotel property using provider specific property code", + "properties": { + "chainCode": { + "description": "Chain code associated with hotel if any", + "example": "HH", + "type": "string" + }, + "propertyCode": { + "description": "Provider's property code as given in search response", + "example": "HH498949", + "type": "string" + } + }, + "required": [ + "propertyCode" + ], + "type": "object" + }, + "HotelProperty_altPropertyCode": { + "description": "Alternate property code", + "properties": { + "catalogCode": { + "$ref": "#/definitions/PropertyCode" + }, + "catalogName": { + "$ref": "#/definitions/CatalogName" + } + }, + "required": [ + "catalogCode", + "catalogName" + ], + "type": "object" + }, + "HotelRate": { + "properties": { + "bedding": { + "items": { + "$ref": "#/definitions/Bedding" + }, + "type": "array" + }, + "mealsIncluded": { + "description": "Code based on OTA Meal Plan Type (MPT) list (https://www.opentraveldevelopersnetwork.com/code-list)", + "items": { + "example": 19, + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "roomAmenities": { + "items": { + "$ref": "#/definitions/RoomAmenity" + }, + "type": "array" + }, + "roomDescription": { + "example": [ + "1 bedroom luxury suite", + "hearing accessible", + "workspace", + "garden facing balcony" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "roomRate": { + "$ref": "#/definitions/RoomRate" + }, + "roomType": { + "description": "OTA code of type GRI (Guest Room Info) providing guest room type details", + "example": 82, + "format": "int32", + "type": "integer" + }, + "source": { + "$ref": "#/definitions/HotelRate_source" + } + }, + "required": [ + "roomRate" + ], + "type": "object" + }, + "HotelRate_source": { + "description": "Details about source attributed to this rate. Please note that logo is given preference to name and nothing is displayed as source if suppress is true", + "properties": { + "logo": { + "description": "Logo of the supplier for this source that can be shown in UI", + "example": "https://images.samplehost.com/samplepath/sourceLogo.png", + "format": "uri", + "type": "string" + }, + "name": { + "description": "Name of the supplier for this source that can be shown in UI (Logo is given higher preference)", + "example": "Expedia", + "type": "string" + }, + "suppress": { + "description": "If true, will suppress all source attributions for this rate", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "HotelRates": { + "properties": { + "propertyCode": { + "$ref": "#/definitions/PropertyCode" + }, + "rates": { + "items": { + "$ref": "#/definitions/HotelRate" + }, + "type": "array" + } + }, + "required": [ + "propertyCode", + "rates" + ], + "type": "object" + }, + "HotelRating": { + "description": "Hotel rating details along with source", + "properties": { + "source": { + "description": "Source of rating", + "enum": [ + "NORTHSTAR", + "AAA_DIAMONDS", + "HOTELSTAR", + "STAR_RATING_AUSTRALIA", + "HRS_STAR_RATING", + "OTHER" + ], + "example": "NORTHSTAR", + "type": "string" + }, + "value": { + "description": "Hotel rating value should be an integer number from 1 to 5, representing its star rating.", + "example": 4, + "maximum": 5, + "minimum": 1, + "type": "integer" + }, + "name": { + "description": "Optional name when `source` is outside of supported values and set to `OTHER`", + "type": "string", + "example": "My Custom Source" + } + }, + "required": [ + "source", + "value" + ], + "type": "object" + }, + "LeadRate": { + "description": "Lead rate is the lowest nightly rate averaged over the stay.", + "properties": { + "avgNightlyRate": { + "$ref": "#/definitions/Price" + }, + "isTaxAndFeesInclusive": { + "default": false, + "description": "Whether or not tax and fees are included.", + "example": false, + "type": "boolean" + } + }, + "required": [ + "avgNightlyRate" + ], + "type": "object" + }, + "TotalPriceHotel":{ + "description": "Details about total pricing associated with the stay", + "properties":{ + "totalOverStay": { + "$ref": "#/definitions/Price" + }, + "isTaxInclusive": { + "default": false, + "description": "Whether or not tax is included", + "example": false, + "type": "boolean" + }, + "isFeesInclusive": { + "default": false, + "description": "Whether or not fees are included", + "example": false, + "type": "boolean" + } + }, + "required":[ + "totalOverStay" + ] + }, + "LegalEntity": { + "description": "Provides details about the legal entity associated with this booking if available", + "properties": { + "address": { + "$ref": "#/definitions/Address" + }, + "name": { + "description": "Name of the legal entity", + "example": "My Great Company", + "type": "string" + }, + "taxId": { + "description": "Tax identity of the legal entity", + "example": "111-11-1111", + "type": "string" + } + }, + "required": [ + "name", + "taxId" + ], + "type": "object" + }, + "Location": { + "description": "Defines Geo Location for search", + "properties": { + "address": { + "$ref": "#/definitions/Address" + }, + "geoLocation": { + "$ref": "#/definitions/Geolocation" + }, + "iataCode": { + "description": "IATA code of airport if location searched is of type Airport", + "type": "string" + }, + "locationType": { + "$ref": "#/definitions/LocationType" + }, + "name": { + "example": "Sheraton DFW Airport Hotel", + "type": "string" + } + }, + "required": [ + "geoLocation", + "locationType", + "name" + ], + "type": "object" + }, + "LocationSearch": { + "description": "Reference to location details for search", + "properties": { + "location": { + "$ref": "#/definitions/Location" + }, + "maxRadius": { + "$ref": "#/definitions/Radius" + }, + "radius": { + "$ref": "#/definitions/Radius" + } + }, + "required": [ + "location", + "maxRadius", + "radius" + ], + "type": "object" + }, + "LocationType": { + "description": "Type of location associated with this search", + "enum": [ + "COMPANY_LOCATION", + "HOTEL", + "ADDRESS", + "PLACE", + "AIRPORT" + ], + "example": "Hotel", + "type": "string" + }, + "MediaType": { + "description": "Note that currently only \"IMAGE\" type is supported in Concur application", + "enum": [ + "IMAGE", + "VIDEO" + ], + "type": "string" + }, + "ModifyCriteria": { + "properties": { + "confirmationCodes": { + "items": { + "$ref": "#/definitions/ConfirmationCode" + }, + "type": "array" + }, + "reservationCriteria": { + "$ref": "#/definitions/ReservationCriteria" + } + }, + "required": [ + "confirmationCodes", + "reservationCriteria" + ], + "type": "object" + }, + "NightlyPrice": { + "description": "Details about nightly price for a given date range", + "properties": { + "basePrice": { + "example": 89.95, + "multipleOf": 0.01, + "type": "number" + }, + "currencyCode": { + "$ref": "#/definitions/CurrencyCode" + }, + "endDate": { + "example": "2021-12-31", + "format": "date", + "type": "string" + }, + "fees": { + "$ref": "#/definitions/Fees" + }, + "startDate": { + "example": "2021-12-01", + "format": "date", + "type": "string" + }, + "taxes": { + "$ref": "#/definitions/Taxes" + }, + "totalPrice": { + "example": 100.05, + "multipleOf": 0.01, + "type": "number" + } + }, + "required": [ + "basePrice", + "currencyCode", + "endDate", + "startDate" + ], + "type": "object" + }, + "PaymentCardType": { + "enum": [ + "AMERICAN_AIRLINES", + "ALASKA_BARTER", + "AMEX", + "AWARD_CREDIT", + "CANADIAN", + "CARTE_BLANCHE", + "CHINA_UNION_PAY", + "CONFERMA", + "DELTA", + "DINERS_CLUB", + "DISCOVER", + "ENROUTE", + "EURO_CARD", + "JCB", + "MC", + "NORTHWEST", + "TWA", + "UATP", + "UNITED_TRAVEL", + "UNITED_CREDIT", + "VISA", + "VENDOR_PROVIDED" + ], + "example": "VISA", + "type": "string" + }, + "PaymentModeIndicator": { + "enum": [ + "PERSONAL_CARD", + "CORPORATE_CARD", + "CONCUR_VIRTUAL_CARD", + "VENDOR_VIRTUAL_CARD" + ], + "example": "PersonalCard", + "type": "string" + }, + "PreferenceRank": { + "enum": [ + "PREFERRED", + "MORE_PREFERRED", + "MOST_PREFERRED" + ], + "type": "string" + }, + "PreferenceLevel": { + "description": "Determines if the PreferenceRank specified is at CHAIN or PROPERTY level", + "enum": [ + "CHAIN", + "PROPERTY" + ], + "type": "string" + }, + "Price": { + "properties": { + "amount": { + "example": 190.95, + "multipleOf": 0.01, + "type": "number" + }, + "currencyCode": { + "$ref": "#/definitions/CurrencyCode" + } + }, + "required": [ + "amount", + "currencyCode" + ], + "type": "object" + }, + "PropertyCode": { + "example": "HH498949", + "type": "string" + }, + "Radius": { + "description": "Radius to restrict the search for hotels. 'maxRadius' allows extending search radius for preferred hotel properties and can be more than radius defined by traveler", + "properties": { + "unit": { + "$ref": "#/definitions/DistanceUnit" + }, + "value": { + "example": 5, + "format": "int32", + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "unit", + "value" + ], + "type": "object" + }, + "RateCategory": { + "properties": { + "otaCode": { + "description": "Code based on OTA Rate Plan Type (RPT) list (https://www.opentraveldevelopersnetwork.com/code-list)", + "example": 1, + "format": "int32", + "type": "integer" + }, + "value": { + "description": "Optional value for the given rate plan type code", + "example": "AAA", + "type": "string" + } + }, + "required": [ + "otaCode" + ], + "type": "object" + }, + "RateDetailsCriteria": { + "properties": { + "checkin": { + "description": "Check in date as entered by traveler", + "example": "2021-10-20", + "format": "date", + "type": "string" + }, + "checkout": { + "description": "Check out date as entered by traveler", + "example": "2021-10-23", + "format": "date", + "type": "string" + }, + "guestCountryCode": { + "description": "Two-character ISO code (ISO ALPHA-2) for country", + "example": "CA", + "type": "string" + }, + "hotelPropertyRef": { + "$ref": "#/definitions/HotelPropertyRef" + }, + "numGuests": { + "default": 1, + "description": "No. of guests for accomodation as entered by traveler", + "format": "int32", + "type": "integer" + }, + "rateCategories": { + "description": "Special rate categories requested if applicable. Rate category is a value used to request a particular rate code if the guest qualifies for a special rate, such as AARP, AAA or a corporate rate. Uses RPT OTA code type.", + "items": { + "$ref": "#/definitions/RateCategory" + }, + "type": "array" + }, + "ratePlanIds": { + "description": "Rate Product Ids for which detail rates are requested", + "items": { + "example": "44SM3FAsfvgcZs9ehGlNOQ", + "type": "string" + }, + "type": "array" + }, + "requestorInfo": { + "$ref": "#/definitions/RequestorInfo" + }, + "searchSessionToken": { + "$ref": "#/definitions/SearchSessionToken" + }, + "reshopInfo": { + "$ref": "#/definitions/ReshopInfo" + } + }, + "required": [ + "checkin", + "checkout", + "hotelPropertyRef", + "ratePlanIds", + "requestorInfo" + ], + "type": "object" + }, + "RateDetailsResponse": { + "properties": { + "checkin": { + "example": "2021-10-20", + "format": "date", + "type": "string" + }, + "checkout": { + "example": "2021-10-23", + "format": "date", + "type": "string" + }, + "roomRates": { + "items": { + "$ref": "#/definitions/RoomRateDetails" + }, + "type": "array" + } + }, + "required": [ + "checkin", + "checkout", + "roomRates" + ], + "type": "object" + }, + "RatesCriteria": { + "properties": { + "checkin": { + "description": "Check in date as entered by traveler", + "example": "2021-10-20", + "format": "date", + "type": "string" + }, + "checkout": { + "description": "Check out date as entered by traveler", + "example": "2021-10-23", + "format": "date", + "type": "string" + }, + "guestCountryCode": { + "description": "Two-character ISO code (ISO ALPHA-2) for country", + "example": "CA", + "type": "string" + }, + "hotelPropertyRefs": { + "description": "Reference Ids to hotel properties for which rate is requested", + "items": { + "$ref": "#/definitions/HotelPropertyRef" + }, + "type": "array" + }, + "numGuests": { + "default": 1, + "description": "No. of guests for accomodation", + "format": "int32", + "type": "integer" + }, + "rateCategories": { + "description": "Special rate categories requested if applicable", + "items": { + "$ref": "#/definitions/RateCategory" + }, + "type": "array" + }, + "requestorInfo": { + "$ref": "#/definitions/RequestorInfo" + }, + "searchSessionToken": { + "$ref": "#/definitions/SearchSessionToken" + }, + "accessViaMobile": { + "description": "Indicates if the request is coming from mobile device", + "type": "boolean" + } + }, + "required": [ + "checkin", + "checkout", + "hotelPropertyRefs", + "requestorInfo" + ], + "type": "object" + }, + "RatesResponse": { + "properties": { + "checkin": { + "example": "2021-10-20", + "format": "date", + "type": "string" + }, + "checkout": { + "example": "2021-10-23", + "format": "date", + "type": "string" + }, + "hotelRates": { + "items": { + "$ref": "#/definitions/HotelRates" + }, + "type": "array" + } + }, + "required": [ + "checkin", + "checkout", + "hotelRates" + ], + "type": "object" + }, + "ReadCriteria": { + "properties": { + "confirmationCodes": { + "items": { + "$ref": "#/definitions/ConfirmationCode" + }, + "type": "array" + }, + "requestorInfo": { + "$ref": "#/definitions/RequestorInfo" + } + }, + "required": [ + "confirmationCodes", + "requestorInfo" + ], + "type": "object" + }, + "RefundableStatus": { + "enum": [ + "FULLY_REFUNDABLE", + "PARTIALLY_REFUNDABLE", + "NON_REFUNDABLE" + ], + "type": "string" + }, + "RequestorInfo": { + "description": "Information about POS (Point Of Sale), traveler and user associated with this request", + "properties": { + "bookingForSelf": { + "description": "Is logged in person booking for self or on behalf of someone else", + "example": true, + "type": "boolean" + }, + "loginId": { + "description": "Login ID of traveler within Concur. Only sent when available.", + "example": "abc@concur.com", + "type": "string" + }, + "posRequestorId": { + "description": "An identifier of the entity making the request (e.g. ATA/IATA/ID number)", + "example": "abc1234", + "type": "string" + }, + "travelerUuid": { + "description": "UUID that identifies the traveler within Concur", + "example": "123e4567-e89b-12d3-a456-426614174000", + "type": "string" + } + }, + "required": [ + "posRequestorId", + "travelerUuid" + ], + "type": "object" + }, + "ReservationCriteria": { + "properties": { + "bookingUuid" : { + "description" : "UUID that identifies the booking within Concur", + "example" : "123e4567-e89b-12d3-a456-426614174000", + "type" : "string" + }, + "checkin": { + "example": "2021-10-20", + "format": "date", + "type": "string" + }, + "checkout": { + "example": "2021-10-23", + "format": "date", + "type": "string" + }, + "comments": { + "description": "Comments about special requests for this booking", + "example": [ + "Accessible", + "NonSmoking", + "Upper floor away from elevator" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "customFields": { + "description": "Vendor specific fields if setup for vendor integration", + "items": { + "$ref": "#/definitions/CustomField" + }, + "type": "array" + }, + "guarantee": { + "$ref": "#/definitions/ReservationCriteria_guarantee" + }, + "guests": { + "items": { + "$ref": "#/definitions/Guest" + }, + "type": "array" + }, + "hotelPropertyRef": { + "$ref": "#/definitions/HotelPropertyRef" + }, + "legalEntity": { + "$ref": "#/definitions/LegalEntity" + }, + "loyalty": { + "$ref": "#/definitions/ReservationCriteria_loyalty" + }, + "paymentModeIndicator": { + "$ref": "#/definitions/PaymentModeIndicator" + }, + "ratePlanId": { + "example": "44SM3FAsfvgcZs9ehGlNOQ", + "type": "string" + }, + "requestorInfo": { + "$ref": "#/definitions/RequestorInfo" + }, + "searchSessionToken": { + "$ref": "#/definitions/SearchSessionToken" + }, + "threeDSecure": { + "$ref": "#/definitions/ThreeDSecure" + }, + "tripUuid" : { + "description" : "UUID that identifies the trip within Concur", + "example" : "123e4567-e89b-12d3-a456-426614174000", + "type" : "string" + }, + "gdsRecordLocator": { + "$ref": "#/definitions/GDSRecordLocator" + } + }, + "required": [ + "bookingUuid", + "checkin", + "checkout", + "customFields", + "guests", + "hotelPropertyRef", + "ratePlanId", + "requestorInfo", + "tripUuid" + ], + "type": "object" + }, + "ReservationCriteria_guarantee": { + "properties": { + "cardHolderAddress": { + "$ref": "#/definitions/Address" + }, + "cardHolderName": { + "example": "John Smith", + "type": "string" + }, + "cardNumber": { + "example": "4242-4242-4242-4242", + "type": "string" + }, + "cardExpiryMonth": { + "example": 8, + "type": "integer" + }, + "cardExpiryYear": { + "example": 2030, + "type": "integer" + }, + "cardType": { + "$ref": "#/definitions/PaymentCardType" + }, + "cvv": { + "description": "Card Verification Value - three or four-digit number on credit card for security", + "example": "369", + "type": "string" + }, + "virtualCardDeploymentId" : { + "description": "Deployment ID of conferma card when Conferma payment is used for booking a hotel", + "type": "string" + } + }, + "required": [ + "cardNumber", + "cardType" + ], + "type": "object" + }, + "ReservationCriteria_loyalty": { + "properties": { + "accountId": { + "example": "209875030", + "type": "string" + }, + "programCode": { + "example": "EM", + "type": "string" + } + }, + "required": [ + "accountId", + "programCode" + ], + "type": "object" + }, + "GDSRecordLocator": { + "properties":{ + "gdsName": { + "description": "Name of the GDS (Global Distribution System) to be used for this booking (active or passive segment). Supported values: SABRE, AMADEUS, TRAVELPORT", + "type": "string", + "enum": [ + "SABRE", + "AMADEUS", + "TRAVELPORT" + ] + }, + "pcc": { + "description": "Pseudo City Code or Office ID (OID) for the GDS account to be used for this booking (active or passive segment).", + "type": "string", + "example": "ABC123" + }, + "recordLocator": { + "description": "Record locator of the PNR where this booking should be created (active or passvie)", + "type": "string", + "example": "ABC123" + } + }, + "required": [ + "gdsName", + "pcc", + "recordLocator" + ] + }, + "ReservationDetails": { + "properties": { + "basicHotelProperty": { + "$ref": "#/definitions/BasicHotelProperty" + }, + "checkin": { + "example": "2021-10-20", + "format": "date", + "type": "string" + }, + "checkout": { + "example": "2021-10-23", + "format": "date", + "type": "string" + }, + "comments": { + "description": "Comments about special requests for this booking", + "example": [ + "Accessible", + "NonSmoking", + "Upper floor away from elevator" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "confirmationCodes": { + "items": { + "$ref": "#/definitions/ConfirmationCode" + }, + "type": "array" + }, + "guests": { + "items": { + "$ref": "#/definitions/Guest" + }, + "type": "array" + }, + "isModifiable": { + "default": true, + "description": "Whether or not this reservation can be modified.", + "example": true, + "type": "boolean" + }, + "voucherUrl" : { + "description" : "The URL to the voucher for this booking", + "example" : "https://www.concur.com/voucher/voucher-id", + "type" : "string" + }, + "roomDescription": { + "example": [ + "1 bedroom luxury suite", + "hearing accessible", + "workspace", + "garden facing balcony" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "roomRate": { + "description": "Required for all statuses, except for CANCELLED", + "$ref": "#/definitions/RoomRateDetails" + }, + "status": { + "$ref": "#/definitions/ReservationStatus" + }, + "activeSegmentInConcurPNR": { + "default": false, + "description": "Whether or not this reservation was added to Concur PNR as active segment (true) or not. Required if using Single PNR Solution", + "type": "boolean" + } + }, + "required": [ + "basicHotelProperty", + "confirmationCodes", + "guests", + "roomDescription", + "status" + ], + "type": "object" + }, + "ReservationStatus": { + "enum": [ + "PENDING_CONFIRMATION", + "RESERVED", + "CANCELLED" + ], + "type": "string" + }, + "RoomAmenity": { + "description": "Room amenity containing code as described in OTA code list Room Amenity Type (RMA)", + "properties": { + "amenityCode": { + "format": "int32", + "type": "integer" + }, + "cost": { + "$ref": "#/definitions/Price" + } + }, + "required": [ + "amenityCode" + ], + "type": "object" + }, + "RoomRate": { + "properties": { + "cancelPenalties": { + "$ref": "#/definitions/CancelPenalties" + }, + "guarantee": { + "$ref": "#/definitions/RoomRate_guarantee" + }, + "nightlyPrices": { + "items": { + "$ref": "#/definitions/NightlyPrice" + }, + "minItems": 1, + "type": "array" + }, + "prepayRequired": { + "description": "Whether or not prepayment is required for booking this rate", + "example": true, + "type": "boolean" + }, + "rateCategory": { + "$ref": "#/definitions/RateCategory" + }, + "rateCustomText": { + "description": "Informational text for rate", + "type": "string" + }, + "rateChangesOverStay": { + "type": "boolean" + }, + "loyaltyMembershipRequired": { + "description": "Whether or not loyalty card/program is required for booking this rate", + "example": true, + "type": "boolean" + }, + "rateDescription": { + "example": [ + "Promotional Rate" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "ratePlanId": { + "example": "44SM3FAsfvgcZs9ehGlNOQ", + "type": "string" + }, + "refundable": { + "description": "Is this rate refundable or not (based on all cancel penalties)", + "example": true, + "type": "boolean" + }, + "roomId": { + "example": "kVNU66KLxuggtu2H", + "type": "string" + }, + "totalPrice": { + "$ref": "#/definitions/TotalPrice" + }, + "rateDetailsCallRequired": { + "description": "Does this rate require a call to rateDetails before booking", + "example": true, + "type": "boolean", + "default": false + } + }, + "required": [ + "rateChangesOverStay", + "ratePlanId", + "totalPrice" + ], + "type": "object" + }, + "RoomRateDetails": { + "allOf": [ + { + "$ref": "#/definitions/RoomRate" + }, + { + "required": [ + "cancelPenalties", + "guarantee" + ], + "type": "object" + } + ] + }, + "RoomRate_guarantee": { + "properties": { + "acceptedPayments": { + "$ref": "#/definitions/AcceptedPayments" + }, + "amountPercent": { + "$ref": "#/definitions/AmountPercent" + }, + "cvvRequired": { + "type": "boolean" + }, + "guaranteeType": { + "$ref": "#/definitions/GuaranteeType" + } + }, + "required": [ + "guaranteeType" + ], + "type": "object" + }, + "SearchCriteria": { + "description": "Search by either location or exact property reference if already available", + "properties": { + "checkin": { + "description": "Check in date as entered by traveler", + "example": "2021-10-20", + "format": "date", + "type": "string" + }, + "checkout": { + "description": "Check out date as entered by traveler", + "example": "2021-10-23", + "format": "date", + "type": "string" + }, + "customFields": { + "description": "Custom fields that are supported by vendor (e.g. CostCenter)", + "items": { + "$ref": "#/definitions/CustomField" + }, + "type": "array" + }, + "guestCountryCode": { + "description": "Two-character ISO code (ISO ALPHA-2) for country", + "example": "CA", + "type": "string" + }, + "hotelPropertyRefs": { + "description": "Reference Ids to hotel properties if we already have them. When provided 'locationSearch' will not be used and may not be set.", + "items": { + "$ref": "#/definitions/HotelPropertyRef" + }, + "type": "array" + }, + "includeDepositRequired": { + "description": "Whether to include properties where deposit is required or not", + "type": "boolean" + }, + "locationSearch": { + "$ref": "#/definitions/LocationSearch" + }, + "maxSearchResults": { + "default": 100, + "description": "Maximum number of properties allowed to be included in search results", + "example": 100, + "type": "integer" + }, + "numGuests": { + "default": 1, + "description": "No. of guests for accomodation as entered by traveler", + "format": "int32", + "type": "integer" + }, + "rateCategories": { + "description": "Special rate categories requested if applicable", + "items": { + "$ref": "#/definitions/RateCategory" + }, + "type": "array" + }, + "requestorInfo": { + "$ref": "#/definitions/RequestorInfo" + }, + "accessViaMobile": { + "description": "Indicates if the request is coming from mobile device", + "type": "boolean" + } + }, + "required": [ + "checkin", + "checkout", + "includeDepositRequired", + "requestorInfo" + ], + "type": "object" + }, + "SearchResponse": { + "properties": { + "hotelProperties": { + "items": { + "$ref": "#/definitions/HotelProperty" + }, + "type": "array" + }, + "searchSessionToken": { + "$ref": "#/definitions/SearchSessionToken" + } + }, + "required": [ + "hotelProperties" + ], + "type": "object" + }, + "SearchSessionToken": { + "description": "Session token to be generated and provided by server on initial \"search\" call that can be referenced back for future api calls on the same session.", + "format": "uuid", + "type": "string" + }, + "SustainabilityAward": { + "description": "Award/Certification related to sustainability awarded to the hotel", + "properties": { + "label": { + "description": "Name or label of the award/certification", + "$ref": "#/definitions/SustainabilityProvider" + }, + "level": { + "description": "Optional level of certification", + "example": "Gold", + "type": "string" + }, + "name": { + "description": "Name of certification in case when not possible to map to currently supported labels", + "example": "Custom", + "type": "string" + } + }, + "required": [ + "label" + ], + "type": "object" + }, + "EmissionInfo" : { + "description" : "Hotel Sustainability Index information", + "properties" : { + "emissions" : { + "description" : "total emissions value for hotel", + "example" : 1.3141592722321, + "type" : "number" + }, + "sustainabilityScore" : { + "description" : "sustainability score in range 0-100", + "example" : 40, + "type" : "integer" + }, + "measure" : { + "$ref" : "#/definitions/Measure" + }, + "unitOfMeasure" : { + "$ref" : "#/definitions/UnitOfMeasure" + } + }, + "type" : "object" + }, + "Taxes": { + "description": "Representation of nightly tax amount associated with a rate along with optional breakdown.", + "properties": { + "amount": { + "example": 5.55, + "multipleOf": 0.01, + "type": "number" + }, + "taxBreakdown": { + "items": { + "$ref": "#/definitions/FeeTaxType" + }, + "type": "array" + } + }, + "required": [ + "amount" + ], + "type": "object" + }, + "ThreeDSecure": { + "description": "3D Secure Strong Customer Authentication payment verification parameters", + "properties": { + "avv": { + "description": "For 3DS1, this is the CAVV. For 3DS2, this is the AVV.", + "type": "string" + }, + "cavvAlgorithm": { + "description": "Identifies the algorithm used to generate the CAVV for 3DS1.", + "maxLength": 8, + "minLength": 1, + "type": "string" + }, + "eci": { + "description": "Electronic Commerce Indicator", + "maxLength": 8, + "minLength": 1, + "type": "string" + }, + "exemptionCode": { + "description": "Identifies SCA exemption type", + "maxLength": 8, + "minLength": 1, + "type": "string" + }, + "messageVersion": { + "description": "3D Secure version", + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "threeDSServerTransactionId": { + "description": "For 3DS1, this identifies the XID. For 3DS2, this identifies the dsTransactionId.", + "type": "string" + }, + "transactionId": { + "description": "Unique transaction identifier assigned by the 3DS Server to identify a single transaction.", + "type": "string" + } + }, + "required": [ + "avv", + "eci", + "messageVersion", + "transactionId" + ], + "type": "object" + }, + "TotalPrice": { + "description": "Details about total pricing associated with the stay", + "properties": { + "currencyCode": { + "$ref": "#/definitions/CurrencyCode" + }, + "fees": { + "example": 10, + "multipleOf": 0.01, + "type": "number" + }, + "feesBreakdown": { + "items": { + "$ref": "#/definitions/FeeTaxType" + }, + "type": "array" + }, + "isTotalBeforeTaxDisplayEligible": { + "default": true, + "description": "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.", + "example": true, + "type": "boolean" + }, + "taxes": { + "example": 10, + "multipleOf": 0.01, + "type": "number" + }, + "taxesBreakdown": { + "items": { + "$ref": "#/definitions/FeeTaxType" + }, + "type": "array" + }, + "totalAfterTax": { + "example": 190.95, + "multipleOf": 0.01, + "type": "number" + }, + "totalBeforeTax": { + "example": 170.95, + "multipleOf": 0.01, + "type": "number" + } + }, + "required": [ + "currencyCode", + "totalBeforeTax" + ], + "type": "object" + }, + "SafetyScore": { + "description": "Safety score of the hotel", + "properties": { + "score": { + "type": "number" + }, + "detailsUrl": { + "description": "URL to get more details about the safety score", + "type": "string" + }, + "categories": { + "type": "array", + "items": { + "$ref": "#/definitions/SafetyScoreCategory" + } + } + }, + "required": [ + "score", + "categories" + ], + "type": "object" + }, + "SafetyScoreCategory": { + "description": "Safety score category classification of the hotel", + "properties": { + "type": { + "type": "string", + "enum": [ "NIGHTTIME_SAFETY", "PHYSICAL_SAFETY", "BASIC_FREEDOMS", "WOMENS_SAFETY", "THEFT", "HEALTH_AND_MEDICAL", "LGBTQ_PLUS_SAFETY"] + }, + "score": { + "type": "number" + } + }, + "required": [ + "type", + "score" + ], + "type": "object" + }, + "ReshopInfo": { + "description": "Contains information required for reshopping a hotel booking.", + "properties": { + "gdsRecordLocator": { + "$ref": "#/definitions/GDSRecordLocator" + }, + "confirmationCodes": { + "items": { + "$ref": "#/definitions/ConfirmationCode" + }, + "type": "array" + } + } + } + }, + "x-components": { + "responses": { + "BadRequest": { + "content": { + "application/json": { + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "description": "Invalid client request. Request shouldn't be retried without changing it." + }, + "ProcessingError": { + "content": { + "application/json": { + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "description": "Error while processing the request. Request can be retried as is at a later time." + } + } + } +} diff --git a/src/api-reference/direct-connects/hotel-service-4/v4.endpoints-new.md b/src/api-reference/direct-connects/hotel-service-4/v4.endpoints-new.md index e2cf5fa26..13ec42b75 100644 --- a/src/api-reference/direct-connects/hotel-service-4/v4.endpoints-new.md +++ b/src/api-reference/direct-connects/hotel-service-4/v4.endpoints-new.md @@ -586,7 +586,7 @@ POST /hotels/ratedetails "numGuests": 1, "guestCountryCode": "CA", "searchSessionToken": "b41168ba-7ee1-4b68-9934-47f5c55337d6", - "reshopInfo": { + "reshopInfo": { "gdsRecordLocator": { "gdsName": "SABRE", "pcc": "ABC123", diff --git a/src/api-reference/direct-connects/hotel-service-4/v4.endpoints.md b/src/api-reference/direct-connects/hotel-service-4/v4.endpoints.md new file mode 100644 index 000000000..13ec42b75 --- /dev/null +++ b/src/api-reference/direct-connects/hotel-service-4/v4.endpoints.md @@ -0,0 +1,1709 @@ +--- +title: Direct Connect - Hotel Service v4 - Endpoints +layout: reference +--- + +# Direct Connect - Hotel Service v4 - Endpoints + +## Search Hotels + +Perform the initial search for hotels. + + +### URI + +```shell +POST /hotels/search +``` + +### Parameters + +|Name|Type|Format|Description| +|---|---|---|---| +`Accept-Language`|`string`|-|-| +`concur-correlationid`|`string`|-|**Required** This unique code can be used during troubleshooting as it identifies the API call in the log files.| +`body`|[`SearchCriteria`](./v4.schemas.html#schemasearchcriteria)|-|**Required** Hotel search criteria.| + +### Examples + +#### Request + +```json +{ + "requestorInfo": { + "posRequestorId": "abc1234", + "travelerUuid": "123e4567-e89b-12d3-a456-426614174000", + "loginId": "abc@concur.com", + "bookingForSelf": true + }, + "numGuests": 1, + "guestCountryCode": "CA", + "locationSearch": { + "location": { + "geoLocation": { + "latitude": 49.246292, + "longitude": -123.116226 + }, + "locationType": "Hotel", + "name": "Sheraton DFW Airport Hotel", + "address": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + }, + "iataCode": "string" + }, + "radius": { + "value": 5, + "unit": "MILE" + }, + "maxRadius": { + "value": 5, + "unit": "MILE" + } + }, + "hotelPropertyRefs": [ + { + "chainCode": "HH", + "propertyCode": "HH498949" + } + ], + "checkin": "2021-10-20", + "checkout": "2021-10-23", + "customFields": [ + { + "name": "OrgUnit", + "value": "Travel Agents" + } + ], + "includeDepositRequired": true, + "rateCategories": [ + { + "otaCode": 1, + "value": "AAA" + } + ], + "maxSearchResults": 100 +} +``` + +#### Response + +```json +{ + "hotelProperties": [ + { + "propertyCode": "HH498949", + "altPropertyCode": { + "catalogCode": "HH498949", + "catalogName": "NORTHSTAR" + }, + "chainCode": "HH", + "superChainCode": "EM", + "hotelName": "JW Marriott Parq", + "contactInfo": { + "phoneNumbers": [ + "+1-555-555-1234" + ], + "faxNumber": "+1-555-555-5678", + "emails": [ + "user@example.com" + ] + }, + "position": { + "latitude": 49.246292, + "longitude": -123.116226 + }, + "address": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + }, + "leadRate": { + "avgNightlyRate": { + "amount": 190.95, + "currencyCode": "USD" + }, + "isTaxAndFeesInclusive": false + }, + "availabilityStatus": "AVAILABLE_FOR_SALE", + "onRequest": true, + "preferenceRank": "PREFERRED", + "preferenceLevel": "CHAIN", + "amenities": [ + { + "amenityCode": 0 + } + ], + "leadImageURI": "https://images.samplehost.com/samplepath/leadimage.jpg", + "rating": { + "value": 4, + "source": "NORTHSTAR" + }, + "sustainabilityAwards": [ + { + "label": "LEED", + "level": "Gold" + } + ] + } + ], + "searchSessionToken": "b41168ba-7ee1-4b68-9934-47f5c55337d6" +} +``` + +## Rates + +Retrieve rates for specific hotel properties. Please note that `/hotels/rate-details` is optional if `guarantee`, `cancelPenalties` and `nightlyPrices` are provided as a part of this call and `rateDetailsCallRequired` flag is not set. Also, the feature of filtering rates by `Refundable` and `Prepay Required` during hotel shopping requires `refundable` and `prepayRequired` attributes to be present. + +### URI + +```shell +POST /hotels/rates +``` + +### Parameters + +|Name|Type|Format|Description| +|---|---|---|---| +`Accept-Language`|`string`|-|-| +`concur-correlationid`|`string`|-|**Required** This unique code can be used during troubleshooting as it identifies the API call in the log files.| +`body`|[`RatesCriteria`](./v4.schemas.html#schemaratescriteria)|-|**Required** Hotel rates criteria.| + +### Examples + +#### Request + +```json +{ + "requestorInfo": { + "posRequestorId": "abc1234", + "travelerUuid": "123e4567-e89b-12d3-a456-426614174000", + "loginId": "abc@concur.com", + "bookingForSelf": true + }, + "hotelPropertyRefs": [ + { + "chainCode": "HH", + "propertyCode": "HH498949" + } + ], + "checkin": "2021-10-20", + "checkout": "2021-10-23", + "rateCategories": [ + { + "otaCode": 1, + "value": "AAA" + } + ], + "numGuests": 1, + "guestCountryCode": "CA", + "searchSessionToken": "b41168ba-7ee1-4b68-9934-47f5c55337d6" +} +``` + +### Response + +```json +{ + "checkin": "2021-10-20", + "checkout": "2021-10-23", + "hotelRates": [ + { + "propertyCode": "HH498949", + "rates": [ + { + "bedding": [ + { + "quantity": 1, + "bedTypeCode": 3 + } + ], + "mealsIncluded": [ + 19 + ], + "roomDescription": [ + "1 bedroom luxury suite", + "hearing accessible", + "workspace", + "garden facing balcony" + ], + "roomAmenities": [ + { + "amenityCode": 0 + } + ], + "roomType": 82, + "roomRate": { + "rateDescription": [ + "Promotional Rate" + ], + "rateCategory": { + "otaCode": 1, + "value": "AAA" + }, + "rateChangesOverStay": true, + "roomId": "kVNU66KLxuggtu2H", + "ratePlanId": "44SM3FAsfvgcZs9ehGlNOQ", + "guarantee": { + "guaranteeType": "DEPOSIT_REQUIRED", + "acceptedPayments": [ + "VISA" + ], + "cvvRequired": true, + "amountPercent": { + "taxInclusive": true, + "feesInclusive": true, + "numberOfNights": 5, + "basisType": "FULL_STAY", + "applyAs": "FIRST_NIGHT_DEPOSIT", + "percent": 10.05, + "amount": { + "amount": 190.95, + "currencyCode": "USD" + } + } + }, + "prepayRequired": true, + "refundable": true, + "rateDetailsCallRequired" : true, + "totalPrice": { + "totalBeforeTax": 170.95, + "taxes": 10, + "taxesBreakdown": [ + { + "amount": 5, + "fttCode": 1, + "inclusive": true + }, + { + "amount": 5, + "fttCode": 2, + "inclusive": true + } + ], + "fees": 10, + "feesBreakdown": [ + { + "amount": 5, + "fttCode": 5, + "inclusive": true + }, + { + "amount": 5, + "fttCode": 6, + "inclusive": true + } + ], + "totalAfterTax": 190.95, + "currencyCode": "USD", + "isTotalBeforeTaxDisplayEligible": true + }, + "nightlyPrices": [ + { + "basePrice": 89.95, + "taxes": { + "amount": 5.55, + "taxBreakdown": [ + {} + ] + }, + "fees": { + "amount": 10.95, + "feeBreakdown": [ + {} + ] + }, + "totalPrice": 100.05, + "startDate": "2021-12-01", + "endDate": "2021-12-31", + "currencyCode": "USD" + } + ], + "cancelPenalties": { + "description": "Some fees are not refundable", + "penalties": [ + { + "cancelDeadline": "2017-07-21T17:32:28", + "description": "Free cancellation up to 1 week before checkin", + "refundableStatus": "FULLY_REFUNDABLE", + "amountPercent": { + "taxInclusive": true, + "feesInclusive": true, + "numberOfNights": 5, + "basisType": "FULL_STAY", + "applyAs": "FIRST_NIGHT_DEPOSIT", + "percent": 10.05, + "amount": {} + } + } + ] + } + }, + "source": { + "name": "Expedia", + "logo": "https://images.samplehost.com/samplepath/sourceLogo.png", + "suppress": true + } + } + ] + } + ] +} +``` + +## Rate Details + +Retrieve hotel rate details for rates of a property. This endpoint is used and required when details including `guarantee`, `cancePenalties` and `nightlyRates` breakdown are missing from `/hotels/rates` call or `rateDetailsCallRequired` flag is set to true for a given rate. + +### URI + +```shell +POST /hotels/ratedetails +``` + +### Parameters + +|Name|Type|Format|Description| +|---|---|---|---| +`Accept-Language`|`string`|-|-| +`concur-correlationid`|`string`|-|**Required** This unique code can be used during troubleshooting as it identifies the API call in the log files.| +`body`|[`RateDetailsCriteria`](./v4.schemas.html#schemaratedetailscriteria)|-|**Required** Hotel rates criteria.| + +### Examples + +#### Request + +```json +{ + "requestorInfo": { + "posRequestorId": "abc1234", + "travelerUuid": "123e4567-e89b-12d3-a456-426614174000", + "loginId": "abc@concur.com", + "bookingForSelf": true + }, + "hotelPropertyRef": { + "chainCode": "HH", + "propertyCode": "HH498949" + }, + "ratePlanIds": [ + "44SM3FAsfvgcZs9ehGlNOQ" + ], + "checkin": "2021-10-20", + "checkout": "2021-10-23", + "rateCategories": [ + { + "otaCode": 1, + "value": "AAA" + } + ], + "numGuests": 1, + "guestCountryCode": "CA", + "searchSessionToken": "b41168ba-7ee1-4b68-9934-47f5c55337d6" +} +``` + +### Response + +```json +{ + "checkin": "2021-10-20", + "checkout": "2021-10-23", + "roomRates": [ + { + "rateDescription": [ + "Promotional Rate" + ], + "rateCategory": { + "otaCode": 1, + "value": "AAA" + }, + "rateChangesOverStay": true, + "roomId": "kVNU66KLxuggtu2H", + "ratePlanId": "44SM3FAsfvgcZs9ehGlNOQ", + "guarantee": { + "guaranteeType": "DEPOSIT_REQUIRED", + "acceptedPayments": [ + "VISA" + ], + "cvvRequired": true, + "amountPercent": { + "taxInclusive": true, + "feesInclusive": true, + "numberOfNights": 5, + "basisType": "FULL_STAY", + "applyAs": "FIRST_NIGHT_DEPOSIT", + "percent": 10.05, + "amount": { + "amount": 190.95, + "currencyCode": "USD" + } + } + }, + "prepayRequired": true, + "refundable": true, + "totalPrice": { + "totalBeforeTax": 170.95, + "taxes": 10, + "fees": 10, + "taxesBreakdown": [ + { + "amount": 5, + "fttCode": 1, + "inclusive": true + }, + { + "amount": 5, + "fttCode": 2, + "inclusive": true + } + ], + "feesBreakdown": [ + { + "amount": 5, + "fttCode": 5, + "inclusive": true + }, + { + "amount": 5, + "fttCode": 6, + "inclusive": true + } + ], + "totalAfterTax": 190.95, + "currencyCode": "USD", + "isTotalBeforeTaxDisplayEligible": true + }, + "nightlyPrices": [ + { + "basePrice": 89.95, + "taxes": { + "amount": 5.55, + "taxBreakdown": [ + { + "amount": 8.05, + "fttCode": 15, + "inclusive": true + } + ] + }, + "fees": { + "amount": 10.95, + "feeBreakdown": [ + { + "amount": 8.05, + "fttCode": 15, + "inclusive": true + } + ] + }, + "totalPrice": 100.05, + "startDate": "2021-12-01", + "endDate": "2021-12-31", + "currencyCode": "USD" + } + ], + "cancelPenalties": { + "description": "Some fees are not refundable", + "penalties": [ + { + "cancelDeadline": "2017-07-21T17:32:28", + "description": "Free cancellation up to 1 week before checkin", + "refundableStatus": "FULLY_REFUNDABLE", + "amountPercent": { + "taxInclusive": true, + "feesInclusive": true, + "numberOfNights": 5, + "basisType": "FULL_STAY", + "applyAs": "FIRST_NIGHT_DEPOSIT", + "percent": 10.05, + "amount": { + "amount": 190.95, + "currencyCode": "USD" + } + } + } + ] + } + } + ] +} +``` + +## Rate Details during modify/reshop flow + +Retrieve hotel rate details for rates of a property. This endpoint is used and required when details including `guarantee`, `cancePenalties` and `nightlyRates` breakdown are missing from `/hotels/rates` call or `rateDetailsCallRequired` flag is set to true for a given rate. + +### URI + +```shell +POST /hotels/ratedetails +``` + +### Parameters + +|Name|Type|Format|Description| +|---|---|---|---| +`Accept-Language`|`string`|-|-| +`concur-correlationid`|`string`|-|**Required** This unique code can be used during troubleshooting as it identifies the API call in the log files.| +`body`|[`RateDetailsCriteria`](./v4.schemas.html#schemaratedetailscriteria)|-|**Required** Hotel rates criteria.| + +### Examples + +#### Request + +```json +{ + "requestorInfo": { + "posRequestorId": "abc1234", + "travelerUuid": "123e4567-e89b-12d3-a456-426614174000", + "loginId": "abc@concur.com", + "bookingForSelf": true + }, + "hotelPropertyRef": { + "chainCode": "HH", + "propertyCode": "HH498949" + }, + "ratePlanIds": [ + "44SM3FAsfvgcZs9ehGlNOQ" + ], + "checkin": "2021-10-20", + "checkout": "2021-10-23", + "rateCategories": [ + { + "otaCode": 1, + "value": "AAA" + } + ], + "numGuests": 1, + "guestCountryCode": "CA", + "searchSessionToken": "b41168ba-7ee1-4b68-9934-47f5c55337d6", + "reshopInfo": { + "gdsRecordLocator": { + "gdsName": "SABRE", + "pcc": "ABC123", + "recordLocator": "ABC123" + }, + "confirmationCodes": [ + { + "codeType": "SUPPLIER_CONFIRMATION", + "code": "3704188022P5683" + }, + { + "codeType": "PIN", + "code": "3704188022P5683" + } + ] + } +} +``` + +### Response + +```json +{ + "checkin": "2021-10-20", + "checkout": "2021-10-23", + "roomRates": [ + { + "rateDescription": [ + "Promotional Rate" + ], + "rateCategory": { + "otaCode": 1, + "value": "AAA" + }, + "rateChangesOverStay": true, + "roomId": "kVNU66KLxuggtu2H", + "ratePlanId": "44SM3FAsfvgcZs9ehGlNOQ", + "guarantee": { + "guaranteeType": "DEPOSIT_REQUIRED", + "acceptedPayments": [ + "VISA" + ], + "cvvRequired": true, + "amountPercent": { + "taxInclusive": true, + "feesInclusive": true, + "numberOfNights": 5, + "basisType": "FULL_STAY", + "applyAs": "FIRST_NIGHT_DEPOSIT", + "percent": 10.05, + "amount": { + "amount": 190.95, + "currencyCode": "USD" + } + } + }, + "prepayRequired": true, + "refundable": true, + "totalPrice": { + "totalBeforeTax": 170.95, + "taxes": 10, + "fees": 10, + "taxesBreakdown": [ + { + "amount": 5, + "fttCode": 1, + "inclusive": true + }, + { + "amount": 5, + "fttCode": 2, + "inclusive": true + } + ], + "feesBreakdown": [ + { + "amount": 5, + "fttCode": 5, + "inclusive": true + }, + { + "amount": 5, + "fttCode": 6, + "inclusive": true + } + ], + "totalAfterTax": 190.95, + "currencyCode": "USD", + "isTotalBeforeTaxDisplayEligible": true + }, + "nightlyPrices": [ + { + "basePrice": 89.95, + "taxes": { + "amount": 5.55, + "taxBreakdown": [ + { + "amount": 8.05, + "fttCode": 15, + "inclusive": true + } + ] + }, + "fees": { + "amount": 10.95, + "feeBreakdown": [ + { + "amount": 8.05, + "fttCode": 15, + "inclusive": true + } + ] + }, + "totalPrice": 100.05, + "startDate": "2021-12-01", + "endDate": "2021-12-31", + "currencyCode": "USD" + } + ], + "cancelPenalties": { + "description": "Some fees are not refundable", + "penalties": [ + { + "cancelDeadline": "2017-07-21T17:32:28", + "description": "Free cancellation up to 1 week before checkin", + "refundableStatus": "FULLY_REFUNDABLE", + "amountPercent": { + "taxInclusive": true, + "feesInclusive": true, + "numberOfNights": 5, + "basisType": "FULL_STAY", + "applyAs": "FIRST_NIGHT_DEPOSIT", + "percent": 10.05, + "amount": { + "amount": 190.95, + "currencyCode": "USD" + } + } + } + ] + } + } + ] +} +``` + +## Hotel Details + +Retrieve descriptive details about specified hotels. + +### URI + +```shell +POST /hotels/details +``` + +### Parameters + +|Name|Type|Format|Description| +|---|---|---|---| +`Accept-Language`|`string`|-|-| +`concur-correlationid`|`string`|-|**Required** This unique code can be used during troubleshooting as it identifies the API call in the log files.| +`body`|[`HotelDetailsCriteria`](./v4.schemas.html#schemahoteldetailscriteria)|-|**Required** Hotel details criteria.| + +### Examples + +#### Request + +```json +{ + "requestorInfo": { + "posRequestorId": "abc1234", + "travelerUuid": "123e4567-e89b-12d3-a456-426614174000", + "loginId": "abc@concur.com", + "bookingForSelf": true + }, + "hotelCodes": [ + { + "chainCode": "HH", + "propertyCode": "HH498949" + } + ], + "searchSessionToken": "b41168ba-7ee1-4b68-9934-47f5c55337d6" +} +``` + +### Response + +```json +{ + "hotelDetailsList": [ + { + "propertyRef": { + "chainCode": "HH", + "propertyCode": "HH498949" + }, + "hotelDescriptiveInfo": { + "propertyDescription": "Offering a restaurant and a fitness centre, Hilton Garden Inn Long Island City is located in Long Island City. Free WiFi access is available. Each room here will provide you with a TV. Complete with a microwave, the dining area also has a refrigerator and a coffee machine. Guests will enjoy a full service restaurant and bar with evening room service. Other facilities offered at the property include a shared lounge and luggage storage. LaGuardia Airport is 8 km away. Guests are required to show a photo identification and credit card upon check-in. Please note that all Special Requests are subject to availability and additional charges may apply. Due to Coronavirus (COVID-19), wearing a face mask is mandatory in all indoor common areas. In response to Coronavirus (COVID-19), additional safety and sanitation measures are currently in effect at this property. Food & beverage services at this property may be limited or unavailable due to Coronavirus (COVID-19). Due to Coronavirus (COVID-19), this property is taking steps to help protect the safety of guests and staff. Certain services and amenities may be reduced or unavailable as a result. Please note that the Extra Bed / Crib is subject to availability. The property will be under renovations to the lobby bar and lounge area from 6 January 2020 until 30 March 2020.\n", + "descriptiveInfos": [ + { + "otaCode": 8, + "contents": [ + "Check-in at 3:00PM", + "Check-out at 11:00AM" + ], + "startDate": "2021-10-20", + "endDate": "2021-11-20" + } + ] + }, + "mediaItems": [ + { + "url": "https://images.samplehost.com/samplepath/hotelEntrance.jpg", + "category": 0, + "description": "Hotel entrance", + "type": "IMAGE" + } + ], + "checkInTime": "16:00", + "checkOutTime": "11:00" + } + ] +} +``` + +## Reservation + +Reserve a hotel rate. + +### URI + +```shell +POST /hotels/reservation +``` + +### Parameters + +|Name|Type|Format|Description| +|---|---|---|---| +`Accept-Language`|`string`|-|-| +`concur-correlationid`|`string`|-|**Required** This unique code can be used during troubleshooting as it identifies the API call in the log files.| +`body`|[`ReservationCriteria`](./v4.schemas.html#schemareservationcriteria)|-|**Required** Reservation criteria.| + +### Examples + +#### Request + +```json +{ + "bookingUuid": "123e4567-e89b-12d3-a456-426614174000", + "hotelPropertyRef": { + "chainCode": "HH", + "propertyCode": "HH498949" + }, + "requestorInfo": { + "posRequestorId": "abc1234", + "travelerUuid": "123e4567-e89b-12d3-a456-426614174000", + "loginId": "abc@concur.com", + "bookingForSelf": true + }, + "ratePlanId": "44SM3FAsfvgcZs9ehGlNOQ", + "guests": [ + { + "firstname": "Blake", + "lastname": "Smith", + "address": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + }, + "companyName": "SAP Concur", + "contactInfo": { + "phoneNumbers": [ + "+1-555-555-1234" + ], + "faxNumber": "+1-555-555-5678", + "emails": [ + "user@example.com" + ] + }, + "birthdate": "1990-04-17" + } + ], + "paymentModeIndicator": "PersonalCard", + "guarantee": { + "cardType": "VISA", + "cardNumber": "4242-4242-4242-4242", + "cardExpiryMonth": 1, + "cardExpiryYear":2030, + "cvv": "369", + "cardHolderName": "John Smith", + "cardHolderAddress": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + } + }, + "loyalty": { + "programCode": "EM", + "accountId": "209875030" + }, + "checkin": "2021-10-20", + "checkout": "2021-10-23", + "comments": [ + "Accessible", + "NonSmoking", + "Upper floor away from elevator" + ], + "customFields": [ + { + "name": "OrgUnit", + "value": "Travel Agents" + } + ], + "searchSessionToken": "b41168ba-7ee1-4b68-9934-47f5c55337d6", + "legalEntity": { + "name": "My Great Company", + "taxId": "111-11-1111", + "address": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + } + }, + "threeDSecure": { + "avv": "string", + "cavvAlgorithm": "string", + "messageVersion": "string", + "transactionId": "string", + "threeDSServerTransactionId": "string", + "eci": "string", + "exemptionCode": "string" + }, + "tripUuid": "123e4567-e89b-12d3-a456-426614174000" +} +``` + +### Response + +```json +{ + "confirmationCodes": [ + { + "codeType": "SUPPLIER_CONFIRMATION", + "code": "3704188022P5683" + } + ], + "status": "RESERVED", + "basicHotelProperty": { + "propertyCode": "HH498949", + "chainCode": "HH", + "hotelName": "JW Marriott Parq", + "contactInfo": { + "phoneNumbers": [ + "+1-555-555-1234" + ], + "faxNumber": "+1-555-555-5678", + "emails": [ + "user@example.com" + ] + }, + "position": { + "latitude": 49.246292, + "longitude": -123.116226 + }, + "address": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + }, + "cityCode": "DFW" + }, + "roomRate": { + "rateDescription": [ + "Promotional Rate" + ], + "rateCategory": { + "otaCode": 1, + "value": "AAA" + }, + "rateChangesOverStay": true, + "roomId": "kVNU66KLxuggtu2H", + "ratePlanId": "44SM3FAsfvgcZs9ehGlNOQ", + "guarantee": { + "guaranteeType": "DEPOSIT_REQUIRED", + "acceptedPayments": [ + "VISA" + ], + "cvvRequired": true, + "amountPercent": { + "taxInclusive": true, + "feesInclusive": true, + "numberOfNights": 5, + "basisType": "FULL_STAY", + "applyAs": "FIRST_NIGHT_DEPOSIT", + "percent": 10.05, + "amount": { + "amount": 190.95, + "currencyCode": "USD" + } + } + }, + "prepayRequired": true, + "refundable": true, + "totalPrice": { + "totalBeforeTax": 170.95, + "taxes": 10, + "fees": 10, + "taxesBreakdown": [ + { + "amount": 5, + "fttCode": 1, + "inclusive": true + }, + { + "amount": 5, + "fttCode": 2, + "inclusive": true + } + ], + "feesBreakdown": [ + { + "amount": 5, + "fttCode": 5, + "inclusive": false + }, + { + "amount": 5, + "fttCode": 6, + "inclusive": false + } + ], + "totalAfterTax": 190.95, + "currencyCode": "USD", + "isTotalBeforeTaxDisplayEligible": true + }, + "nightlyPrices": [ + { + "basePrice": 89.95, + "taxes": { + "amount": 5.55, + "taxBreakdown": [ + { + "amount": 8.05, + "fttCode": 15, + "inclusive": true + } + ] + }, + "fees": { + "amount": 10.95, + "feeBreakdown": [ + { + "amount": 8.05, + "fttCode": 15, + "inclusive": true + } + ] + }, + "totalPrice": 100.05, + "startDate": "2021-12-01", + "endDate": "2021-12-31", + "currencyCode": "USD" + } + ], + "cancelPenalties": { + "description": "Some fees are not refundable", + "penalties": [ + { + "cancelDeadline": "2017-07-21T17:32:28", + "description": "Free cancellation up to 1 week before checkin", + "refundableStatus": "FULLY_REFUNDABLE", + "amountPercent": { + "taxInclusive": true, + "feesInclusive": true, + "numberOfNights": 5, + "basisType": "FULL_STAY", + "applyAs": "FIRST_NIGHT_DEPOSIT", + "percent": 10.05, + "amount": { + "amount": 190.95, + "currencyCode": "USD" + } + } + } + ] + } + }, + "checkin": "2021-10-20", + "checkout": "2021-10-23", + "guests": [ + { + "firstname": "Blake", + "lastname": "Smith", + "address": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + }, + "companyName": "SAP Concur", + "contactInfo": { + "phoneNumbers": [ + "+1-555-555-1234" + ], + "faxNumber": "+1-555-555-5678", + "emails": [ + "user@example.com" + ] + }, + "birthdate": "1990-04-17" + } + ], + "roomDescription": [ + "1 bedroom luxury suite", + "hearing accessible", + "workspace", + "garden facing balcony" + ], + "comments": [ + "Accessible", + "NonSmoking", + "Upper floor away from elevator" + ], + "isModifiable": true +} +``` + +## Read + +Read reservation details. This endpoint is utilized for two purposes: + +1. Used by automatic Concur process as part of reserving a hotel to acknowledge receipt of booking confirmation as well as write information to Itinerary. +2. Used to sync current state of booking (sync offline booking changes) from supplier system as and when needed, e.g. user opening his trip in trip library. + +### URI + +```shell +POST /hotels/reservation/read +``` + +### Parameters + +|Name|Type|Format|Description| +|---|---|---|---| +`Accept-Language`|`string`|-|-| +`concur-correlationid`|`string`|-|**Required** This unique code can be used during troubleshooting as it identifies the API call in the log files.| +`body`|[`ReadCriteria`](./v4.schemas.html#schemareadcriteria)|-|**Required** Read itinerary criteria.| + +### Examples + +#### Request + +```json +{ + "requestorInfo": { + "posRequestorId": "abc1234", + "travelerUuid": "123e4567-e89b-12d3-a456-426614174000", + "loginId": "abc@concur.com", + "bookingForSelf": true + }, + "confirmationCodes": [ + { + "codeType": "SUPPLIER_CONFIRMATION", + "code": "3704188022P5683" + } + ] +} +``` + +### Response + +```json +{ + "confirmationCodes": [ + { + "codeType": "SUPPLIER_CONFIRMATION", + "code": "3704188022P5683" + } + ], + "status": "RESERVED", + "basicHotelProperty": { + "propertyCode": "HH498949", + "chainCode": "HH", + "hotelName": "JW Marriott Parq", + "contactInfo": { + "phoneNumbers": [ + "+1-555-555-1234" + ], + "faxNumber": "+1-555-555-5678", + "emails": [ + "user@example.com" + ] + }, + "position": { + "latitude": 49.246292, + "longitude": -123.116226 + }, + "address": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + }, + "cityCode": "DFW" + }, + "roomRate": { + "rateDescription": [ + "Promotional Rate" + ], + "rateCategory": { + "otaCode": 1, + "value": "AAA" + }, + "rateChangesOverStay": true, + "roomId": "kVNU66KLxuggtu2H", + "ratePlanId": "44SM3FAsfvgcZs9ehGlNOQ", + "guarantee": { + "guaranteeType": "DEPOSIT_REQUIRED", + "acceptedPayments": [ + "VISA" + ], + "cvvRequired": true, + "amountPercent": { + "taxInclusive": true, + "feesInclusive": true, + "numberOfNights": 5, + "basisType": "FULL_STAY", + "applyAs": "FIRST_NIGHT_DEPOSIT", + "percent": 10.05, + "amount": { + "amount": 190.95, + "currencyCode": "USD" + } + } + }, + "prepayRequired": true, + "refundable": true, + "totalPrice": { + "totalBeforeTax": 170.95, + "taxes": 10, + "fees": 10, + "totalAfterTax": 190.95, + "currencyCode": "USD" + }, + "nightlyPrices": [ + { + "basePrice": 89.95, + "taxes": { + "amount": 5.55, + "taxBreakdown": [ + { + "amount": 8.05, + "fttCode": 15, + "inclusive": true + } + ] + }, + "fees": { + "amount": 10.95, + "feeBreakdown": [ + { + "amount": 8.05, + "fttCode": 15, + "inclusive": true + } + ] + }, + "totalPrice": 100.05, + "startDate": "2021-12-01", + "endDate": "2021-12-31", + "currencyCode": "USD" + } + ], + "cancelPenalties": { + "description": "Some fees are not refundable", + "penalties": [ + { + "cancelDeadline": "2017-07-21T17:32:28", + "description": "Free cancellation up to 1 week before checkin", + "refundableStatus": "FULLY_REFUNDABLE", + "amountPercent": { + "taxInclusive": true, + "feesInclusive": true, + "numberOfNights": 5, + "basisType": "FULL_STAY", + "applyAs": "FIRST_NIGHT_DEPOSIT", + "percent": 10.05, + "amount": { + "amount": 190.95, + "currencyCode": "USD" + } + } + } + ] + } + }, + "checkin": "2021-10-20", + "checkout": "2021-10-23", + "guests": [ + { + "firstname": "Blake", + "lastname": "Smith", + "address": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + }, + "companyName": "SAP Concur", + "contactInfo": { + "phoneNumbers": [ + "+1-555-555-1234" + ], + "faxNumber": "+1-555-555-5678", + "emails": [ + "user@example.com" + ] + }, + "birthdate": "1990-04-17" + } + ], + "roomDescription": [ + "1 bedroom luxury suite", + "hearing accessible", + "workspace", + "garden facing balcony" + ], + "comments": [ + "Accessible", + "NonSmoking", + "Upper floor away from elevator" + ], + "isModifiable": true +} +``` + +## Modify + +Modify a specific reservation. + +### URI + +```shell +POST /hotels/reservation/modify +``` + +### Parameters + +|Name|Type|Format|Description| +|---|---|---|---| +`Accept-Language`|`string`|-|-| +`concur-correlationid`|`string`|-|**Required** This unique code can be used during troubleshooting as it identifies the API call in the log files.| +`body`|[`ModifyCriteria`](./v4.schemas.html#schemamodifycriteria)|-|**Required** Modify reservation criteria.| + +### Examples + +#### Request + +```json +{ + "reservationCriteria": { + "hotelPropertyRef": { + "chainCode": "HH", + "propertyCode": "HH498949" + }, + "requestorInfo": { + "posRequestorId": "abc1234", + "travelerUuid": "123e4567-e89b-12d3-a456-426614174000", + "loginId": "abc@concur.com", + "bookingForSelf": true + }, + "ratePlanId": "44SM3FAsfvgcZs9ehGlNOQ", + "guests": [ + { + "firstname": "Blake", + "lastname": "Smith", + "address": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + }, + "companyName": "SAP Concur", + "contactInfo": { + "phoneNumbers": [ + "+1-555-555-1234" + ], + "faxNumber": "+1-555-555-5678", + "emails": [ + "user@example.com" + ] + }, + "birthdate": "1990-04-17" + } + ], + "paymentModeIndicator": "PersonalCard", + "guarantee": { + "cardType": "VISA", + "cardNumber": "4242-4242-4242-4242", + "cardExpiryMonth": 1, + "cardExpiryYear":2030, + "cvv": "369", + "cardHolderName": "John Smith", + "cardHolderAddress": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + } + }, + "loyalty": { + "programCode": "EM", + "accountId": "209875030" + }, + "checkin": "2021-10-20", + "checkout": "2021-10-23", + "comments": [ + "Accessible", + "NonSmoking", + "Upper floor away from elevator" + ], + "customFields": [ + { + "name": "OrgUnit", + "value": "Travel Agents" + } + ], + "searchSessionToken": "b41168ba-7ee1-4b68-9934-47f5c55337d6", + "legalEntity": { + "name": "My Great Company", + "taxId": "111-11-1111", + "address": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + } + }, + "threeDSecure": { + "avv": "string", + "cavvAlgorithm": "string", + "messageVersion": "string", + "transactionId": "string", + "threeDSServerTransactionId": "string", + "eci": "string", + "exemptionCode": "string" + } + }, + "confirmationCodes": [ + { + "codeType": "SUPPLIER_CONFIRMATION", + "code": "3704188022P5683" + } + ] +} +``` + +### Response + +```json +{ + "confirmationCodes": [ + { + "codeType": "SUPPLIER_CONFIRMATION", + "code": "3704188022P5683" + } + ], + "status": "RESERVED", + "basicHotelProperty": { + "propertyCode": "HH498949", + "chainCode": "HH", + "hotelName": "JW Marriott Parq", + "contactInfo": { + "phoneNumbers": [ + "+1-555-555-1234" + ], + "faxNumber": "+1-555-555-5678", + "emails": [ + "user@example.com" + ] + }, + "position": { + "latitude": 49.246292, + "longitude": -123.116226 + }, + "address": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + }, + "cityCode": "DFW" + }, + "roomRate": { + "rateDescription": [ + "Promotional Rate" + ], + "rateCategory": { + "otaCode": 1, + "value": "AAA" + }, + "rateChangesOverStay": true, + "roomId": "kVNU66KLxuggtu2H", + "ratePlanId": "44SM3FAsfvgcZs9ehGlNOQ", + "guarantee": { + "guaranteeType": "DEPOSIT_REQUIRED", + "acceptedPayments": [ + "VISA" + ], + "cvvRequired": true, + "amountPercent": { + "taxInclusive": true, + "feesInclusive": true, + "numberOfNights": 5, + "basisType": "FULL_STAY", + "applyAs": "FIRST_NIGHT_DEPOSIT", + "percent": 10.05, + "amount": { + "amount": 190.95, + "currencyCode": "USD" + } + } + }, + "prepayRequired": true, + "refundable": true, + "totalPrice": { + "totalBeforeTax": 170.95, + "taxes": 10, + "fees": 10, + "totalAfterTax": 190.95, + "currencyCode": "USD" + }, + "nightlyPrices": [ + { + "basePrice": 89.95, + "taxes": { + "amount": 5.55, + "taxBreakdown": [ + { + "amount": 8.05, + "fttCode": 15, + "inclusive": true + } + ] + }, + "fees": { + "amount": 10.95, + "feeBreakdown": [ + { + "amount": 8.05, + "fttCode": 15, + "inclusive": true + } + ] + }, + "totalPrice": 100.05, + "startDate": "2021-12-01", + "endDate": "2021-12-31", + "currencyCode": "USD" + } + ], + "cancelPenalties": { + "description": "Some fees are not refundable", + "penalties": [ + { + "cancelDeadline": "2017-07-21T17:32:28", + "description": "Free cancellation up to 1 week before checkin", + "refundableStatus": "FULLY_REFUNDABLE", + "amountPercent": { + "taxInclusive": true, + "feesInclusive": true, + "numberOfNights": 5, + "basisType": "FULL_STAY", + "applyAs": "FIRST_NIGHT_DEPOSIT", + "percent": 10.05, + "amount": { + "amount": 190.95, + "currencyCode": "USD" + } + } + } + ] + } + }, + "checkin": "2021-10-20", + "checkout": "2021-10-23", + "guests": [ + { + "firstname": "Blake", + "lastname": "Smith", + "address": { + "addressLines": [ + "910 Mainland Street" + ], + "city": "Vancouver", + "stateName": "British Columbia", + "countryCode": "CA", + "postalCode": "V5K 0A1" + }, + "companyName": "SAP Concur", + "contactInfo": { + "phoneNumbers": [ + "+1-555-555-1234" + ], + "faxNumber": "+1-555-555-5678", + "emails": [ + "user@example.com" + ] + }, + "birthdate": "1990-04-17" + } + ], + "roomDescription": [ + "1 bedroom luxury suite", + "hearing accessible", + "workspace", + "garden facing balcony" + ], + "comments": [ + "Accessible", + "NonSmoking", + "Upper floor away from elevator" + ] +} +``` + +## Cancel + +Cancel a specified reservation. + +### URI + +```shell +POST /hotels/reservation/cancel +``` + +### Parameters + +|Name|Type|Format|Description| +|---|---|---|---| +`Accept-Language`|`string`|-|-| +`concur-correlationid`|`string`|-|**Required** This unique code can be used during troubleshooting as it identifies the API call in the log files.| +`body`|[`CancelCriteria`](./v4.schemas.html#schemacancelcriteria)|-|**Required** Cancel reservation criteria.| + +### Examples + +#### Request + +```json +{ + "requestorInfo": { + "posRequestorId": "abc1234", + "travelerUuid": "123e4567-e89b-12d3-a456-426614174000", + "loginId": "abc@concur.com", + "bookingForSelf": true + }, + "confirmationCodes": [ + { + "codeType": "SUPPLIER_CONFIRMATION", + "code": "3704188022P5683" + } + ] +} +``` + +### Response + +```json +{ + "confirmationCodes": [ + { + "codeType": "SUPPLIER_CONFIRMATION", + "code": "3704188022P5683" + }, + { + "codeType": "CANCELLATION", + "code": "24212411" + } + ], + "cancellationRemarks": "Reservation cancelled with no penalty" +} +``` \ No newline at end of file diff --git a/src/api-reference/direct-connects/hotel-service-4/v4.schemas.markdown b/src/api-reference/direct-connects/hotel-service-4/v4.schemas.markdown new file mode 100644 index 000000000..8efdfbe66 --- /dev/null +++ b/src/api-reference/direct-connects/hotel-service-4/v4.schemas.markdown @@ -0,0 +1,881 @@ +--- +title: Direct Connect - Hotel Service v4 - Schemas +layout: reference +--- + +{% include prerelease.html %} + +# Direct Connect - Hotel Service v4 - Schemas + +## SearchCriteria + +Search by either location or exact property reference, if available. + +|Name|Type|Format|Description| +|---|---|---|---| +`requestorInfo`|[`RequestorInfo`](#schemarequestorinfo)|-|**Required** Information about Point of Sale (POS), traveler, and user associated with this request.| +`numGuests`|`integer`|`int32`|Number of guests for accommodation as entered by traveler.| +`guestCountryCode`|`string`|`ISO ALPHA-2`|Two-character ISO code for country.| +`locationSearch`|[`LocationSearch`](#schemalocationsearch)|-|Reference to location details for search.| +`hotelPropertyRefs`|[`HotelPropertyRef`](#schemahotelpropertyref)|-|Reference IDs to hotel properties, if available. When provided, `locationSearch` will not be used and may not be set.| +`checkin`|`string`|`date`|**Required** Check in date as entered by traveler.| +`checkout`|`string`|`date`|**Required** Check out date as entered by traveler.| +`customFields`|[`CustomField`](#schemacustomfield)|-|Custom fields that are supported by vendor. Example: `CostCenter`| +`includeDepositRequired`|`boolean`|`true` \ `false`|**Required** If `true`, properties where deposits are required are displayed.| +`rateCategories`|[`RateCategory`](#schemaratecategory)|-|Special rate categories requested, if applicable.| +`maxSearchResults`|`integer`|-|Maximum number of properties allowed to be included in search results.| +`accessViaMobile`|`boolean`|`true` \ `false`| Indicates the request is coming from mobile device.| + +## LocationSearch + +Reference to location details for search. + +|Name|Type|Format|Description| +|---|---|---|---| +`location`|[`Location`](#schemalocation)|-|**Required** Defines geographic location for search.| +`radius`|[`Radius`](#schemaradius)|-|**Required** Radius to restrict the search for hotels.| +`maxRadius`|[`Radius`](#schemaradius)|-|**Required** Allows extended search radius for preferred hotel properties and can be more than radius defined by traveler.| + +## RatesCriteria + +|Name|Type|Format|Description| +|---|---|---|---| +`requestorInfo`|[`RequestorInfo`](#schemarequestorinfo)|-|**Required** Information about POS (Point Of Sale), traveler, and user associated with this request.| +`hotelPropertyRefs`|[`HotelPropertyRef`](#schemahotelpropertyref)|-|**Required** Reference IDs for hotel properties where the rate is requested.| +`checkin`|`string`|`date`|**Required** Check in date as entered by traveler.| +`checkout`|`string`|`date`|**Required** Check out date as entered by traveler.| +`rateCategories`|[`RateCategory`](#schemaratecategory)|-|Special rate categories requested, if applicable.| +`numGuests`|`integer`|`int32`|Number of guests for accommodation.| +`guestCountryCode`|`string`|`ISO ALPHA-2`|Two-character ISO code for country.| +`searchSessionToken`|[`SearchSessionToken`](#schemasearchsessiontoken)|-|Session token to be generated and provided by server on initial search call that can be referenced back for future calls on the same session.| +`accessViaMobile`|`boolean`|`true` \ `false`| Indicates the request is coming from mobile device.| + +## RateDetailsCriteria + +|Name|Type|Format|Description| +|---|---|---|---| +`requestorInfo`|[`RequestorInfo`](#schemarequestorinfo)|-|**Required** Information about POS (Point Of Sale), traveler, and user associated with this request.| +`hotelPropertyRefs`|[`HotelPropertyRef`](#schemahotelpropertyref)|-|**Required** Reference IDs for hotel properties where the rate is requested.| +`ratePlanIds`|`string`|-|**Required** Rate product IDs for which detail rates are requested.| +`checkin`|`string`|`date`|**Required** Check in date as entered by traveler.| +`checkout`|`string`|`date`|**Required** Check out date as entered by traveler.| +`rateCategories`|[`RateCategory`](#schemaratecategory)|-|Special rate categories requested, if applicable| +`numGuests`|`integer`|`int32`|Number of guests for accommodation.| +`guestCountryCode`|`string`|`ISO ALPHA-2`|Two-character ISO code for country.| +`searchSessionToken`|[`SearchSessionToken`](#schemasearchsessiontoken)|-|Session token to be generated and provided by server on initial search call that can be referenced back for future calls on the same session.| +`reshopInfo`|[`ReshopInfo`](#schemareshopinfo)|-|Information related to reshopping, only available during modify (and not shopping) flow| + +## HotelDetailsCriteria + +|Name|Type|Format|Description| +|---|---|---|---| +`requestorInfo`|[`RequestorInfo`](#schemarequestorinfo)|-|**Required** Information about POS (Point Of Sale), traveler, and user associated with this request.| +`hotelCodes`|[`HotelPropertyRef`](#schemahotelpropertyref)|-|**Required** Reference IDs for hotel properties where the rate is requested.| +`searchSessionToken`|[`SearchSessionToken`](#schemasearchsessiontoken)|-|Session token to be generated and provided by server on initial search call that can be referenced back for future calls on the same session.| + +## CustomField + +Vendor supported custom field. + +|Name|Type|Format|Description| +|---|---|---|---| +`name`|`string`|-|**Required** Name of the custom field.| +`value`|`string`|-|**Required** Value of the custom field.| + +## HotelPropertyRef + +Reference to hotel property using provider specific property code. + +|Name|Type|Format|Description| +|---|---|---|---| +`chainCode`|`string`|-|Chain code associated with hotel, if available.| +`propertyCode`|`string`|-|**Required** Provider's property code as given in search response.| + +## HotelProperty + +Hotel property object returned by hotel search. + +|Name|Type|Format|Description| +|---|---|---|---| +`propertyCode`|[`PropertyCode`](#schemapropertycode)|-|**Required** | +`altPropertyCode`|`object`|-|Alternate property code.| +» `catalogCode`|[`PropertyCode`](#schemapropertycode)|-|**Required** Catalog code of property.| +» `catalogName`|[`CatalogName`](#schemacatalogname)|-|**Required** `NORTHSTAR`, `GIATA`, and `GDS` (`SABRE`, `AMADEUS`, `GALILEO`) are preferred. Supported values: `NORTHSTAR`, `GIATA`, `LEONARDO`, `AMADEUS`, `SABRE`, `GALILEO`, `CWT`, `EXPEDIA`, `HRS`, `BOOKING.COM`, `OMNIBEES`| +`chainCode`|`string`|-|Chain code associated with hotel, if available.| +`superChainCode`|`string`|-|Super chain code for property.| +`hotelName`|`string`|-|**Required** Name of hotel.| +`contactInfo`|[`ContactInfo`](#schemacontactinfo)|-|**Required** Contact information for property.| +`position`|[`Geolocation`](#schemageolocation)|-|Geolocation of property.| +`address`|[`Address`](#schemaaddress)|-|**Required** Address of property.| +`leadRate`|[`LeadRate`](#schemaleadrate)|-|**Required** The lowest nightly rate averaged over the stay. Not required if `availabilityStatus` is `CLOSED_OUT` or `UNKNOWN`.| +`totalPrice`|[`TotalPriceHotel`](#schematotalpricehotel)|-|Details about the total pricing associated with stay. +`onRequest`|`boolean`|`true` / `false`|Indicates that the hotel can only be confirmed on request.| +`availabilityStatus`|[`AvailabilityStatus`](#schemaavailabilitystatus)|-|**Required** Supported values: `AVAILABLE_FOR_SALE`, `CLOSED_OUT`, `UNKNOWN` | +`preferenceRank`|[`PreferenceRank`](#schemapreferencerank)|-|Supported values: `PREFERRED`, `MORE_PREFERRED`, `MOST_PREFERRED`. This value will override any preferences set by company admins.| +`preferenceLevel`|[`preferenceLevel`](#schemapreferencelevel)|-|Supported values: `CHAIN`, `PROPERTY`. Note that value can be set to `CHAIN` for hotels preferred at both chain or superchain level and this is what is displayed to user as UI as `Preferred Chain`.| +`amenities`|[`HotelAmenity`](#schemahotelamenity)|-|**Required** Hotel amenity containing code as described in OTA code list Hotel Amenity Code (HAC).| +`leadImageURI`|`string`|`URI`| **Required** Contains an HTTPS URL pointing to a .png or .jpg hotel image file. The image will be used as a thumbnail and should be limited to 70x70 pixels to prevent image artifacts by scaling.| +`rating`|[`HotelRating`](#schemahotelrating)|-|Hotel rating details along with source.| +`sustainabilityAwards`|[`SustainabilityAward`](#schemasustainabilityaward)|-|Award/Certification related to sustainability awarded to the hotel.| +`emissionInfo`|[`EmissionInfo`](#schemasustainabilityaward)|-|Hotel Sustainability Index information.| +`exactMatch`|`boolean`|`true` / `false`|Flag if true indicates that this hotel is an exact match for what was asked in search request.| +`safetyScore`|[`SafetyScore`](#schemasafetyscore)|-|Hotel Safety Score information.| + + +## HotelRating + +Hotel rating details along with source. If source is not one of the supported values, it is possible to use `OTHER` as `source` and provide it's name in additional `name` attribute. + +|Name|Type|Format|Description| +|---|---|---|---| +`value`|`integer`|-|**Required** Hotel rating value should be an integer number from `1` to `5`, representing the star rating.| +`source`|`string`|-|**Required** Source of rating. Supported values: `NORTHSTAR`, `AAA_DIAMONDS`, `HOTELSTAR`, `STAR_RATING_AUSTRALIA`,`HRS_STAR_RATING`,`OTHER`| +`name`|`string`|-| Name of the rating provider in case when above `source` is set as `OTHER`.| + +## BasicHotelProperty + +|Name|Type|Format|Description| +|---|---|---|---| +`propertyCode`|[`PropertyCode`](#schemapropertycode)|-|**Required**| +`chainCode`|`string`|-|Chain code associated with hotel, if available.| +`hotelName`|`string`|-|**Required** Name of hotel.| +`contactInfo`|[`ContactInfo`](#schemacontactinfo)|-|**Required** Contact information for property.| +`position`|[`Geolocation`](#schemageolocation)|-|Geolocation property.| +`address`|[`Address`](#schemaaddress)|-|Address of property.| +`cityCode`|`string`|`IATA 3-character city code`|**Required for adding passing segments** City code for the property.| + +## HotelMedia + +|Name|Type|Format|Description| +|---|---|---|---| +`url`|`string`|`uri`|**Required** URL of hotel property.| +`category`|`integer`|`int32`|OTA code describing the image as defined in OTA Picture Category Code (PIC) list.| +`description`|`string`|-|Description of the hotel media.| +`type`|[`MediaType`](#schemamediatype)|-|**Required** Type of media. Supported values: `IMAGE`| + +## Location + +Defines geolocation for search. + +|Name|Type|Format|Description| +|---|---|---|---| +`geoLocation`|[`Geolocation`](#schemageolocation)|-|**Required** Geolocation of property.| +`locationType`|[`LocationType`](#schemalocationtype)|-|**Required** Type of location associated with this search. Supported values: `COMPANY_LOCATION`, `HOTEL`, `ADDRESS`, `PLACE`, `AIRPORT`| +`name`|`string`|-|**Required**| +`address`|[`Address`](#schemaaddress)|-|| +`iataCode`|`string`|-|IATA code of airport, if location type searched is `AIRPORT`.| + +## Geolocation + +|Name|Type|Format|Description| +|---|---|---|---| +`latitude`|`number`|-|**Required**| +`longitude`|`number`|-|**Required**| + +## Address + +|Name|Type|Format|Description| +|---|---|---|---| +`addressLines`|`string`|-|**Required** Address of the property.| +`city`|`string`|-|**Required** City name.| +`state`|`string`|-|**Deprecated - Use `stateName` instead** 2-character state code - will continue to be supported when state code is available.| +`stateName`|`string`|-|Name or code of the state, province or administrative region.| +`countryCode`|`string`|`ISO ALPHA-2`|**Required** ISO code for country.| +`postalCode`|`string`|-|Postal or zip code of the property.| + +## HotelRates + +|Name|Type|Format|Description| +|---|---|---|---| +`propertyCode`|[`PropertyCode`](#schemapropertycode)|-|**Required** Property code of the hotel.| +`rates`|[`HotelRate`](#schemahotelrate)|-|**Required** Applicable rates for the property.| + +## HotelRate + +|Name|Type|Format|Description +|---|---|---|---| +`bedding`|[`Bedding`](#schemabedding)|-|Details about bedding associated with the room.| +`mealsIncluded`|`integer`|-|Code based on [OTA Meal Plan Type (MPT)](./v4.supported-ota-codes.html#meal-plans).| +`roomDescription`|`string`|-| Room description information.| +`roomAmenities`|[`RoomAmenity`](#schemaroomamenity)|-|Room amenity containing code as described in OTA code list Room Amenity Type (RMA).| +`roomType`|`integer`|`int32`|[OTA code of GRI (Guest Room Info)](./v4.supported-ota-codes.html#room-type-gri-codes) type providing guest room type details.| +`roomRate`|[`RoomRate`](#schemaroomrate)|-|**Required**| +`source`|`object`|-|Details about the source attributed to this rate. **NOTE:** `name` must also be provided along with `logo`. `logo` - if provided is displayed as source while name is used as title/label. Nothing is displayed as `source` if `suppress` is `true`.| +» `name`|`string`|-| Name of the supplier for the source that can be shown in user interface.| +» `logo`|`string`|`uri`| URI to logo image of the supplier for the source that can be shown in user interface. Size should be at-least 84x16.| +» `suppress`|`boolean`|`true` / `false`| If `true`, all source attributions for this rate will be suppressed.| + +## RateCategory + +|Name|Type|Format|Description| +|---|---|---|---| +`otaCode`|`integer`|`int32`|**Required** Code based on [OTA Rate Plan Type (RPT)](./v4.supported-ota-codes.html#rate-plans).| +`value`|`string`|-|The given rate plan type code.| + +## TotalPrice + +Details about the total pricing associated with stay. + +|Name|Type|Format|Description| +|---|---|---|---| +`totalBeforeTax`|`number`|-|**Required** Total price before tax.| +`taxes`|`number`|-|Additional taxes to be added to rate.| +`taxesBreakdown`|[`FeeTaxType`](#schemafeetaxtype)|-|Tax breakdown by FTT Code associated with rate. Can be either included or excluded from total rate as marked with `inclusive` field.| +`fees`|`number`|-|Additional fees to be added to rate.| +`feesBreakdown`|[`FeeTaxType`](#schemafeetaxtype)|-|Fee breakdown by FTT Code associated with rate. Can be either included or excluded from total rate as marked with `inclusive` field.| +`totalAfterTax`|`number`|-|Total price after tax is included.| +`currencyCode`|[`CurrencyCode`](#schemacurrencycode)|`ISO 4217`|**Required** Currency code.| +`isTotalBeforeTaxDisplayEligible`|`boolean`|`true` / `false`|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.| + +## Price + +|Name|Type|Format|Description| +|---|---|---|---| +`amount`|`number`|-|**Required**| +`currencyCode`|[`CurrencyCode`](#schemacurrencycode)|`ISO 4217`|**Required** Currency code.| + +## RoomRate + +|Name|Type|Format|Description| +|---|---|---|---| +`rateDescription`|`string`|-|Description of the rate.| +`rateCategory`|[`RateCategory`](#schemaratecategory)|-|| +`rateCustomText`|`string`|-|Informational text for rate.| +`rateChangesOverStay`|`boolean`|`true` / `false`|**Required**| +`loyaltyMembershipRequired`|`boolean`|`true` / `false`|Indicates if a loyalty card/program is required to book this rate.| +`roomId`|`string`|-|| +`ratePlanId`|`string`|-|**Required**| +`guarantee`|`object`|-|Required to be part of `rate` call for applying travel policies.| +» `guaranteeType`|[`GuaranteeType`](#schemaguaranteetype)|-|**Required** Supported values: `DEPOSIT_REQUIRED`, `GUARANTEE_REQUIRED`, `NONE`| +» `acceptedPayments`|[`AcceptedPayments`](#schemaacceptedpayments)|-|Supported values: `AMERICAN_AIRLINES`, `ALASKA_BARTER`, `AMEX`, `AWARD_CREDIT`, `CANADIAN`, `CARTE_BLANCHE`, `CHINA_UNION_PAY`, `CONFERMA`, `DELTA`, `DINERS_CLUB`, `DISCOVER`, `ENROUTE`, `EURO_CARD`, `JCB`, `MC`, `NORTHWEST`, `TWA`, `UATP`, `UNITED_TRAVEL`, `UNITED_CREDIT`, `VENDOR_PROVIDED`,`VISA`| +» `cvvRequired`|`boolean`|`true` / `false`|| +» `amountPercent`|[`AmountPercent`](#schemaamountpercent)|-|| +`prepayRequired`|`boolean`|`true` / `false`|If `true`, prepayment is required for booking this rate.| +`refundable`|`boolean`|`true` / `false`|If `true`, this rate is refundable (based on all cancel penalties).| +`totalPrice`|[`TotalPrice`](#schematotalprice)|-|**Required** Details about total pricing associated with the stay.| +`nightlyPrices`|[`NightlyPrice`](#schemanightlyprice)|-|Details about nightly price for a given date range.| +`cancelPenalties`|[`CancelPenalties`](#schemacancelpenalties)|-|Information about cancellation penalties.| +`rateDetailsCallRequired`|`boolean`|`true` / `false`|If `true`, this rate requires a call to [`RateDetails`](#rate-details-) before being booked. Default: false| + +## RoomRateDetails + +|Name|Type|Format|Description| +|---|---|---|---| +`rateDescription`|`string`|-|Description of the rate.| +`rateCategory`|[`RateCategory`](#schemaratecategory)|-|| +`rateChangesOverStay`|`boolean`|`true` / `false`|**Required**| +`roomId`|`string`|-|| +`ratePlanId`|`string`|-|**Required**| +`guarantee`|`object`|-|**Required**| +» `guaranteeType`|[`GuaranteeType`](#schemaguaranteetype)|-|**Required** Supported values: `DEPOSIT_REQUIRED`, `GUARANTEE_REQUIRED`, `NONE`| +» `acceptedPayments`|[`AcceptedPayments`](#schemaacceptedpayments)|-|Supported values: `AMERICAN_AIRLINES`, `ALASKA_BARTER`, `AMEX`, `AWARD_CREDIT`, `CANADIAN`, `CARTE_BLANCHE`, `CHINA_UNION_PAY`, `CONFERMA`, `DELTA`, `DINERS_CLUB`, `DISCOVER`, `ENROUTE`, `EURO_CARD`, `JCB`, `MC`, `NORTHWEST`, `TWA`, `UATP`, `UNITED_TRAVEL`, `UNITED_CREDIT`, `VENDOR_PROVIDED`, `VISA`| +» `cvvRequired`|`boolean`|`true` / `false`|| +» `amountPercent`|[`AmountPercent`](#schemaamountpercent)|-|| +`prepayRequired`|`boolean`|`true` / `false`|If `true`, prepayment is required for booking this rate.| +`refundable`|`boolean`|`true` / `false`|If `true`, this rate is refundable (based on all cancel penalties).| +`totalPrice`|[`TotalPrice`](#schematotalprice)|-|**Required** Details about total pricing associated with the stay.| +`nightlyPrices`|[`NightlyPrice`](#schemanightlyprice)|-| Details about nightly price for a given date range.| +`cancelPenalties`|[`CancelPenalties`](#schemacancelpenalties)|-|**Required** Information about cancellation penalties.| + +## CancelPenalties + +|Name|Type|Format|Description| +|---|---|---|---| +`description`|`string`|-|Common description applicable to all the penalties.| +`penalties`|[`CancelPenalty`](#schemacancelpenalty)|-|**Required** Cancellation penalties associated with rate. Should be empty array for non-refundable rate.| + +## NightlyPrice + +Details about nightly price for a given date range. + +|Name|Type|Format|Description| +|---|---|---|---| +`basePrice`|`number`|-|**Required** | +`taxes`|[`Taxes`](#schemataxes)|-| Representation of nightly tax amount associated with a rate along with optional breakdown.| +`fees`|[`Fees`](#schemafees)|-| Representation of nightly fees associated with a rate for given dates along with optional breakdown.| +`totalPrice`|`number`|-| Total price including taxes and fees per night.| +`startDate`|`string`|`date`|**Required** | +`endDate`|`string`|`date`|**Required** | +`currencyCode`|[`CurrencyCode`](#schemacurrencycode)|`ISO 4217`|**Required** Currency code.| + +## CancelPenalty + +|Name|Type|Format|Description| +|---|---|---|---| +`cancelDeadline`|`string`|`YYYY-MM-DDThh:mm:ssZhh:mm` or `YYYY-MM-DDThh:mm:ss` or `YYYY-MM-DD hh:mm:ss`| Date string in date-time notation as defined by RFC 3339 with time representing local time at property and corresponding timezone. Timezone can be skipped if not available and just provide date-time in local time. | +`description`|`string`|-|-| +`refundableStatus`|[`RefundableStatus`](#schemarefundablestatus)|-|**Required** Supported values: `FULLY_REFUNDABLE`, `PARTIALLY_REFUNDABLE`, `NON_REFUNDABLE` (previously `NON-REFUNDABLE` - which will be supported as well)| +`amountPercent`|[`AmountPercent`](#schemaamountpercent)|-|| + +## AmountPercent + +|Name|Type|Format|Description| +|---|---|---|---| +`taxInclusive`|`boolean`|`true` / `false`|If `true`, all taxes are included in the returned rate.| +`feesInclusive`|`boolean`|`true` / `false`|If `true`, all fees are included in the returned rate.| +`numberOfNights`|`integer`|-|The number of nights that are to be spent on the property.| +`basisType`|[`AmountPercentBasisType`](#schemaamountpercentbasistype)|-|Supported values: `FULL_STAY`, `NIGHTS`, `FIRST_LAST`| +`applyAs`|[`AmountPercentApplyAs`](#schemaamountpercentapplyas)|-|Supported values: `FIRST_NIGHT_DEPOSIT`, `LAST_NIGHT_DEPOSIT`, `FIRST_AND_LAST_NIGHT_DEPOSIT`| +`percent`|`number`|-|The percentage used to calculate the amount of the cancellation fee.| +`amount`|[`Price`](#schemaprice)|-|| + +## RequestorInfo + +Information about Point of Sale (POS), traveler, and user associated with the request. + +|Name|Type|Format|Description| +|---|---|---|---| +`posRequestorId`|`string`|-|**Required** The identifier of the entity making the request (e.g. ATA/IATA/ID number).| +`travelerUuid`|`string`|-|**Required** UUID that identifies the traveler within SAP Concur systems.| +`loginId`|`string`|-|Login ID of traveler within SAP Concur systems, if available.| +`bookingForSelf`|`boolean`|`true` / `false`|If `true`, the person logged in is making a booking for themselves.| + +## Radius + +|Name|Type|Format|Description| +|---|---|---|---| +`value`|`integer`|`int32`|**Required**| +`unit`|[`DistanceUnit`](#schemadistanceunit)|-|**Required** Unit of distance. Supported values: `MILE`, `KM`| + +## HotelDetails + +|Name|Type|Format|Description| +|---|---|---|---| +`propertyRef`|[`HotelPropertyRef`](#schemahotelpropertyref)|-|**Required** Reference to hotel property using provider specific property code.| +`hotelDescriptiveInfo`|`object`|-|| +» `propertyDescription`|`string`|-|**Required**| +» `descriptiveInfos`|[`HotelDescriptiveInfo`](#schemahoteldescriptiveinfo)|-|**Required**| +`mediaItems`|[`HotelMedia`](#schemahotelmedia)|-|**Required** Hotel media items.| +`checkInTime`|`string`|`HH:MM`|Check-in time in HH:MM 24 hour format eg. 11:00.| +`checkOutTime`|`string`|`HH:MM`|Check-out time in HH:MM 24 hour format eg. 16:00.| + +## HotelDescriptiveInfo + +|Name|Type|Format| Description| +|---|---|---|---| +`otaCode`|`integer`|`int32`| **Required** Code based on [OTA Additional Detail Type (ADT)](./v4.supported-ota-codes.html#additional-details).| +`contents`|`string`|-| **Required**| +`startDate`|`string`|`date`|Start date for descriptive info, if applicable. Only for specific dates (e.g. for alerts or special events).| +`endDate`|`string`|`date`| End date for descriptive info, if applicable. Only for specific dates (e.g. for alerts or special events).| + +## ReservationCriteria + +|Name|Type|Format|Description| +|---|---|---|---| +`bookingUuid`|`string`|-|**Required** UUID that identifies the booking within the SAP Concur system.| +`hotelPropertyRef`|[`HotelPropertyRef`](#schemahotelpropertyref)|-|**Required** Reference to hotel property using provider specific property code.| +`requestorInfo`|[`RequestorInfo`](#schemarequestorinfo)|-|**Required** Information about POS, traveler, and user associated with this request.| +`ratePlanId`|`string`|-|**Required**| +`guests`|[`Guest`](#schemaguest)|-|**Required** Number of guests the reservation is for.| +`paymentModeIndicator`|[`PaymentModeIndicator`](#schemapaymentmodeindicator)|-|Supported values: `PERSONAL_CARD`, `CORPORATE_CARD`, `CONCUR_VIRTUAL_CARD`, `VENDOR_VIRTUAL_CARD`| +`guarantee`|`object`|-|| +» `cardType`|[`PaymentCardType`](#schemapaymentcardtype)|-|**Required** Supported values: `AMERICAN_AIRLINES`, `ALASKA_BARTER`, `AMEX`, `AWARD_CREDIT`, `CANADIAN`, `CARTE_BLANCHE`, `CHINA_UNION_PAY`, `CONFERMA`, `DELTA`, `DINERS_CLUB`, `DISCOVER`, `ENROUTE`, `EURO_CARD`, `JCB`, `MC`, `NORTHWEST`, `TWA`, `UATP`, `UNITED_TRAVEL`, `UNITED_CREDIT`, `VISA`| +» `cardNumber`|`string`|-|**Required**| +» `cardExpiryMonth`|`integer`|-|Expiration month for payment card.| +» `cardExpiryYear`|`integer`|-|4 digit expiration year for payment card.| +» `cvv`|`string`|-|Card verification value. The three or four-digit number on the credit card for security.| +» `cardHolderName`|`string`|-|Name of the payment card holder.| +» `cardHolderAddress`|[`Address`](#schemaaddress)|-|Address of the payment card holder.| +» `virtualCardDeploymentId`|`string`|-|ID for virtual card deployment| +`loyalty`|`object`|-|| +» `programCode`|`string`|-|**Required** Loyalty program code.| +» `accountId`|`string`|-|**Required** Loyalty program ID.| +`checkin`|`string`|`date`|**Required** Check in date as entered by traveler.| +`checkout`|`string`|`date`|**Required** Check out date as entered by traveler.| +`comments`|`string`|-|Comments for special requests.| +`customFields`|[`CustomField`](#schemacustomfield)|-|**Required** Vendor specific fields, if set up for vendor integration.| +`searchSessionToken`|[`SearchSessionToken`](#schemasearchsessiontoken)|-|Session token to be generated and provided by server on initial search call. Can be referenced back for future calls in the same session.| +`legalEntity`|[`LegalEntity`](#schemalegalentity)|-|Provides details about the legal entity associated with this booking, if available.| +`threeDSecure`|[`ThreeDSecure`](#schemathreedsecure)|-|3D Secure Strong Customer Authentication payment verification parameters.| +`tripUuid`|`string`|-|**Required** UUID that identifies the trip within the SAP Concur system.| +`gdsRecordLocator`|[`GDSRecordLocator`](#schemagdsrecordlocator)|-|SAP Concur GDS record locator pointing to a PNR to use for this booking, either as an active segment or a passive segment. This will be only populated if using [Single PNR Solution](./v4.single-pnr-solution.html)| + +## ReservationDetails + +|Name|Type|Format|Description| +|---|---|---|---| +`confirmationCodes`|[`ConfirmationCode`](#schemaconfirmationcode)|-|**Required**| +`status`|[`ReservationStatus`](#schemareservationstatus)|-|**Required** Supported values: `RESERVED`, `CANCELLED`,`PENDING_CONFIRMATION`| +`basicHotelProperty`|[`BasicHotelProperty`](#schemabasichotelproperty)|-|**Required**| +`roomRate`|[`RoomRateDetails`](#schemaroomratedetails)|-|**Required** If status is `CANCELLED`, optional| +`checkin`|`string`|`date`|**Required** Check in date as entered by traveler.| +`checkout`|`string`|`date`|**Required** Check out date as entered by traveler.| +`guests`|[`Guest`](#schemaguest)|-|**Required**| +`roomDescription`|`string`|-|Room description information.| +`comments`|`string`|-|Comments about special requests for the booking.| +`isModifiable`|`boolean`|`true` / `false`|Whether or not this reservation can be modified.| +`activeSegmentInConcurPNR`|`boolean`|`true` / `false`|Whether or not this reservation was added to Concur PNR as active segment (true) or not. Required if using [Single PNR Solution](./v4.single-pnr-solution.html)| + +## ConfirmationCode + +|Name|Type|Format|Description| +|---|---|---|---| +`codeType`|[`ConfirmationCodeType`](#schemaconfirmationcodetype)|-|**Required** Confirmation code type that maps to OTA codes for unique ID types. Supported values: `RESERVATION`, `SUPPLIER_CONFIRMATION`, `CANCELLATION`, `HOTEL_CONFIRMATION`, `CONCUR_GDS_REFERENCE`, `PASSIVE_CONFIRMATION`, `PIN`| +`code`|`string`|-|**Required**| + +For details on usage of confirmation codes, please refer to [Confirmation Codes](./v4.getting-started.html#confirmation-codes-) section of the documentation. + +## Guest + +|Name|Type|Format|Description| +|---|---|---|---| +`firstname`|`string`|-|**Required** | +`lastname`|`string`|-|**Required** | +`address`|[`Address`](#schemaaddress)|-|- +`companyName`|`string`|-|| +`contactInfo`|[`ContactInfo`](#schemacontactinfo)|-|| +`birthdate`|`string`|`date`|| + +## ReadCriteria + +|Name|Type|Format|Description| +|---|---|---|---| +`requestorInfo`|[`RequestorInfo`](#schemarequestorinfo)|-|**Required** Information about POS, traveler, and user associated with this request.| +`confirmationCodes`|[`ConfirmationCode`](#schemaconfirmationcode)|-|**Required** | + +## ModifyCriteria + +|Name|Type|Format|Description| +|---|---|---|---| +`reservationCriteria`|[`ReservationCriteria`](#schemareservationcriteria)|-|**Required** | +`confirmationCodes`|[`ConfirmationCode`](#schemaconfirmationcode)|-|**Required** | + +## CancelCriteria + +|Name|Type|Format|Description| +|---|---|---|---| +`requestorInfo`|[`RequestorInfo`](#schemarequestorinfo)|-|**Required** Information about POS, traveler, and user associated with this request.| +`confirmationCodes`|[`ConfirmationCode`](#schemaconfirmationcode)|-|**Required** | + +## CancelDetails + +|Name|Type|Format|Description| +|---|---|---|---| +`confirmationCodes`|[`ConfirmationCode`](#schemaconfirmationcode)|-|**Required** | +`cancellationRemarks`|`string`|-|| + +## ContactInfo + +|Name|Type|Format|Description| +|---|---|---|---| +`phoneNumbers`|`string`|-|**Required** | +`faxNumber`|`string`|-|| +`emails`|`string`|-|**Required** | + +## LeadRate + +The lowest nightly rate averaged over the stay. + +|Name|Type|Format|Description| +|---|---|---|---| +`avgNightlyRate`|[`Price`](#schemaprice)|-|**Required** | +`isTaxAndFeesInclusive`|`boolean`|`true` / `false`|Whether or not tax and fees are included.| + +## TotalPriceHotel + +Details about the total pricing associated with stay. + +|Name|Type|Format|Description| +|---|---|---|---| +`totalOverStay`|[`Price`](#schemaPrice)|-|**Required** | +`isTaxInclusive`|`boolean`|`true` / `false`|Whether or not taxes are included.| +`isFeesInclusive`|`boolean`|`true` / `false`|Whether or not fees are included.| + +## HotelAmenity + +Hotel amenity containing code as described in OTA code list [Hotel Amenity Code](./v4.supported-ota-codes.html#hotel-amenities). + +|Name|Type|Format|Description| +|---|---|---|---| +`amenityCode`|`integer`|`int32`|**Required** | +`cost`|[`Price`](#schemaprice)|-|Cost associated with the amenity.| + +## RoomAmenity + +Room amenity containing code as described in OTA code list [Room Amenity Type](./v4.supported-ota-codes.html#room-amenities). + +|Name|Type|Format|Description| +|---|---|---|---| +`amenityCode`|`integer`|`int32`|**Required** | +`cost`|[`Price`](#schemaprice)|-|Cost associated with the amenity.| + +## Error + +Error with OTA code and description. + +|Name|Type|Format|Description| +|---|---|---|---| +`otaCode`|`integer`|`int32`|Code based on [OTA Error Codes list](./v4.supported-error-codes.html).| +`message`|`string`|-|**Required** | + +## SearchResponse + +|Name|Type|Format|Description| +|---|---|---|---| +`hotelProperties`|[`HotelProperty`](#schemahotelproperty)|-|**Required** Hotel property object returned by hotel search.| +`searchSessionToken`|[`SearchSessionToken`](#schemasearchsessiontoken)|-|Session token to be generated and provided by server on initial search call that can be referenced back for future calls on the same session.| + +## RatesResponse + +|Name|Type|Format|Description| +|---|---|---|---| +`checkin`|`string`|`date`|**Required** Check in date as entered by traveler.| +`checkout`|`string`|`date`|**Required** Check out date as entered by traveler.| +`hotelRates`|[`HotelRates`](#schemahotelrates)|`date`|**Required** | + +## RateDetailsResponse + +|Name|Type|Format|Description| +|---|---|---|---| +`checkin`|`string`|`date`|**Required** Check in date as entered by traveler.| +`checkout`|`string`|`date`|**Required** Check out date as entered by traveler.| +`roomRates`|[`RoomRateDetails`](#schemaroomratedetails)|-|**Required** | + +## HotelDetailsResponse + +|Name|Type|Format|Description| +|---|---|---|---| +`hotelDetailsList`|[`HotelDetails`](#schemahoteldetails)|-|**Required** | + +## Bedding + +Details about bedding associated with the room. + +|Name|Type|Format| Description| +|---|---|---|---| +`quantity`|`integer`|-| **Required** Number of beds.| +`bedTypeCode`|`integer`|`int32`| Code based on [OTA Bed Type (BED) list](./v4.supported-ota-codes.html#bed-types).| + +## Taxes + +Representation of nightly tax amount associated with a rate along with optional breakdown. + +|Name|Type|Format|Description| +|---|---|---|---| +`amount`|`number`|-|**Required** Amount of the taxes.| +`taxBreakdown`|[`FeeTaxType`](#schemafeetaxtype)|-|Fee or tax associated with rate. Can be either included or excluded from total rate as marked with `inclusive` field.| + +## Fees + +Representation of nightly fees associated with a rate for given dates along with optional breakdown. + +|Name|Type|Format|Description| +|---|---|---|---| +`amount`|`number`|-|**Required** Amount of the fees.| +`taxBreakdown`|[`FeeTaxType`](#schemafeetaxtype)|-|Fee or tax associated with rate. Can be either included or excluded from total rate as marked with `inclusive` field.| + +## FeeTaxType + +|Name|Type|Format|Description| +|---|---|---|---| +`amount`|`number`|-|**Required** | +`fttCode`|`integer`|`int32`|**Required** Code based on [OTA's Fee Tax Type (FTT) list](https://www.opentraveldevelopersnetwork.com/code-list).| +`inclusive`|`boolean`|`true` / `false`|**Required** If `true`, this tax/fee is included in `totalAmountAfterTax` amount.| + +## SustainabilityAward + +Award or certification related to sustainability awarded to the hotel. If certification name is not known, it is possible to use `OTHER` as `label` and provide additional `name` attribute. + +|Name|Type|Format|Description| +|---|---|---|---| +`label`|[`SustainabilityProvider`](#schemasustainabilityprovider)|-|**Required** Name or label of the award/certification. Supported values: `GSTC`,`EARTH_CHECK`,`GREEN_GLOBE`,`GREEN_KEY`,`TRAVELIFE`,`GREEN_LEAF`,`LEED`,`GREEN_GROWTH_2050`,`GREEN_SEAL`,`HILTON_LIGHTSTAY`,`IHG_GREEN_ENGAGE`,`NORDIC_SWAN`,`ACTIVITY_GREEN`,`ADVENTURE_GREEN_ALASKA`,`ECO_CERTIFICATION_MALTA`,`GLOBAL_ECOSPHERE_RETREATS`,`GREAT_GREEN_DEAL`,`SEYCHELLES_SUSTAINABLE_TOURISM`,`GREEN_STAY`,`OTHER`| +`level`|`string`|-|Optional level of certification.| +`name` |`string`|-|Name of certification in case when not possible to map to currently supported labels (`OTHER` is used).| + + +## EmissionInfo + +The EmissionInfo provides a way to compare the environmental impact of different hotels. It can be used by travelers to make informed decisions about their hotel stays. + +|Name|Type|Format|Description| +|---|---|---|---| +`emissions`|`number`|-|Represents the total value of emissions produced by the hotel.| +`sustainabilityScore`|`integer`|-|Rates the hotel's overall sustainability efforts. It's on a scale of 0-100.| +`measure` |[`Measure`](#schemameasure)|-|Specifies the type of emissions that are measured. Supported values: `CO2E`, `CO2`| +`unitOfMeasure` |[`UnitOfMeasure`](#schemaunitofmeasure)|-|Specifies the units in which the emissions are measured. Supported values: `TONNES`, `KILOGRAMS`| + +## SafetyScore + +The Safety Score is composed of scores for various safety features of the hotel, such as nighttime safety, physical safes, etc. + +|Name|Type|Format|Description| +|---|---|---|---| +`score`|`number`|-|**Required** Total safety score.| +`detailsUrl`|`string`|-|URL with more details about the safety score.| +`categories`|`array` of [`SafetyScoreCategory`](#schemasafetyscorecategory)|-|**Required** List of safety score categories along with their corresponding score values.| + + +## SafetyScoreCategory + +Safety Score category is used to associate each type of safety score with its corresponding value. + +|Name|Type|Format|Description| +|---|---|---|---| +`score`|`number`|-|**Required** Safety score for a specific category.| +`type`|`string`|-|**Required** Identifies safety score category type. Supported values: `NIGHTTIME_SAFETY`,`PHYSICAL_SAFETY`,`BASIC_FREEDOMS`,`WOMENS_SAFETY`,`THEFT`,`HEALTH_AND_MEDICAL`,`LGBTQ_PLUS_SAFETY`.| + +## LegalEntity + +Provides details about the legal entity associated with this booking, if available. + +|Name|Type|Format|Description| +|---|---|---|---| +`name`|`string`|-|**Required** Name of the legal entity.| +`taxId`|`string`|-|**Required** Tax identity of the legal entity.| +`address`|[`Address`](#schemaaddress)|-|Address of legal entity.| + +## ThreeDSecure + +3D Secure strong customer authentication payment verification parameters. + +|Name|Type|Format|Description| +|---|---|---|---| +`avv`|`string`|-|**Required** For 3DS1, this is the `CAVV`. For 3DS2, this is the `AVV`.| +`cavvAlgorithm`|`string`|-|Identifies the algorithm used to generate the CAVV for 3DS1.| +`messageVersion`|`string`|-|**Required** 3D Secure version.| +`transactionId`|`string`|-|Unique transaction identifier assigned by the 3DS Server to identify a single transaction.| +`threeDSServerTransactionId`|`string`|-|For 3DS1, this identifies the `XID`. For 3DS2, this identifies the `dsTransactionId`.| +`eci`|`string`|-|**Required** Electronic Commerce Indicator.| +`exemptionCode`|`string`|-| Identifies SCA exemption type.| + + +## HotelChangeNotificationRQ + +|Name|Type|Format|Description| +|---|---|---|---| +`changeTypeCode`|[`HotelChangeTypeCode`](#schemaHotelChangeTypeCode)|-|**Required**| +`changeId`|`string`|-|**Required** Uniquely identifies this change.| +`changeTimestamp`|`string`|-|**Required** | +`changeSource`|[`HotelChangeSource`](#schemaHotelChangeSource)|-|| +`changeDescription`|`string`|-|Brief description associated with the change.| +`changeReasonCode`|[`HotelChangeReasonCode`](#schemaHotelChangeReasonCode)|-|| +`oldBooking`|[`HotelBooking`](#schemaHotelBooking)|-|Previous state of the booking that is modified (before modification).| +`updatedBookings`|`array` of [`HotelBooking`](#schemaHotelBooking)|-|New state of the bookings that are modified or added (after modification).| + +## HotelChangeNotificationRS + +|Name|Type|Format|Description| +|---|---|---|---| +`correlationId`|`string`|-|Unique SAP Concur system correlation ID for tracing purposes.| +`impactedBookings`|`array` of [`HotelBookingRef`](#schemaHotelBookingRef)|-|List of booking references that are impacted by this change (old and new). Note that this will allow suppliers to get SAP Concur system booking ids of any newly added booking and match to their confirmation number.| + +## HotelChangeTypeCode + +|Name|Type|Format|Description| +|---|---|---|---| +|`HotelChangeTypeCode`|`string`|-|Code describing type of change. Supported values:`UPDATE``ADD`, `UPDATE`, `CANCEL`, `REPLACE`| + +## HotelChangeSource + +|Name|Type|Format|Description| +|---|---|---|---| +|`HotelChangeSource`|`string`|-|Original source of this change. Supported values: `TMC`, `CHSSupplier`, `GDS`, `HOTEL`| + +## HotelChangeReasonCode + +|Name|Type|Format|Description| +|---|---|---|---| +|`HotelChangeReasonCode`|`string`|-|Code specifying reason for the change. Supported values:`AGENT_UPDATED`,`USER_REQUESTED`, `AGENT_UPDATED`, `HOTEL_UPDATED`, `SUPPLIER_UPDATED`| + +## HotelBooking + +|Name|Type|Format|Description| +|---|---|---|---| +`bookingId`|`string`|-|SAP Concur system id of an existing booking that needs to be updated, as obtained during a reservation request using the `bookingUuid`, see [`ReservationCriteria`](#schemareservationcriteria).(Required for `oldBookings`)| +`confirmationCodes`|`array` of [`ConfirmationCode`](#schemaConfirmationCode)|-|**Required**| +`status`|[`ReservationStatus`](#schemaReservationStatus)|-|**Required**| +`basicHotelProperty`|[`BasicHotelProperty`](#schemaBasicHotelProperty)|-|| +`roomRate`|[`RoomRateDetails`](#schemaRoomRateDetails)|-|| +`checkin`|`string`|-|| +`checkout`|`string`|-|| +`guests`|`array` of [`Guest`](#schemaGuest)|-|| +`roomDescription`|`array` of `string`|-|| +`comments`|`array` of `string`|-|Comments about special requests for this booking.| +`isModifiable`|`boolean`|`true` / `false`|**Required** Whether or not this reservation can be modified. + +## HotelBookingRef + +|Name|Type|Format|Description| +|---|---|---|---| +`bookingId`|`string`|-|**Required** SAP Concur system id of booking that is impacted with this change (existing or new).| +`confirmationCodes`|`array` of [`ConfirmationCode`](#schemaConfirmationCode)|-|**Required**| + +## BasicHotelProperty + +|Name|Type|Format|Description| +|---|---|---|---| +`propertyCode`|[`PropertyCode`](#schemaPropertyCode)|-|**Required**| +`chainCode`|`string`|-|Example:`HH`| +`hotelName`|`string`|-|Example: JW Marriott Parq| +`contactInfo`|[`ContactInfo`](#schemaContactInfo)|-|**Required**| +`position`|[`Geolocation`](#schemaGeolocation)|-|| +`address`|[`Address`](#schemaAddress)|-|| +`cityCode`|`string`|-|**Required** IATA 3 char city code for this property (required for adding passive segments).| + +## Geolocation + +|Name|Type|Format|Description| +|---|---|---|---| +`latitude`|`number`|-|**Required**| +`longitude`|`number`|-|**Required**| + +## Address + +|Name|Type|Format|Description| +|---|---|---|---| +`addressLines`|`array`|-|**Required**| +`city`|`string`|-|**Required** City name.| +`state`|`string`|-|Two-character state code.| +`stateName`|`string`|-|Name or code of the State/Province/Administrative region.| +`countryCode`|`string`|-|**Required** Two-character ISO code (ISO ALPHA-2) for country.| +`postalCode`|`string`|-|| + +## TotalPrice + +|Name|Type|Format|Description| +|---|---|---|---| +`isTotalBeforeTaxDisplayEligible`|`boolean`|`true` / `false`|Controls what value is shown on property details page for rates. Displays `totalBeforeTax` if set to true otherwise display `totalAftertax`.| +`totalBeforeTax`|`number`|-|**Required**| +`taxes`|`number`|-|| +`fees`|`number`|-|| +`totalAfterTax`|`number`|-|**Required**| +`currencyCode`|[`CurrencyCode`](#schemacurrencycode)|`ISO 4217`|**Required**| + +## Price + +|Name|Type|Format|Description| +|---|---|---|---| +`amount`|`number`|-|**Required**| +`currencyCode`|[`CurrencyCode`](#schemacurrencycode)|`ISO 4217`|**Required** Currency code.| + +## CancelPenalties + +|Name|Type|Format|Description| +|---|---|---|---| +`penaltyDescription`|`string`|-|Penalty information applicable to all the penalties.| +`penalties`|`array`|-|**Required** Cancel penalties associated with the rate.| + +## RoomRateDetails + +|Name|Type|Format|Description| +|---|---|---|---| +`rateDescription`|`array`|-|| +`rateCategory`|[`RateCategory`](#schemaratecategory)|-|| +`rateDetailsCallRequired`|`boolean`|`true` / `false`|If `true`, this rate requires a call to RateDetails before being booked.| +`rateChangesOverStay`|`boolean`|`true` / `false`|| +`roomId`|`string`|-|| +`ratePlanId`|`string`|-|| +`guarantee`|[`Guarantee`](#schemaguarantee)|-|**Required**| +`prepayRequired`|`boolean`|`true` / `false`|Whether or not prepayment is required for booking this rate.| +`refundable`|`boolean`|`true` / `false`|Is this rate refundable or not (based on all cancel penalties).| +`totalPrice`|[`TotalPrice`](#schematotalprice)|-|**Required**| +`nightlyPrices`|`array`|-|**Required**| +`cancelPenalties`|[`CancelPenalties`](#schemacancelpenalties)|-|| + +## NightlyPrice + +|Name|Type|Format|Description| +|---|---|---|---| +`basePrice`|`number`|-|**Required**| +`taxes`|[`Taxes`](#schemataxes)|-|| +`fees`|[`Fees`](#schemafees)|-|| +`totalPrice`|`number`|-|**Required**| +`startDate`|`string`|`date`|| +`endDate`|`string`|`date`|| +`currencyCode`|[`CurrencyCode`](#schemacurrencycode)|`ISO 4217`|**Required**| + +## CurrencyCode + +|Name|Type|Format|Description| +|---|---|---|---| +||`string`|-|ISO 4217 currency code.| + +## CancelPenalty + +|Name|Type|Format|Description| +|---|---|---|---| +`cancelDeadline`|`string`|-|**Required** 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`|[`RefundableStatus`](#schemarefundablestatus)|-|**Required**| +`amountPercent`|[`AmountPercent`](#schemaamountpercent)|-|| + +## RefundableStatus + +|Name|Type|Format|Description| +|---|---|---|---| +`RefundableStatus`|`string`|-|Supported values: `FULLY_REFUNDABLE`, `PARTIALLY_REFUNDABLE`, `NON_REFUNDABLE`| + +## AmountPercent + +|Name|Type|Format|Description| +|---|---|---|---| +`taxInclusive`|`boolean`|`true` / `false`|If `true`, all taxes are included in the returned rate.| +`feesInclusive`|`boolean`|`true` / `false`|If `true`, all fees are included in the returned rate.| +`numberOfNights`|`integer`|-|The number of nights that are to be spent in the property.| +`basisType`|[`AmountPercentBasisType`](#schemaamountpercentbasistype)|-|| +`applyAs`|[`AmountPercentApplyAs`](#schemaamountpercentapplyas)|-|| +`percent`|`number`|-|The percentage used to calculate the amount of the cancel fee.| +`amount`|[`Price`](#schemaprice)|-|| + +## AmountPercentBasisType + +|Name|Type|Format|Description| +|---|---|---|---| +`AmountPercentBasisType`|`string`|-|Supported values: `FULL_STAY`, `NIGHTS`, `FIRST_LAST`| + +## AmountPercentApplyAs + +|Name|Type|Format|Description| +|---|---|---|---| +`AmountPercentApplyAs`|`string`|-|Supported values: `FIRST_NIGHT_DEPOSIT`, `LAST_NIGHT_DEPOSIT`, `FIRST_AND_LAST_NIGHT_DEPOSIT`, `FIRST_NIGHT_PAYMENT`, `LAST_NIGHT_PAYMENT`, `FIRST_AND_LAST_NIGHT_PAYMENT`| + +## RateCategory + +|Name|Type|Format|Description| +|---|---|---|---| +`RateCategory`|`string`|-| Supported values: `AAA`, `CONCIERGE`, `CONVENTION`, `CORPORATE_DISCOUNT`, `GOVERNMENT`, `MILITARY`, `SENIOR`, `TRAVEL_INDUSTRY`, `NEGOTIATED`, `PROMOTIONAL`, `CONSORTIA`, `CONTRACT`, `FEDROOM`| + +## GuaranteeType + +|Name|Type|Format|Description| +|---|---|---|---| +`GuaranteeType`|`string`|-|Supported values: `DEPOSIT_REQUIRED`, `GUARANTEE_REQUIRED`, `NONE`|-| + +## AcceptedPayments + +|Name|Type|Format|Description| +|---|---|---|---| +`AcceptedPayments`|`array`|-|[`PaymentCardType`](#schemapaymentcardtype)| + +## PaymentCardType + +|Name|Type|Format|Description| +|---|---|---|---| +`PaymentCardType`|`string`|-|Supported values: `AMERICAN_AIRLINES`, `ALASKA_BARTER`, `AMEX`, `AWARD_CREDIT`, `CANADIAN`, `CARTE_BLANCHE`, `CHINA_UNION_PAY`, `CONFERMA`, `DELTA`, `DINERS_CLUB`, `DISCOVER`, `ENROUTE`, `EURO_CARD`, `JCB`, `MC`, `NORTHWEST`, `TWA`, `UATP`, `UNITED_TRAVEL`, `UNITED_CREDIT`, `VENDOR_PROVIDED`, `VISA`| + +## PropertyCode + +|Name|Type|Format|Description| +|---|---|---|---| +`PropertyCode`|`string`|-|Example: 'HH498949'| + +## ReservationStatus + +|Name|Type|Format|Description| +|---|---|---|---| +`ReservationStatus`|`string`|-|Supported values" `RESERVED`, `CANCELLED`, `PENDING_CONFIRMATION`| + +## ConfirmationCodeType + +|Name|Type|Format|Description| +|---|---|---|---| +`ConfirmationCodeType`|`string`|-|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. Supported values: `RESERVATION`, `SUPPLIER_CONFIRMATION`, `CANCELLATION`, `HOTEL_CONFIRMATION`, `CONCUR_GDS_REFERENCE`, `PASSIVE_CONFIRMATION`| + +## GDSRecordLocator + +|Name|Type|Format|Description| +|---|---|---|---| +`gdsName`|`string`|-|**Required** Name of the GDS (Global Distribution System) to be used for this booking (active or passive segment). Supported values: `SABRE`, `AMADEUS`, `TRAVELPORT`| +`pcc`|`string`|-|**Required** Pseudo City Code or Office ID (OID) for the GDS account to be used for this booking (active or passive segment).| +`recordLocator`|`string`|-|**Required** Record locator of the PNR where this booking should be created (active or passvie)| +