{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"8f65fad4-5968-4824-bbba-afb22a6782ae","name":"THN Hotel API V3.0","description":"The Hotel Network is Australia's leading accommodation management company offering great rates at 6600+ properties in every corner of the country backed by outstanding customer service and technology.\n\nThe Hotel Network (THN) Channel XML protocol is a way of integrating with The Hotel Network’s hotel & booking data using XML requests and responses between THN and Channel Manager partners. These requests and responses are designed to meet the Open Travel Alliance (OTA) V2 standards for the API calls detailed here. This version (THN Hotel API V3.0) includes the latest updates to the standard covering many new features for setting rooms, rates and availability as well as updates for hotel reservations, modifications and cancellations.\n\nThis document covers xml channel requests and response for integrating with The Hotel Network’s hotel data.\n\nThe guide has been developed from our implementation with channel partners SiteMinder/SiteConnect, and reflects the hotel booking (supply side) of the API specification.\n\n# EchoTokens\n\nEchoTokens are essential for all requests (namely OTA_HotelResNotifRQ) being made over the THN. EchoTokens ensure that each request can be uniquely identified for troubleshooting purposes in both testing and production environments.\n\nAll requests you receive from THN will contain an EchoToken, and your response must mirror the EchoToken as received in the request. Similarly, all requests you send THN should include the EchoToken which will be reflected in our response.\n\nNOTE: Please ensure that you implement EchoTokens that are as 'unique' as possible to ensure that log trawling for troubleshooting purposes on either side is quick and efficient. Implementing GUIDs are recommended and more information about GUID can be found - [http://en.wikipedia.org/wiki/Globally_unique_identifier](http://en.wikipedia.org/wiki/Globally_unique_identifier).\n\n# Linespacing\n\nAll Soap XML requests made to THN should be contained on one line with no linespacing. We ask this to assist our support teams in extracting messages from our logs.\n\n# Content-Type\n\nThe ‘Content-Type’ for all Soap XML requests made to THN must be 'text/xml; charset=utf-8'. Any other ‘Content-Type’ will not be accepted.\n\n# SSL/TLS\n\nTHN supports TLSv1.1 and above.\n\nTHN does not support self-signed SSL certificates.\n\n# Error Handling\n\nIt is expected that your OTA has a robust error handling process in place. This includes a queuing mechanism and a robust retry strategy. Please refer to the Error Handling section of the THN documentation for more information.\n\n# Mandatory Functionality\n\n> 1.  All THN connections MUST be a 2-way XML connection.\n> 2.  THN will PUSH receive, rates and restrictions from the Channel Manager. The Channel Manager will RECEIVE reservations from THN.\n> 3.  The following functionality is mandatory\n>     \n>     > 1.  Availability\n>     > 2.  Stop Sell\n>     > 3.  Reservation Delivery\n>     \n\n# THN API\n\n## Room Retrieval API\n\n> 1.  THN uses OTA_HotelAvailRQ to PUSH a list of room rates available on the Channel Manager.\n> 2.  Only “active” room rates are returned in the OTA_HotelAvailRS.\n> 3.  Room and rate codes returned by the Retrieve Rooms API should avoid using any special characters, such as ‘@’ ‘&’ ‘<’ ‘>’ etc. where possible.\n> 4.  Rooms rates returned by the Retrieve Rooms API should contain a clear and concise RoomDescription (and RatePlanDescription when using both room and rate codes) to ensure hoteliers can quickly and easily map/link their room rates to the THN booking channel.\n\n## Inventory Push API\n\n> 1.  THN uses OTA_HotelAvailNotifRQ to RECEIVE availability and restrictions and OTA_HotelRateAmountNotifRQ to RECEIVE rates.\n> 2.  THN will receive the OTA_HotelAvailNotifRQ message first. On response the Channel Manager will send the OTA_HotelRateAmountNotifRQ message.\n> 3.  THN will reveive updates on a two (2) minute cycle.\n> 4.  THN will always respond with either a “success” or “error” response. Under no circumstances is a request ignored and a response not sent.\n> 5.  The Channel Manager should always send both the OTA_HotelAvailNotifRQ and OTA_HotelRateAmountNotifRQ for the affected rooms and dates.\n\n## Reservation API\n\n> 1.  THN follows the OTA reservation specification and allows a lot of information to be sent through regarding reservations. Not all of that information is mandatory for THN to be able to process the reservation. Please refer to the Reservation API documentation for more information.\n> 2.  The state of the reservation is determined by the OTA_HotelResNotifRQ ResStatus attribute for which values Commit, Modify and Cancel are allowed.\n> 3.  THN only allows one (1) hotel code per reservation.\n> 4.  THN only allows one (1) reservation per request sent.\n> 5.  THN allows for multiple rooms and rate plans in a single reservation request, as long as they are part of the same reservation.\n\n## Modifications\n\n> 1.  Modifications will be identified by the ‘Modify’ ResStatus.\n> 2.  The modification must contain the full reservation data, as it stands at the modification has been made.\n> 3.  The LastModifyDateTime should reflect the time the reservation was modified within the Channel Manager system\n\n## Cancellations\n\n> 1.  Cancellations will be identified by the ‘Cancel’ ResStatus.\n> 2.  The cancellation must contain the full reservation data, as it stands at the time of the cancellation.\n> 3.  The LastModifyDateTime should reflect the time the reservation was cancelled within the Channel Manager system\n> 4.  Availability will not automatically be made available within when a cancellation message is received. We will wait for a subsequent availability update.\n\n## Certification\n\nTHN certification will be undertaken once development of all functionality has been completed. It is important to note that testing (including negative testing) of all developed THN API functionality should be completed prior to certification. The certification process is conducted by the Channel Manager, using a certification platform that THN will provide. The certification process must be completed using information presented on the Channel Manager system, not the information presented within the Channel Manager THN test account. There is no restriction to the amount of times a Channel Manager can attempt certification.\n\nOnce certification is completed, the results will be reviewed by THN's API Development team. THN and the API Development team reserve the right to delay deployment to THN production environments until they are satisfied with the results.\n\n## Test Environment Access\n\nTHN will provide a test account for use during development. Test account access is only guaranteed during active development and should not be used for ongoing testing or for demonstration purposes. Upon completion of THN certification, the test account will be disabled.\n\n# Getting Started\n\nEach channel connecting to THN will be given an interactive test account to get a basic connection up and running. The first steps in the THN process are for the connecting site to fill out our technical information form and then agree on a room list endpoint to connect to for Retrieve Rooms API, this will ensure our Channel Manager can access rooms and rate plans on the THN site for testing purposes. This step must be completed before any further progress is made with the THN integration, after this step we can create a test account for you to access THN. The required information is located in the Retrieve Rooms API.\n\nWhat we need to start testing is your web service details: URL with username and password credentials as well as the dummy HotelCode for us to receive Room Retrieval, Availability and Rates requests. Once we have this we can do some testing on the Room Retrieval and will then release the URI and credentials to our test environment.\n\n## Test environment\n\n### Test Account\n\nThe connecting channel will be given username, password and request id to be able to connect to the THN reservation service.  \nThe connecting channel will need to supply THN with a username, password and URL for updates to be sent from THN. The connecting channel will also be supplied with a hotel code for the test hotel.\n\n# Technical Architecture\n\n<img src=\"https://stage.hotelnetwork.com.au/__data/xml_testing/architectural-diagram.png\" alt=\"\">\n\n# Developer Guide\n\n## Supported Functions\n\n\\*   OTA_HotelAvailNotifRQ - Used to update availability, stopSell, minStay, ClosedToArrival and ClosedToDeparture.\n\\*   OTA_HotelRateAmountNotifRQ - Used to update rate and rate inclusions.\n\\*   OTA_HotelResNotifRQ - Used to send reservations, modifications and cancellations.\n\\*   OTA_HotelAvailRQ - Used to retrieve a list of active rooms and rates for a hotel.\n    \n\n# SOAP Message Structure\n\n## Overview\n\nAll messages too and from THN must be soap messages. They include a SOAP Security header for authentication purposes and contain the SOAP Body which contains the OTA message. The following example is a complete SOAP message (this one shows an OTA_HotelAvailNotifRQ message payload)\n\n## Soap Security Header\n\nThe Security Header structure conveys authentication information. It is mandatory and both the /wsse:UsernameToken/wsse:Username and /wsse:UsernameToken/wsse:Password elements are mandatory. The only acceptable value for the Password/@Type attribute is e.g \"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">SECRET\", indicating a plain text password. Plain text password are acceptable as all communication is done over encrypted HTTP.\n\n## XML Sample\n\n```\n\n   \n    \n      \n        USERNAME\n        SECRET\n      \n    \n  \n  \n    \n      \n        \n          \n        \n      \n    \n  \n\n\n```\n\n# Retreive Rooms API - OTA_HotelAvailRQ/RS\n\nTHN will uses OTA_HotelAvailRQ message to send a list of active rooms for a hotel. The channel Channel Manager can then map the room data with hotel room data on their own system.\n\nIt's important that consistent room names and rates are used to avoid confusion when mapping THN rooms and rates to the channel Channel Manager.\n\n## Retrieve Room and Rate Codes\n\nThe channel Channel Manager will send a OTA_HotelAvailRQ to retrieve a list of available rooms and rates. The connected channel should return a list of RoomStays with all active room and rate combinations for the hotel.\n\n# OTA_HotelAvailRQ\n\n```\n\n  \n    \n      \n        \n          \n        \n      \n    \n  \n\n\n```\n\n## OTA_HotelAvailRQ - Specification\n\n| Element | Number | Description |\n| --- | --- | --- |\n| OTA_HotelAvailRQ | 1 | Root element |\n| @EchoToken | 1 | Globally unique identifier for the request, this will be reflected as an EchoToken in the response. |\n| @Version | 1 | Current Version 1 |\n| @TimeStamp | 1 | Time of the transaction in xml schema dateTime format |\n| OTA_HotelAvailRQ / AvailRequestSegments / AvailRequestSegment | 1..n | A Channel request will only contain one AvailRequestSegment requesting room and rates for one single hotel at a time. |\n| @AvailReqType | 1 | Always “Room” |\n| AvailRequestSegment / HotelSearchCriteria / Criterion / HotelRef | 1 | Identifies the hotel for which information is being requested. |\n| @HotelCode | 1 | The hotel code for which the information is being requested. |\n\n# OTA_HotelAvailRS\n\n```\n\n  \n  \n    \n      \n        \n          \n        \n      \n      \n        \n          \n        \n      \n    \n    \n      \n        \n          \n        \n      \n      \n        \n          \n        \n      \n    \n    \n      \n        \n          \n        \n      \n      \n        \n          \n        \n      \n    \n    \n      \n        \n          \n        \n      \n      \n        \n          \n        \n      \n    \n  \n\n\n```\n\n#### Response with additional room description\n\n```\n\n  \n  \n    \n      \n        \n          \n            Bedding is Queen sized bed. Continental breakfast for each guest.\n          \n        \n      \n      \n        \n          \n            Best available rate including breakfast.\n          \n        \n      \n    \n    \n      \n        \n          \n            Bedding is Queen sized bed. Continental breakfast for each guest.\n          \n        \n      \n      \n        \n          \n            Special offer for 3 nights stay, pay only for 2!  Rates include breakfast.\n          \n        \n      \n    \n    \n      \n        \n          \n            Bedding is 1 x King sized bed and 1 x Single bed. Continental breakfast for each guest.\n          \n        \n      \n      \n        \n          \n            Best available rate including breakfast.\n          \n        \n      \n    \n    \n      \n        \n          \n            Bedding is 2 x Queen sized bed. Continental breakfast for each guest.\n          \n        \n      \n      \n        \n          \n            Best available rate including breakfast.\n          \n        \n      \n    \n  \n\n\n```\n\n#### Failure Response\n\n```\n\n  \n    Cannot find hotelier with code ABC\n  \n\n\n```\n\n## OTA_HotelAvailRS - Specification\n\n| Element | Number | Description |\n| --- | --- | --- |\n| OTA_HotelAvailRS | 1 | Root element |\n| @TimeStamp | 1 | Time of the transaction in xml schema dateTime format |\n| @Version | 1 | Always 1.0 |\n| @EchoToken | 1 | Globally unique identifier for the request, this should be |\n| OTA_HotelAvailRS / Success | 0..1 | Should only be present if it was a successful response. The Errors node should not be present if the Success node is present. |\n| OTA_HotelAvailRS / Errors | 0..1 Contains a list of errors in the event of a failed request |  |\n| Errors / Error | 1..n | Mandatory if Errors present. |\n| @Type | 1 | Mandatory if Error present. Any type from the OTA code table for 'Error Warning Type (EWT)' can be used. In particular, the following types are recommended. 1: Unknown 4: Authentication error (If username and password are not authenticated) 6: Authorization error (If authenticated username is not authorized to alter hotel data) 12: Processing exception |\n| @Code | 0..1 | Any code from the OTA code table for 'Error Codes (ERR)' can be used. In particular, the following codes are important as they will inform the channel of a room or hotel mapping error 392: Invalid hotel code |\n| OTA_HotelAvailRS / RoomStays | 0..1 | A collection of RoomStay elements |\n| RoomStays / RoomStay | 1..n | Room stay details |\n| RoomStay / RoomTypes / RoomType | 1 | Each RoomStay element should contain 1 RoomType |\n| @RoomTypeCode | 1 | The code identifying this room |\n| RoomType / RoomDescription | 1 |  |\n| @Name | 1 | The room name. This name should be a unique description of the room. E.g. \"Deluxe Double Room 1 King size bed\". The hotel will use this value to identify the room. |\n| RoomDescription / Text | 0..1 | Additional text to describe the room |\n| RoomStay / RatePlans / RatePlan | 1 | Each RoomStay element should contain 1 RatePlan linked to the RoomType |\n| @RatePlanCode | 1 | The code identifying this rate |\n| RatePlan / RatePlanDescription | 1 |  |\n| @Name | 1 | The name associated with this rate. This name should uniquely describe the rate plan. E.g \"Best Available Rate\" |\n| RatePlanDescription / Text | 0..1 | Additional text to describe the rate plan |\n\n# Retrieve Rooms API - Restrict Availability and or Rate Updates\n\nThe THN can return a list of RoomStays with additional details for each room and rate plan combination. These additional functionality flags should disable their respective update types being sent from the Channel Manager to THN.\n\nThese flags are only available for OTA_HotelAvailRS messages that make use of our @RatePlans node. All additional nodes are optional.\n\nPlease see the below XML sample and specification:\n\n```\n\n  \n  \n    \n      \n        \n          \n            Bedding is Queen sized bed. Continental breakfast for each guest.\n          \n        \n      \n      \n        \n          \n            Special offer for 3 nights stay, pay only for 2!  Rates include breakfast.\n          \n          \n               \n               \n          \n        \n      \n    \n  \n\n\n```\n\n| Element | Number | Description |\n| --- | --- | --- |\n| AdditionalDetails | 0..1 | A collection of AdditionalDetail. Should only be included if there are additionalDetails that are to be included in the rate plan. |\n| AdditionalDetails / AdditionalDetail | 1..n | Mandatory if AdditionalDetails is used. |\n| @Code | 1 | One code per AdditionalDetail, the following codes are supported: NO_RATES NO_AVAILABILITY |\n\n# Retrieve Rooms API - Reservation Only Room Rates\n\nThe Channel Manager should allow for Room Rates to be mapped that are only for the purpose of reservation delivery into the Channel Manager. e.g. where availability quotas are used for certain clients. THN may use RoomStay / RatePlan / AdditionalDetails to send the below to the Channel Manager. Sending the below will instruct the Channel Manager to not send ARI updates, and the mapping of the Room Rate in question, will exist purely to allow for reservation delivery.\n\n#### Creating a Reservation Delivery Only 'Room Rate'\n\n```\n\n    \n        \n            \n                \n                    Bedding is Queen sized bed. Continental breakfast for each guest.\n                \n            \n        \n        \n            \n                \n                    Special offer for 3 nights stay, pay only for 2!  Rates include breakfast.\n                \n                \n                    \n                \n            \n        \n    \n\n\n```\n\n| Element | Number | Description |\n| --- | --- | --- |\n| RoomStays / RoomStay / RatePlans / RatePlan / AdditionalDetails | 0..1 | A collection of AdditionalDetail. Should only be included if there are additionalDetails that are to be included in the rate plan. |\n| AdditionalDetails / AdditionalDetail |  |  |\n| 1..n | Mandatory if AdditionalDetails is used. |  |\n| @Code | 1 | For 'Reservation Only Rooms' only NO_UPDATES should be used in the AdditionalDetail. |\n\n# Inventory Push API - OTA_HotelAvailNotifRQ/RS\n\nTHN uses OTA_HotelAvailNotifRQ to receive availability and restrictions and OTA_HotelRateAmountNotifRQ to receive rates.\n\n## Availability and Restrictions\n\nTHN will receive through updates for availability and restrictions using the OTA_HotelAvailNotifRQ and respond with the OTA_HotelAvailNotifRS as a receipt of success or failure to process the request.\n\n# OTA_HotelAvailNotifRQ\n\nAn OTA_HotelAvailNotifRQ message will be received from the Channel Manager after the value changes in the Channel Manager. The message can be used to update the availability and restrictions for one room type for a single hotel. Specifically:\n\n> 1.  Room availability\n> 2.  Stop sell or 'close out' of a room\n> 3.  Closed to arrival\n> 4.  Closed to departure\n> 5.  Minimum stays\n\nEach OTA_HotelAvailNotifRQ message contains a single AvailStatusMessages element which indicates the hotel to update using the AvailStatusMessages/@HotelCode attribute. The AvailStatusMessages/AvailStatusMessage elements will contain the updates to process over a date range. There can be several AvailStatusMessage updates per request, however each request will be limited to one hotel and one room.  \nThe basic structure of the message is as follows:\n\n```\n\n  \n    \n      \n         Content omitted \n    \n    \n      \n         Content omitted \n    \n    \n      \n         Content omitted \n    \n   \n\n\n```\n\n#### StatusApplicationControl\n\nThis element must appear once in each AvailStatusMessage element. The StatusApplicationControl element is used to specify the room type, rate code and dates for which the update applies. The dates affected by the update are controlled by the mandatory @Start and @End attributes.\n\n#### Setting Availability\n\nThe Channel Manager will send through availability updates using the AvailStatusMessage/@BookingLimit attribute. The value of @BookingLimit will be a positive integer value.\n\n#### Setting Availability\n\n```\n\n  \n    \n      \n      \n    \n  \n\n\n```\n\n#### Setting Stop Sells, Closed to Arrival and Closed to Departure\n\nStop sell, closed to arrival and closed to departure updates will be sent through using the RestrictionStatus node. Below is a set of scenarios where the channel will send an update through.\n\nNote that stop sells, closed to arrival and closed to departure can be sent separately by the channel so their status should be assumed as separate. For example a message which has a 'Open' status without a 'Restriction=\"Arrival\"' should not change the state of the closed to arrival.\n\n| Restriction Type | How it will be sent |\n| --- | --- |\n| Room is stop sold |  |\n| Room is opened for sale |  |\n| Room is set as closed to arrival |  |\n| Room is set as open to arrival |  |\n| Room is set as closed to departure |  |\n| Room is set as open to departure |  |\n\n#### Set StopSell\n\n```\n\n  \n    \n      \n      \n    \n  \n\n\n```\n\n#### Set Closed to Arrival\n\n```\n\n  \n    \n      \n      \n    \n  \n\n\n```\n\n#### Set Closed to Departure\n\n```\n\n  \n    \n      \n      \n    \n  \n\n\n```\n\n### Setting Minimum Stay\n\nThe Channel Manager will send through minimum stay updates using the LengthsOfStay element. This element contains a single LengthOfStay element with the attributes @MinMaxMessageType and @Time. MinMaxMessageType has a fixed value of \"SetMinLOS\" and the @Time it the minimum stay period in days.\n\n#### Set MinLOS 2\n\n```\n\n  \n    \n      \n      \n        \n      \n    \n  \n\n\n```\n\n### Setting Maximum Stay\n\nMaximum stay updates will be delivered in the same LengthsOfStay element as minimum stay. If maximum stay is removed, the @Time element will be missing where @MinMaxMessageType is \"SetMaxLOS\".\n\n#### Set MaxLOS\n\n```\n\n  \n  \n    \n  \n\n\n```\n\n#### No MaxLOS\n\n```\n\n  \n  \n    \n  \n\n\n```\n\n### Update all values example request\n\nBelow is a sample request for a message that updates availability, stop sell, MinLOS, closed to arrival and closed to departure.\n\n#### Set availability, stopSell, MinLOS and Closed to Arrival/Departure\n\n```\n\n  \n    \n      \n      \n    \n    \n      \n      \n        \n        \n      \n    \n    \n      \n      \n    \n    \n      \n      \n    \n  \n\n\n```\n\n## OTA_HotelAvailNotifRQ - Specification\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| OTA_HotelAvailNotifRQ | 1 |  | Root node |\n| @TimeStamp | 1 | DateTime | Time of the transaction |\n| @Version | 1 | Decimal | Current version is 1.0 |\n| @EchoToken | 1 | String | Globally unique identifier for the request, this should be reflected as an EchoToken in the response. |\n| OTA_HotelAvailNotifRQ / AvailStatusMessages | 1 |  | Contains the availability messages |\n| @HotelCode | 1 | String | The code for the property whose availability is being updated |\n| AvailStatusMessages / AvailStatusMessage | 1..n |  | Contains the availability messages. There can be of these nodes per request |\n| @BookingLimit | 0..1 | Integer | Sets the number of rooms available for sale. |\n| AvailStatusMessage / StatusApplicationControl | 1 |  | Contains date and room identification information |\n| @Start | 1 | Date | The start date for which the availability update is being set. This date is inclusive. |\n| @End | 1 | Date | The end date for which the availability update is being set. This date is inclusive. |\n| @RatePlanCode | 0..1 | String | Identifies the rate. The RatePlanCode to be used in conjunction with the InvTypeCode to identify the room to update. |\n| @InvTypeCode | 1 | String | Identifies the room. The InvTypeCode to be used in conjunction with the RatePlanCode to identify the room to update. |\n| AvailStatusMessage / LengthsOfStay / LengthOfStay | 0..2 |  | Optional, used for minimum and maximum length of stay |\n| @MinMaxMessageType | 1 | String | Mandatory if LengthsOfStay present. Can be one of the following **SetMinLOS**: Sets the minimum length of stay **SetMaxLOS**: Sets the maximum length of stay |\n| @Time | 0..1 | Integer | Mandatory if @MinMaxMessageType is 'SetMinLOS': Sets the minimum number of days required for a stay. If @MinMaxMessageType is 'SetMaxLOS': Sets the maximum number of days bookable. If no MaxLOS value is set, no @Time will be specified. |\n| AvailStatusMessage / RestrictionStatus | 0..1 |  | Optional, used to restrict the room for stop sells, closed to arrivals and closed to departure |\n| @Status | 1 | String | Mandatory if RestrictionStatus present. Can be one of two values **Open**: Should open a room for sale **Close**: Should close or 'stop sell' a room for sale |\n| @Restriction | 1 | String | Can be one of two values. **Arrival**: Sets the closed to arrival value. **Departure**: Sets the closed to departure value. There should always be a value to avoid ambiguity, but if there is no restriction type, the update will be assumed to be a full close for the room date. |\n\n# OTA_HotelAvailNotifRS\n\nThe OTA_HotelAvailNotifRS should be returned for any request pushed by the Channel Manager. It is returned in a SOAP envelope, however the SOAP Header can be empty. The EchoToken received in the request should be mirrored back in the response\n\n## Success Response XML\n\n#### Success Response\n\n```\n\n  \n\nError Response XML - For more information on error handling, please refer to our Error Handling page\nFailure Response\n\n  \n    Cannot find hotelier with code ABC\n  \n\n\n```\n\n## OTA_HotelAvailNotifRS - Specification\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| OTA_HotelAvailNotifRS | 1 |  | Root node |\n| @EchoToken | 1 | String | Return the EchoToken from the request message. |\n| @Version | 1 | Decimal | Current version is 1.0 |\n| @TimeStamp | 1 | DateTime | Time of the transaction. |\n| OTA_HotelAvailNotifRS / Success | 0..1 |  | Should only be present if it was a successful response. The Errors node should not be present if the Success node is present. |\n| OTA_HotelAvailNotifRS / Errors | 0..1 |  | Contains a list of errors in the event of a failed request |\n| Errors / Error | 1..n |  | Mandatory if Errors present. Contains the details of the error. |\n| @Type | 1 | String | Mandatory if Error present. Any type from the OTA code table for 'Error Warning Type (EWT)' can be used. In particular, the following types are recommended - 1: Unknown 4: Authentication error (If username and password are not authenticated) 6: Authorization error (If authenticated username is not authorized to alter hotel data) 12: Processing exception |\n| @Code | 0..1 | String | Any code from the OTA code table for 'Error Codes (ERR)' can be used. In particular, the following codes are important as they will inform the channel of a room or hotel mapping error. 402: Invalid room type 392: Invalid hotel code 783: Room or rate not found 249: Invalid rate code |\n\n# OTA_HotelRateAmountNotifRQ\n\nA OTA_HotelRateAmountNotifRQ message will be received from a connected channel's web service after the value changes. The message can be used to update the rates for one or more room types for a single hotel. Specifically\n\n\\*   Room rates\n\\*   Room inclusions\n    \n\nEach OTA_HotelRateAmountNotifRQ message contains a single RateAmountMessages element which indicates the hotel to update using the RateAmountMessages/@HotelCode attribute. The RateAmountMessages/RateAmountMessage elements will contain the updates to process over a date range. There can be several RateAmountMessage updates per request, however each request will be limited to one hotel and one room.\n\nIt should be noted that by default, The Channel Manager is room occupancy agnostic and does not support 'Occupancy Based Pricing' at present. The rate the hotel sets in The Channel Manager for a particular room rate is generally for the base occupancy level for that room.\n\nThere are a number of features listed below that allow more definition around occupancy and additional guest charges (XML examples are shown below):\n\n\\*   'Included Occupancy' value to be specified for a base room rate.\n\\*   'Single Guest Discount' rate to be specified relative to a higher occupancies base room rate amount.\n\\*   'Extra Guest' charges to be specified relative to the base room rate (with or without base occupancies defined).\n    \n\n**All the above mentioned features are optional, and should be discussed with the API Development team during your development phase if needed to satisfy any business logic/requirements.**\n\nThe basic structure of the message is as follows:\n\n```\n\n  \n    \n      \n       Content omitted \n    \n    \n      \n       Content omitted \n    \n    \n      \n       Content omitted \n    \n  \n\n\n```\n\n## StatusApplicationControl\n\nThis element must appear once in each RateAmountMessage element. The StatusApplicationControl element is used to specify the room type, rate code and dates for which the update applies. The dates affected by the update are controlled by the mandatory @Start and @End attributes.\n\n```\n\n  \n    \n      \n      \n        \n          \n            \n          \n        \n      \n    \n  \n\n\n```\n\n## Setting Rates\n\nThe channel will send through rate updates using the BaseByGuestAmount element. The value of @AmountAfterTax will be a positive decimal value.\n\n#### Setting Rate XML\n\nNOTE: This is the default rate XML received if no additional rate features are used for the integration from the channel. See above for more information on these features.\n\n```\n\n  \n    \n      \n      \n        \n          \n            \n          \n        \n      \n    \n  \n\n\n```\n\n#### Setting Rate With 'Inclusions' XML\n\n```\n\n  \n    \n      \n      \n        \n          \n            \n          \n          \n            Buffet Breakfast and ticket to Museum\n          \n        \n      \n    \n  \n\n\n```\n\n#### Setting Rate With Additional Guest Amounts XML\n\n```\n\n  \n    \n      \n      \n        \n          \n             \n          \n          \n            \n            \n          \n        \n      \n    \n  \n\n\n```\n\n#### Setting Rate With Included Occupancy XML\n\nThe included occupancy value is set manually in The Channel Manager by the hotelier (if this feature is request for the integration). If an 'Included Occupancy' value is not set, THN will receive a rate update as per the 'Setting Rate XML' example.\n\n```\n\n  \n    \n      \n      \n        \n          \n            \n          \n        \n      \n    \n  \n\n\n```\n\n#### Setting Rate with a Single Guest Discount XML\n\nNOTE: Single Guest Discount is only for use when a discount applies to a room that normally includes more than 1 guest in the base room rate amount. So for a example you have a 1 Bedroom Apartment that usually includes 3 guests in the base rate, but you wish to also offer a discounted rate if only 1 guest stays in the same room, you would use the Single Guest Discount feature. If you wish to have a rate for a Single Room, then you would setup a seperate room rate with a base rate for 1 guest.\n\n```\n \n  \n    \n      \n      \n        \n          \n             \n             \n          \n        \n      \n    \n  \n\n\n```\n\n#### Setting Rate With Included Occupancy & Single Guest Discount XML\n\n```\n \n  \n    \n      \n      \n        \n          \n             \n             \n          \n        \n      \n    \n  \n\n\n```\n\n## OTA_HotelRateAmountNotifRQ - Specification\n\nElements and attributes marked with Number=1 or more will always be sent. 0 means that the element or attribute is optional, while a second numeric value or 'n' indicates the element or attribute can repeat (where n = no limit)\"\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| @AgeQualifyingCode | 0..1 | Integer | Supports the following values: 10 = Adult |\n| @AgeQualifyingCode | 1 | Integer | Supports the following values: 10 = Adult, 8 = Child |\n| @Amount | 1 | Decimal | Extra charge amount. |\n| @AmountAfterTax | 1 | Decimal | Rate Amount after tax. Positive decimal value. |\n| @CurrencyCode | 0..1 | String | The currency of the rate |\n| @CurrencyCode | 0..1 | String | The currency of the extra guest amount |\n| @EchoToken | 1 | String | Globally unique identifier for the request, this should be reflected as an EchoToken in the response |\n| @End | 1 | Date | The end date for which the rate is being set. This date is inclusive. |\n| @HotelCode | 1 | String | Hotel code of the property whose rate is being updated |\n| @InvTypeCode | 1 | String | Identifies the room |\n| @NumberOfGuests | 0..1 | Integer | Number of guests in room. |\n| @RatePlanCode | 0..1 | String | Identifies the rate |\n| @Start | 1 | Date | The start date for which the rate is being set. This date is inclusive. |\n| @TimeStamp | 1 | DateTime | Time of the transaction |\n| @Version | 1 | Decimal | Current version is 1.0 |\n| AdditionalGuestAmounts / AdditionalGuestAmount | 1..2 |  | Mandatory if AdditionalGuestAmounts is present |\n| BaseByGuestAmts / BaseByGuestAmt | 1..n |  | Contains information about the rates. |\n| OTA_HotelRateAmountNotifRQ | 1 |  | Root node |\n| OTA_HotelRateAmountNotifRQ /RateAmountMessages | 1 |  | Contains rates for a given hotel |\n| Rate / AdditionalGuestAmounts | 0..1 |  | Additional charges for extra guests for a given age qualifying code. |\n| Rate / BaseByGuestAmts | 1 |  | Base charge for a given number of guests. |\n| Rate / RateDescription | 0..1 |  | Description of what the rate includes. |\n| RateAmountMessage / Rates | 1 |  |  |\n| RateAmountMessage / StatusApplicationControl | 1 |  | Contains date and room identification information |\n| RateAmountMessages / RateAmountMessage | 1..n |  | Contain details of a rate update for a time span |\n| RateDescription / Text | 1 | String | The inclusion text. Max Length is 255 characters. |\n| Rates / Rate | 1 |  |  |\n\n## OTA_HotelRateAmountNotifRS\n\nThe OTA_HotelRateAmountNotifRS is returned for any request pushed. It is returned in a SOAP envelope, however the SOAP Header can be empty. The EchoToken received in the request is mirrored back in the response.\n\n#### Success Response XML\n\n```\n\n  \n\n\n```\n\nError Response XML\n\n```\n\n  \n    Cannot find room with code RC1\n  \n\n\n```\n\n## OTA_HotelRateAmountNotifRS - Specification\n\nNote: Elements and attributes marked with Number=1 or more will always be sent. 0 means that the element or attribute is optional, while a second numeric value or 'n' indicates the element or attribute can repeat (where n = no limit)\"\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| OTA_HotelRateAmountNotifRS | 1 |  | Root element |\n| @EchoToken | 1 | String | Return the EchoToken from the request message. |\n| @Version | 1 | Decimal | Current version is 1.0 |\n| @TimeStamp | 1 | DateTime | Time of the transaction. |\n| OTA_HotelRateAmountNotifRS / Success | 0..1 |  | Should only be present if the request processed successfully. The Errors node should not be present if the Success node is present |\n| OTA_HotelRateAmountNotifRS / Errors | 0..1 |  | Contains a list of errors if the request failed to process. |\n| Errors / Error | 1..n |  | Should be at least one node if there is an Errors Node. |\n| @Type | 1 | String | Any type from the OTA code table for 'Error Warning Type (EWT)' can be used. In particular, the following types are recommended: 1: Unknown 4: Authentication error (If username and password are not authenticated) 6: Authorization error (If authenticated username is not authorized to alter hotel data) 12: Processing exception |\n| @Code | 0..1 | String |  |\n\n# Reservation API - OTA_HotelResNotifRQ/RS\n\nTHN uses the OTA_HotelResNotifRQ to send reservations, modifications and cancellations. The state of the reservation is determined by the OTA_HotelResNotifRQ ResStatus attribute for which values Commit, Modify and Cancel are allowed. THN only allows one hotel code per reservation. If a channel allow multiple hotels per reservation one reservation per hotel must be sent. Multiple rooms and rates are allowed in one reservation request.\n\n## EchoToken Implementation for OTA_HotelResNotifRQ\n\nEchoTokens are essential for all requests (namely OTA_HotelResNotifRQ) being made over the THN. EchoTokens ensure that each request can be uniquely identified for troubleshooting purposes in both testing and production environments.\n\nAll requests will contain an EchoToken, and the response must include the same EchoToken as received in the request.\n\n**NOTE**: Please ensure that you implement EchoTokens that are as 'unique' as possible to ensure that log trawling for troubleshooting purposes on either side is quick and efficient. Implementing GUIDs are recommended and more information about GUID can be found - [http://en.wikipedia.org/wiki/Globally_unique_identifier](http://en.wikipedia.org/wiki/Globally_unique_identifier).\n\n## Required Information\n\nTHN follows the OTA reservation specification and allows a lot of information to be send through regarding reservations. Not all of that information is mandatory though. Please refer to the Reservation Specification to see what information is mandatory.\n\n## Reservation confirmation\n\nThe OTA_HotelResNotifRS response with ('Success' or 'Error') should simply indicate whether the Channel manger is able to receive the reservation delivery message/notification request or not.\n\n## Error Handling\n\nError responses should use standard OTA Standard error codes so that THN can decode the error and act accordingly.\n\nIf the response is a http error response code in the 500 range then THN will retry the sending of the reservation until it is successfully delivered or a pre-defined timeout period is reached, e.g. 60 minutes. In the case that a reservation cannot be delivered within the timeout period a problem case will be raised with the Channel Manager Application Support team.\n\n# OTA_HotelResNotifRQ\n\nTHN will send through reservations to the Channel Manager using the OTA_HotelResNotifRQ message. The channel will process the reservation and respond with the OTA_HotelResNotifRS as a receipt of success or failure to process the request. THN only allows one hotel code per reservation. If a channel allows multiple hotels per reservation one reservation per hotel must be sent.\n\n## OTA_HotelResNotifRQ - Specification\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| OTA_HotelResNotifRQ | 1 |  | Root element |\n| @EchoToken | 1 | String | Globally unique identifier for the request, the value will be returned in the response EchoToken. |\n| @ResStatus | 1 | String | Allowed values are Commit, Modify and Cancel |\n| @Version | 1 | Decimal | Current Version 1.0 |\n| @TimeStamp | 1 | DateTime | Time of the transaction. Format like yyyy-MM-dd'T'HH:mm:ssZZ i.e '2012-03-09T20:05:52+08:00' |\n\n#### Source\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| OTA_HotelResNotifRQ / POS / Source / RequestorID | 1 |  | This identifies the system which is sending the reservation. This element must appear in the first Source element. |\n| @Type | 1 | String | Fixed at 22 (ESRP) |\n| @ID | 1 | String | The ID used will be agreed by the trading partners and remain the same throughout the messages. |\n| OTA_HotelResNotifRQ / POS / Source / BookingChannel | 1..2 |  | This element is used to pass the booking source for the reservation. To send secondary booking channel information an additional Source element needs to be sent. |\n| @Primary | 0..1 | boolean | Primary attribute would be set to “true” if only one booking channel is transferred. Only one source should be marked “true” if multiple sources are sent. |\n| BookingChannel / CompanyName | 1 |  | The name of the booking channel. |\n| @Code | 0..1 | String | The code of the booking channel. |\n\n## OTA_HotelResNotifRQ / HotelReservations / HotelReservation\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| OTA_HotelResNotifRQ / HotelReservations / HotelReservation | 1 |  | Contain the reservation details |\n| @CreateDateTime | 1 | DateTime | This is the date when the reservation was first made. Mandatory if ResStatus is Commit. Format like yyyy-MM-dd'T'HH:mm:ssZZ i.e '2012-03-09T20:05:52+08:00' |\n| @LastModifyDateTime | 0..1 | DateTime | This indicates the last date and time when the reservation was last modified. Mandatory if ResStatus is Modify or Cancel. Format like yyyy-MM-dd'T'HH:mm:ssZZ i.e '2012-03-09T20:05:52+08:00' |\n| HotelReservation / UniqueID | 1 |  | The unique identifier of the reservation in the system which sent the message. |\n| @Type | 1 | Integer | Always 14 - Reservation. |\n| @ID | 1 | String | ID is the actual confirmation number. |\n\n## HotelReservation / RoomStays / RoomStay\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| HotelReservation / RoomStays / RoomStay | 1..n |  | One instance of RoomStay per Room type booked. |\n| @PromotionCode | 0..1 | String | If configured, this is the promotion code indicating, for instance, a specific marketing campaign – not the rate code. |\n\n#### RoomTypes\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| RoomStay / RoomTypes / RoomType | 0..1 |  | Can be sent to give more information on the room type for this room stay |\n| @RoomTypeCode | 1 | String | The code of the room booked |\n| RoomType / RoomDescription | 1 | String | Description of the room |\n| @Name | 1 |  | String Room name |\n\n#### RatePlans\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| RoomStay / RatePlans | 0..1 |  | Can be sent to give more information on the rate plan for this room stay |\n| RatePlans / RatePlan | 1 |  |  |\n| @RatePlanCode | 1 | String | The code of the rate booked |\n| RatePlan / RatePlanDescription | 1 | String | Description of the rate plan |\n| RatePlan / Commission | 0..1 |  | Commission amount associated with the rate plan |\n| Commission / CommissionPayableAmount | 1 |  | The amount of commission to be paid |\n| @Amount | 1 | Decimal |  |\n| @CurrencyCode | 1 | String | ISO currency code |\n| RatePlan / MealsIncluded | 0..n |  | Used to identify the types of meals included with a rate plan |\n| @MealPlanCodes | 0..1 | String | Meal plan codes outline meal inclusions within rate plan e.g. fullBoard |\n\n#### RoomRates\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| RoomStay / RoomRates / RoomRate | 1 |  | One RoomRate per RoomStay. Multiple rates are listed under the RoomRate. |\n| @RoomTypeCode | 1 | String | The code of the room booked |\n| @NumberOfUnits | 1 | Integer | Only \"1\" is allowed. If there are multiple RoomStays for the same RoomTypeCode and RatePlanCode multiple RoomStay elements should be sent. |\n| @RatePlanCode | 0..1 | String | This is the rate booked for the room type code listed in the RoomTypeCode attribute. Must be included if RoomStay / RatePlans is present. |\n| RoomRate / Rates / Rate | 0..n |  | Rate will contain a timespan for which a rate will apply for a room type. Multiple instances of Rate will be sent if rate changes apply for the room type over the span of the booking. |\n|  |  |  | As an example, if the rate is $100 for the first three nights of a reservation you should reflect this by bundling into one instance of Rate and indicating the time span the Base / Total (in this case a Base of $300) applies to. If however, the rate is $156 for the first night, $167 for the second night and $199 for the third night, then you should include each day in a separate instance of Rate. (See Daily Rates XML Samples for more context). |\n|  |  |  | The dates covered in RoomRate/Rates will cover all the dates in the RoomStay/TimeSpan element. |\n| @RateTimeUnit | 1 | String | Only \"Day\" is allowed |\n| @EffectiveDate | 1 | Date | The starting date of the rate in the form yyyy-MM-dd. This date is inclusive. |\n| @ExpireDate | 1 | Date | ExpireDate is the first day after the applicable period (e.g. when expire date is 2012-04-03 the last date of the period is 2012-04-02). Format yyyy-MM-dd. |\n| @UnitMultiplier | 1 | Integer | Only \"1\" is allowed. |\n| Rate / Base | 1 |  | The base amount charged for the accommodation |\n| @CurrencyCode | 1 | String | CurrencyCode uses ISO 4217 codes to indicate the currency of the rate that is being booked. |\n| @AmountAfterTax | 0..1 | Decimal | The total amount after tax. At least one of AmountAfterTax or AmountBeforeTax must be set. |\n| @AmountBeforeTax | 0..1 | Decimal | The total amount before tax. At least one of AmountAfterTax or AmountBeforeTax must be set. |\n| Base / Taxes | 0..1 |  |  |\n| Taxes / Tax | 0..n |  |  |\n| @Type | 0..1 |  | The Type attribute is an enumeration to indicate whether the tax is “inclusive”, “exclusive”, or “cumulative”. |\n| @Code | 0..1 |  | The Code attribute refers to OpenTravel Alliance list FTT (fee tax type) and is used to indicate the specific tax or fee that is being transferred. |\n| @Amount | 0..1 |  | Amount of the specific tax/fee transferred. |\n| @CurrencyCode | 0..1 |  | Currency for the Amount of the specific tax/fee transferred. |\n| Rate / Total | 0..1 |  | The total amount charged for this rate including additional occupant amounts and fees. If left empty and the Base amount is provided then assume the Base amount to be the Total Amount. |\n| @CurrencyCode | 1 | String | CurrencyCode uses ISO 4217 codes to indicate the currency of the rate that is being booked. |\n| @AmountAfterTax | 0..1 | Decimal | The total amount after tax. At least one of AmountAfterTax or AmountBeforeTax must be set. |\n| @AmountBeforeTax | 0..1 | Decimal | The total amount before tax. At least one of AmountAfterTax or AmountBeforeTax must be set. |\n| Total / Taxes | 0..1 |  |  |\n| Taxes / Tax | 0..n |  |  |\n| @Type | 0..1 |  | The Type attribute is an enumeration to indicate whether the tax is “inclusive”, “exclusive”, or “cumulative”. |\n| @Code | 0..1 |  | The Code attribute refers to OpenTravel Alliance list FTT (fee tax type) and is used to indicate the specific tax or fee that is being transferred. |\n| @Amount | 0..1 |  | Amount of the specific tax/fee transferred. |\n| @CurrencyCode | 0..1 |  | Currency for the Amount of the specific tax/fee transferred. |\n| RoomRate / ServiceRPHs / ServiceRPH | 0..n |  | Container for the ServiceRPH |\n| @RPH | 1 | Integer | This links a Service to the Service information provided at the HotelReservation level (if applicable) |\n\n#### GuestCounts\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| RoomStay / GuestCounts | 1 |  | How many guests will be staying in the room. The count is split over potentially three GuestCount elements under GuestCounts, one for each type of guest: adult, child or infant. Adult count will always be sent |\n| GuestCounts / GuestCount | 1..3 |  |  |\n| @AgeQualifyingCode | 1 | Integer | Specifies the guest type for this GuestCount - uses OTA Spec for identifiers, will be one of three values |\n|  |  |  | 10 - Adult |\n|  |  |  | 8 - Child |\n|  |  |  | 7 - Infant |\n| @Count | 1 | Integer | The actual count for this type of guest |\n\n#### TimeSpan\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| RoomStay / TimeSpan | 1 |  | Contains the timespan which this RoomStay covers |\n| @Start | 1 | Date | Check in date |\n| @End | 1 | Date | Check out date |\n\n#### Total\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| RoomStay / Total | 1 |  | The total amount charged for the room including any extra fees and/or charges that applies to the room. |\n| @AmountAfterTax | 0..1 | Decimal | The total amount after tax. At least one of AmountAfterTax or AmountBeforeTax must be set. |\n| @AmountBeforeTax | 0..1 | Decimal | The total amount before tax. At least one of AmountAfterTax or AmountBeforeTax must be set. |\n| @CurrencyCode | 1 | String | CurrencyCode uses ISO 4217 codes to indicate the currency of the rate that is being booked. |\n| Total / Taxes | 0..1 |  | Optional. Can be used for Total Pricing. |\n| Taxes / Tax | 0..n |  |  |\n| @Type | 0..1 |  | The Type attribute is an enumeration to indicate whether the tax is “inclusive”, “exclusive”, or “cumulative”. |\n| @Code | 0..1 |  | The Code attribute refers to OpenTravel Alliance list FTT (fee tax type) and is used to indicate the specific tax or fee that is being transferred. |\n| @Amount | 0..1 |  | Amount of the specific tax/fee transferred. |\n| @CurrencyCode | 0..1 |  | Currency for the Amount of the specific tax/fee transferred. |\n\n#### BasicPropertyInfo\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| RoomStay / BasicPropertyInfo | 1 |  | Holds information about the Hotelier which this reservation is for |\n| @HotelCode | 1 | String | The code for the Hotel for which the booking was made. |\n| @HotelName | 0..1 | String | The name of the Hotel for which the booking was made |\n\n#### ServiceRPH\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| RoomStay / ServiceRPHs / ServiceRPH | 0..n |  | A service can be linked to the RoomStay using the below element/attribute |\n| @RPH | 1 | Integer | This links a Service to the Service information provided at the HotelReservation level (if applicable) |\n\n#### ResGuestRPH\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| RoomStay / ResGuestRPHs / ResGuestRPH | 0..n |  | Used to link guests from the ResGuests list to the RoomStay. Should not be used if not all guests can be linked to RoomStays or not all RoomStays can be linked to guests. |\n| @RPH | 1 | Integer | This links to the ResGuest/@ResGuestRPH to link the guest to the RoomStay |\n\n#### Comment\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| RoomStay / Comments / Comment | 0..1 |  | Per RoomStay, there may be one comment |\n| Comment / Text | 1 |  | The comment (PCI sensitive data is prohibited) |\n\n#### SpecialRequest\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| @Name | 1 |  | Special request type i.e: |\n|  |  |  | bedding configuration |\n|  |  |  | smoking |\n|  |  |  | cot |\n|  |  |  | extra bed |\n| RoomStay / SpecialRequests / SpecialRequest / | 0..n |  |  |\n| SpecialRequest / Text | 0..1 |  | Special request text |\n\n#### HotelReservation / Services / Service\n\n| Element | Number | Description |\n| --- | --- | --- |\n| HotelReservation / Services / Service | 0..n | A Service object represents a non-room product provided to guests. Service products may have associated inventory and charges |\n| @ServiceInventoryCode | 1 | The identifier code for the service as given by the source booking channel will be provided here |\n|  |  | Options are: event, extra, extra-bed, extra-person, meal, other, service, surcharge, tour |\n| @ID | 0..1 | The reference id provided for a extra/service by the source booking channel (if provided) |\n| @ServiceRPH | 0..1 | This links a Service to a RoomStay or RatePlan. The absence of a ServiceRPH indicates that this is a HotelReservation level charge |\n| @Inclusive | 1 | This should always be TRUE because the channel will report totals as inclusive of charges and extras |\n| @Quantity | 1 | The number of units included in the charge. This value does not affect the Total amount |\n| Service / Price / Base | 0..1 | The amount per unit for this extra charge as provided by the hotel. |\n| @CurrencyCode | 0..1 | The ISO currency code for the unit amount |\n| @AmountAfterTax | 0..1 | The unit amount after tax |\n| @AmountBeforeTax | 0..1 | The unit amount before tax |\n| Service / Price / Base / Taxes / Tax | 0..1 | Container for the tax |\n| @Code | 1 | The type of tax being applied to the total. Refer to the code table OTA Fee Tax Type (FTT) |\n| @Percentage | 0..1 | Tax percentage |\n| @Amount | 0..1 | Tax amount |\n| Service / Price / Base / Taxes / Tax / TaxDescription / Text | 0..1 | Text description of the tax |\n| Service / Price / Total | 1 | Container for the Service total |\n| @CurrencyCode | 0..1 | The ISO currency code for the unit amount |\n| @AmountAfterTax | 0..1 | The unit amount after tax |\n| @AmountBeforeTax | 0..1 | The unit amount before tax |\n| Service / Price /Total / Taxes / Tax | 0..1 | Container for the tax |\n| @Code | 1 | The type of tax being applied to the total. Refer to the code table OTA Fee Tax Type (FTT) |\n| @Percentage | 0..1 | Tax percentage |\n| @Amount | 0..1 | Tax amount |\n| Service / Price / Total / Taxes / Tax / TaxDescription / Text | 0..1 | Text description of the tax |\n| Service / Price / RateDescription / Text | 0..1 | A text description of the service/extra |\n| Service / ServiceDetails / Timespan | 0..1 | Container for the Timespan |\n| @Start | 0..1 | Start date of service. Format: YYYY-MM-DD |\n| @End | 0..1 | Last date of service. Format: YYYY-MM-DD |\n\n#### HotelReservation / ResGuests / ResGuest\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| HotelReservation / ResGuests | 0..1 |  |  |\n| HotelReservation / ResGuests / ResGuest | 1..n |  | Contains the guests for the reservation. |\n|  |  |  | If all guests are linked to a room stays then the ResGuestRPH should be used to link a ResGuest to a RoomStay. |\n| @ResGuestRPH | 0..1 | Integer | This value links the ResGuest to RoomStay(s) where possible. You can find the links in RoomStay/ResGuestRPHs. |\n| @PrimaryIndicator | 0..1 | Boolean | This indicates the primary guest on a reservation. |\n| @ArrivalTime | 0..1 | Time | The arrival time of the guest in the form HH:mm:ss |\n\n#### Profiles\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| ResGuest / Profiles / ProfileInfo | 1 |  |  |\n| ProfileInfo / Profile | 1 |  | Contains the guest profile information. |\n| @ProfileType | 1 | Integer | Always \"1\" - The OTA code for \"Customer\" |\n| Profile / Customer | 1 |  |  |\n| Customer / PersonName / NamePrefix | 0..n |  | The title of the customer |\n| Customer / PersonName / GivenName | 1 |  | The name of the customer |\n| Customer / PersonName / Surname | 1 |  | The last name of the customer |\n| Customer / Telephone | 0..1 |  | Contact telephone number for the customer if available |\n| @PhoneNumber | 1 |  | PhoneNumber contains the actual number as a string of max 32 characters and it is Mandatory. |\n| Customer / Email | 0..1 |  | The email address of the customer if available |\n| Customer / Address | 0..1 |  | Address information for the customer if available |\n| Address / AddressLine | 0..2 |  | One or more address lines for the customer |\n| Address / CityName | 0..1 |  | Customer city of residence if available |\n| Address / PostalCode | 0..1 |  | Post code for customer if available |\n| Address / StateProv | 0..1 |  | State or province name |\n| Address / CountryName | 0..1 |  | Country name |\n| Customer / CustLoyalty | 0..n |  | A list of loyalty/rewards programs for the guest |\n| @ProgramID | 1 | String | The defined membership program name or ID applicable to program. e.g. Qantas |\n| @MembershipID | 1 | String | The account identification number for this particular member in this particular program |\n| @ExpireDate | 0..1 | Date | The expiry date for this particular membership record in this particular program. Format yyyy-MM-dd |\n| Customer / Document | 0..1 |  | Detailed document information for the guest (e.g., driver license, passport, visa). |\n| @BirthCountry | 0..1 |  | Specifies the birth country of the document holder. |\n| @BirthPlace | 0..1 |  | Specifies the birth place of the document holder (e.g., city, state, county, province), when designating a country of birth, use BirthCountry. |\n| @DocHolderNationality | 0..1 |  | The country code of the nationality of the document holder. |\n| @DocID | 1 |  | Unique number assigned by authorities to document. |\n| @DocIssueAuthority | 0..1 |  | Indicates the group or association that granted the document. |\n| @DocIssueCountry | 0..1 |  | Country where the document was issued. |\n| @DocIssueLocation | 0..1 |  | Indicates the location where the document was issued. |\n| @DocIssueStateProv | 0..1 |  | State or Province where the document was issued. |\n| @DocType | 1 |  | Indicates the type of document (e.g. Passport, Military ID, Drivers License, national ID, Vaccination Certificate). Refer to the Document Type Code List |\n| @BirthDate | 0..1 |  | Indicates the date of birth as indicated in the document, in ISO 8601 prescribed format (YYYY-MM-DD). |\n| @Gender | 0..1 | String | Identifies the gender. Possible values are \"Female\", \"Male\", or \"Unknown\". |\n| @EffectiveDate | 0..1 | Date | Indicates the starting date, in format YYYY-MM-DD. |\n| @ExpireDate | 0..1 | Date | Indicates the ending date, in format YYYY-MM-DD. |\n| Document / DocHolderName | 0..1 |  | The name of the document holder in unformatted text (Mr. Sam Jones). If no DocHolderName is included, the guest name fields will be assumed to be the name as per passport. |\n\n#### ArrivalTransport\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| ResGuest / ArrivalTransport / TransportInfo | 0..n |  | A list of details regarding transport to destination |\n| @Type | 0..1 | String | The type of transport the guest used for travelling to destination as provided by booking channel |\n| @ID | 0..1 | String | The transport provider's ID for transportation mode the guest is using. e.g. Flight Number QF123 |\n| @Time | 0..1 | DateTime | The transportation arrival time to destination. Format yyyy-MM-ddThh:mm:ss |\n\n#### DepartureTransport\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| ResGuest / DepartureTransport / TransportInfo | 0..n |  | A list of details regarding transport from destination |\n| @Type | 0..1 | String | The type of transport the guest used for travelling from destination as provided by booking channel |\n| @ID | 0..1 | String | The transport provider's ID for transportation mode the guest is using. e.g. Flight Number QF123 |\n| @Time | 0..1 | DateTime | The transportation departure time from destination. Format yyyy-MM-ddThh:mm:ss |\n\n#### HotelReservation / ResGlobalInfo\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| HotelReservation / ResGlobalInfo | 1 |  | Contains general information about the Reservation |\n| ResGlobalInfo / HotelReservationIDs / | 0..1 |  | Reference number/string or PNR as supplied by the Booking agent will be supplied here |\n| HotelReservationID |  |  |  |\n| @ResID_Type | 1 |  | Always 14 – OTA code for Travel Agent PNR. |\n| @ResID_Value | 1 |  | Reference number/string supplied by the Booking agent |\n\n#### Comments\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| ResGlobalInfo / Comments | 0..1 |  |  |\n| Comments / Comment | 1..n |  |  |\n| Text | 1 |  | Comment text (PCI sensitive data is prohibited) |\n\n#### Total\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| ResGlobalInfo / Total | 1 |  | The total amount for the Reservation. This is the total amount charged for all RoomStays and any additional fees and/or charges that applies. |\n| @CurrencyCode | 1 |  | CurrencyCode uses ISO 4217 codes to indicate the currency of the rate that is being booked. |\n| @AmountAfterTax | 0..1 |  | The total amount after tax. At least one of AmountAfterTax or AmountBeforeTax must be set. |\n| @AmountBeforeTax | 0..1 |  | The total amount before tax. At least one of AmountAfterTax or AmountBeforeTax must be set. |\n| Total / Taxes | 0..1 |  | Optional. Can be used for Total Pricing. |\n| Taxes / Tax | 0..n |  |  |\n| @Type | 0..1 |  | The Type attribute is an enumeration to indicate whether the tax is “inclusive”, “exclusive”, or “cumulative”. |\n| @Code | 0..1 |  | The Code attribute refers to OpenTravel Alliance list FTT (fee tax type) and is used to indicate the specific tax or fee that is being transferred. |\n| @Amount | 0..1 |  | Amount of the specific tax/fee transferred. |\n| @CurrencyCode | 0..1 |  | Currency for the Amount of the specific tax/fee transferred. |\n\n#### Guarantee and Deposit Payments\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| ResGlobalInfo / Guarantee / | 0..1 |  | Guarantee provided with the reservation. This element is used if there is no deposit payed for the reservation. |\n| GuaranteesAccepted / GuaranteeAccepted |  |  |  |\n| PaymentCard |  |  |  |\n| @CardType | 0..1 |  | Always 1 to indicate credit card |\n| @CardCode | 1 |  | The 2 character code of the credit card issuer. Please see the OTA Payment Card Provider Codes table for reference |\n| @CardNumber | 0..1 |  | This is actual number of the credit card used for deposit/prepayment. |\n| @SeriesCode | 0..1 |  | The SeriesCode attribute is used (Optionally) for the security number of the card. NOTE: While this attribute is supported in the reservation XML, the details of this attribute are ONLY passed through when a Channel decides to utilise the the channel Reservation Email notification. SeriesCode will not be stored anywhere within the channel for PCI compliance. |\n| @ExpireDate | 0..1 |  | This is the expiry date of the credit card used for deposit/prepayment. Format MMyy. |\n| PaymentCard / CardHolderName | 0..1 |  | The name of the card holder. |\n| PaymentCard / ThreeDomainSecurity / Results | 0..1 |  | Transaction results. |\n|  |  |  | IMPORTANT NOTE: SCA / 3DS details will only be passed through to hoteliers integrated with a 3DS compatible property management system. If the hotelier is not integrated with a property management system or the property management system does not support SCA, information within the 'ThreeDomainSecurity' element will not be visible in The Channel Manager. |\n| @ThreeDSVersion | 1 |  | The 3DS version used for authentication |\n| @ECI | 1 |  | Electronic Commerce Indicator. Please see Electronic Commerce Indicator Codes table for reference. |\n| @CAVV | 0..1 |  | Cardholder Authentication Verification Value (CAVV); Authentication Verification Value (AVV); Universal Cardholder Authentication Field (UCAF) |\n| @PAResStatus | 0..1 |  | Transactions status result identifier. Please see Transactions Status Result Identifier Codes table for reference. |\n| @SignatureVerification | 0..1 |  | Transaction Signature status identifier. Please see Transaction Signature Status Codes table for reference. |\n| @XID | 0..1 |  | Transaction identifier resulting from authentication processing |\n| @Enrolled | 0..1 |  | Status of Authentication eligibility. Please see Status of Authentication Codes table for reference. |\n| @DSTransactionID | 0..1 |  | Unique transaction identifier assigned by the Directory Server (DS) to identify a single transaction |\n| ResGlobalInfo / DepositPayments /GuaranteePayment | 0..1 |  | Deposit provided with the reservation. |\n| GuaranteePayment / | 0..1 |  | Deposit payment information. |\n| AcceptedPayments / AcceptedPayment |  |  |  |\n| AcceptedPayment / PaymentCard | 1 |  | Mandatory if AcceptedPayment is sent. The card to which the deposit or prepayment is charged. |\n| @CardType | 0..1 |  | Always 1 to indicate credit card |\n| @CardCode | 1 |  | The 2 character code of the credit card issuer. Please see the OTA Payment Card Provider Codes table for reference |\n| @CardNumber | 0..1 |  | This is actual number of the credit card used for deposit/prepayment. |\n| @SeriesCode | 0..1 |  | The SeriesCode attribute is used (Optionally) for the security number of the card. NOTE: While this attribute is supported in the reservation XML, the details of this attribute are not stored or passed through to the hotel due to PCI-DSS requirements. |\n| @ExpireDate | 0..1 |  | This is the expiry date of the credit card used for deposit/prepayment. Format MMyy. |\n| PaymentCard / CardHolderName | 0..1 |  | The name of the card holder. |\n| PaymentCard / ThreeDomainSecurity / Results | 0..1 |  | Transaction results. |\n|  |  |  | IMPORTANT NOTE: SCA / 3DS details will only be passed through to hoteliers integrated with a 3DS compatible property management system. If the hotelier is not integrated with a property management system or the property management system does not support SCA, information within the 'ThreeDomainSecurity' element will not be visible in The Channel Manager. |\n| @ThreeDSVersion | 1 |  | The 3DS version used for authentication |\n| @ECI | 1 |  | Electronic Commerce Indicator. Please see Electronic Commerce Indicator Codes table for reference. |\n| @CAVV | 0..1 |  | Cardholder Authentication Verification Value (CAVV); Authentication Verification Value (AVV); Universal Cardholder Authentication Field (UCAF) |\n| @PAResStatus | 0..1 |  | Transactions status result identifier. Please see Transactions Status Result Identifier Codes table for reference. |\n| @SignatureVerification | 0..1 |  | Transaction Signature status identifier. Please see Transaction Signature Status Codes table for reference. |\n| @XID | 0..1 |  | Transaction identifier resulting from authentication processing |\n| @Enrolled | 0..1 |  | Status of Authentication eligibility. Please see Status of Authentication Codes table for reference. |\n| @DSTransactionID | 0..1 |  | Unique transaction identifier assigned by the Directory Server (DS) to identify a single transaction |\n| GuaranteePayment / AmountPercent | 1 |  | Mandatory if something is passed in the DepositPayment element. |\n| @Amount | 1 |  | Amount charged as deposit |\n| @CurrencyCode | 1 |  | Currency of the deposit payment |\n\n## ResGlobalInfo / Profile\n\n#### Customer\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| ResGlobalInfo / Profiles | 1 |  |  |\n| ResGlobalInfo / Profiles / ProfileInfo | 1 |  |  |\n| ResGlobalInfo / Profiles / ProfileInfo / Profile | 1 |  |  |\n| @ProfileType | 1 | String | Always 1 - OTA code for Customer |\n| Profile / Customer | 1 |  | Reservation customer details. Makes it possible to supply customer details if the customer is not a staying guest. |\n| Customer / PersonName / NamePrefix | 0..n |  | The title of the customer |\n| Customer / PersonName / GivenName | 1 |  | The name of the customer |\n| Customer / PersonName / Surname | 1 |  | The last name of the customer |\n| Customer / Telephone | 0..1 |  | Contact telephone number for the customer if available |\n| @PhoneNumber | 1 |  | PhoneNumber contains the actual number as a string of max 32 characters and it is Mandatory. |\n| Customer / Email | 0..1 |  | The email address of the customer if available |\n| Customer / Address | 0..1 |  | Address information for the customer if available |\n| Address / AddressLine | 0..n |  | One or more address lines for the customer |\n| Address / CityName | 0..1 |  | Customer city of residence if available |\n| Address / PostalCode | 0..1 |  | Post code for customer if available |\n| Address / StateProv | 0..1 |  | State or province name |\n| Address / CountryName | 0..1 |  | Country name |\n\n#### CompanyInfo (Corporate)\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| ResGlobalInfo / Profiles / ProfileInfo | 0..1 |  |  |\n| ProfileInfo / UniqueID | 0..1 |  |  |\n| @ID | 1 | String | Corporate identification number e.g. company code |\n| ProfileInfo / Profile | 1 |  |  |\n| @ProfileType | 1 | String | Always 3 – OTA code for a Corporate |\n| Profile / CompanyInfo | 1 |  |  |\n| CompanyInfo / CompanyName | 1 |  | The company Name |\n| CompanyInfo / TelephoneInfo | 0..1 |  |  |\n| @PhoneNumber | 1 | String | PhoneNumber, contains the actual number as a string of max 32 character |\n| CompanyInfo / Email | 0..1 |  | Email address |\n| CompanyInfo / AddressInfo | 0..1 |  | Address information |\n| AddressInfo / AddressLine | 0..3 |  | Address lines |\n| AddressInfo / CityName | 0..1 |  | City |\n| AddressInfo / PostalCode | 0..1 |  | Post code |\n| AddressInfo / StateProv | 0..1 |  | State or province name |\n| AddressInfo / CountryName | 0..1 |  | Country name |\n\n#### CompanyInfo (Travel Agent)\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| ResGlobalInfo / Profiles / ProfileInfo | 0..1 |  |  |\n| ProfileInfo / UniqueID | 0..1 |  |  |\n| @ID | 1 | String | Travel Agent identificaiton number e.g. IATA Code |\n| ProfileInfo / Profile | 1 |  |  |\n| @ProfileType | 1 | String | Always 4 – OTA code for a Travel Agent |\n| Profile / CompanyInfo | 1 |  |  |\n| CompanyInfo / CompanyName | 1 |  | The company Name |\n| CompanyInfo / TelephoneInfo | 0..1 |  |  |\n| @PhoneNumber | 1 | String | PhoneNumber, contains the actual number as a string of max 32 character |\n| CompanyInfo / Email | 0..1 |  | Email address |\n| CompanyInfo / AddressInfo | 0..1 |  | Address information |\n| AddressInfo / AddressLine | 0..3 |  | Address lines |\n| AddressInfo / CityName | 0..1 |  | City |\n| AddressInfo / PostalCode | 0..1 |  | Post code |\n| AddressInfo / StateProv | 0..1 |  | State or province name |\n| AddressInfo / CountryName | 0..1 |  | Country name |\n\n# OTA_HotelResNotifRS\n\nOTA_HotelResNotifRS is returned in response to the OTA_HotelResNotifRQ request indicating if the reservation was processed successfully or not.\n\n#### Success Response\n\n```\n\n  \n  \n    \n      \n      \n        \n          \n        \n      \n    \n  \n\n\n```\n\n#### Failure Response\n\n```\n\n  \n    Cannot find hotelier HOTEL1\n  \n\n\n```\n\n## OTA_HotelResNotifRS - Specification\n\n| Element | Number | Type | Description |\n| --- | --- | --- | --- |\n| OTA_HotelResNotifRS | 1 |  | Root element |\n| @EchoToken | 1 | String | Return the EchoToken from the request message. |\n| @Version | 1 | Decimal | Current version is 1.0 |\n| @TimeStamp | 1 | DateTime | Time of the transaction. |\n| @ResResponseType | 0..1 | String | Shows if the original message was an addition, modification or cancellation. |\n|  |  |  | Value is one of Committed, Modified,or Cancelled. |\n| OTA_HotelResNotifRS / Success | 0..1 |  | Should only be present if the request processed successfully. The Errors node should not be present if the Success node is present. |\n| OTA_HotelResNotifRS / Errors | 0..1 |  | Contains a list of errors if the request failed to process. |\n| Errors / Error | 1..n |  | Should be at least one node if there is an Errors Node. |\n| @Type | 1 | String | Any type from the OTA code table for 'Error Warning Type (EWT)' can be used. In particular, the following types are recommended |\n|  |  |  | 1: Unknown |\n|  |  |  | 4: Authentication error (If username and password are not authenticated) |\n|  |  |  | 6: Authorization error (If authenticated username is not authorized to alter hotel data or if hotel is unknown) |\n|  |  |  | 12: Processing exception |\n| @Code | 0..1 | String | Any code from the OTA code table for 'Error Codes (ERR)' can be used. In particular, the following codes are important as they will inform the channel of a room or hotel mapping error |\n|  |  |  | 392: Invalid hotel code |\n|  |  |  | 448: System Error |\n\n# Error Handling\n\nIt is expected that your OTA has a robust error handling process in place. This includes a queuing mechanism and a robust retry strategy. An error response should contain a short description of the error to assist our support teams.\n\n## Sample Error Response\n\n```\n\n  \n    Cannot find hotelier with code ABC\n  \n\n\n```\n\n### Recommended OTA Error Codes\n\nTHN recommends the following error codes from OTA Error Codes (ERR).\n\n#### Error Warning Type (EWT)\n\n| Code | OTA Description |\n| --- | --- |\n| 1 | Unknown |\n| 2 | No implementation |\n| 3 | Biz rule |\n| 4 | Authentication |\n| 5 | Authentication timeout |\n| 6 | Authorization |\n| 7 | Protocol violation |\n| 8 | Transaction model |\n| 9 | Authentical model |\n| 10 | Required field missing |\n| 11 | Advisory |\n| 12 | Processing exception |\n| 13 | Application error |\n\n#### Error Codes (ERR)\n\n#### Error Codes - General\n\nThese are recommended Error Codes to be returned for general errors\n\n| Code | OTA Description |\n| --- | --- |\n| 187 | System currently unavailable |\n| 400 | Invalid property code Hotel code |\n| 448 | System error |\n| 450 | Unable to process |\n\n# Example Messages\n\nSample messages follow below and can be used once login credentials have been issued by THN.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":true,"owner":"2816325","team":534288,"collectionId":"8f65fad4-5968-4824-bbba-afb22a6782ae","publishedId":"SzKZsvqH","public":true,"publicUrl":"https://api.hotelnetwork.com.au","privateUrl":"https://go.postman.co/documentation/2816325-8f65fad4-5968-4824-bbba-afb22a6782ae","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.1","publishDate":"2021-06-02T04:57:12.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/dec1818eea5f04bca1cbfb49c4db6c9961e529ec924979815eb197da3cb12d30","favicon":"https://hotelnetwork.com.au/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://api.hotelnetwork.com.au/view/metadata/SzKZsvqH"}