RoomRates API v3
Our RoomRatesAPI is utilized daily by thousands of hotels, accommodation providers, and travel technology companies across the globe. It offers full scalability and grants access to pricing data for over 3.5 million hotels worldwide. This comprehensive data includes room rates, rate plans, and meal plans from more than 100 sources, including brand.com. The RoomRatesAPI stands out for its flexibility, accuracy, and modern approach to delivering data.
The RoomRatesAPI follows the principles of REST offering a structured and intuitive approach to accessing its functionalities. The API utilizes resource-oriented URLs, providing predictable endpoints for easy navigation and interaction. Requests to the API are made using well-defined request bodies, predominantly in JSON format. Responses from the API are JSON-encoded, aligning with standard HTTP response codes, authentication methods, and HTTP verbs.
The RoomRatesAPI encompasses various endpoints, categorized into different modules to support specific functionalities:
Authentication: This module focuses on gaining access to the API, providing secure authentication mechanisms to ensure authorized usage.
Account: Users can retrieve basic information about their call settings, such as account details and configurations.
Hotel Information: This module allows users to search for and retrieve information about hotels they wish to track. Users can obtain details about each hotel's sources and track them accordingly.
Rate Shop: Users can create templates that group hotels and define specific call parameters. These templates, known as Rate Shops, can be called on demand or linked to schedules for automated data delivery.
Rates: Users can retrieve rates using either granular calls or by utilizing a previously defined Rate Shop. This functionality enables users to obtain accurate and specific rate data based on their requirements.
Schedules: Users can manage data delivery schedules, defining when and how often they want to receive rate data updates.
Hooks: This module allows users to define web hooks, enabling direct data delivery to their specified endpoints in real-time.
References: Users can retrieve data related to various dependencies, such as reference information for hotels, locations, and other relevant data.
Time Zone: All timestamps and time-related values returned by the API are in Coordinated Universal Time (UTC).
By utilizing our RoomRatesAPI, hotels and travel tech companies can access comprehensive and reliable data, empowering them to make informed decisions in a dynamic market. The API offers flexibility, efficiency, and a wide range of functionalities to support the evolving needs of the hotel industry.
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
Authorization
Each request to the RatesAPI must be authenticated with an access token. You can obtain this token by logging in with the credentials provided in your RatesAPI packet. The access token is valid for 24 hours from the time of generation.
The access token must be included in the 'Authorization' header, as shown in the example below: If your access token is A90324XXZUZUgpO0dd6npHcM83CJ..., every request should include the following header: Authorization: Bearer A90324XXZUZUgpO0dd6npHcM83CJ...
Authorizing Requests on This Page
When making requests through the Swagger Explorer, the Access Token will be automatically added to the Authorization Header. The token should appear in the textbox located at the top-right corner of the page. If this does not occur automatically, you can manually copy the access token obtained via the POST/authtoken method and paste it into the textbox.
Usage Workflow
- HTTP Authentication, scheme: bearer Please enter a valid token
Authentication
Code samples
# You can also use wget
curl -X POST /authtoken \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /authtoken HTTP/1.1
Content-Type: application/json
Accept: application/json
const inputBody = `{
"username": "string",
"password": "string"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/authtoken',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/authtoken',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/authtoken', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/authtoken', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/authtoken");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/authtoken", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /authtoken
Implementation Notes
This endpoint authenticates the validity of a username and password combination. A valid token will be generated if the authentication is successful. Use the username and password provided to you in your RatesAPI packet.
Mandatory fields:
- username
- password
Body parameter
{
"username": "string",
"password": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | LoginUserReq | false | none |
Example responses
200 Response
{
"access_token": "string",
"token_type": "string",
"expires_in": 0,
"userName": "string",
".issued": "string",
".expires": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful retrieval of user information. | userresp |
400 | Bad Request | Invalid grant type. | None |
401 | Unauthorized | Authentication failed or account validity expired. | None |
500 | Internal Server Error | Internal server error. | None |
Account
Get Credits
Code samples
# You can also use wget
curl -X GET /credits \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /credits HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/credits", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/credits',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/credits', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/credits', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/credits");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/credits", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /credits
Implementation Notes
This method retrieves the call limitations associated with your account. These limitations are defined by the commercial terms of your account,
which were established when the account was created and may be updated to reflect any changes in those terms.
Parameters:
- validtill: This parameter indicates the expiration or "valid till" date for your account.
- calls: This parameter retrieves the maximum number of calls allowed on your account over various time periods (per second, minute, hour, day, week, or month).
- pullsperday, rateshops, horizonmax, and schedules refer to the maximum permissible limits for these specific features on your account.
Example responses
200 Response
{
"validtill": "2019-08-24",
"calls": {
"monthly": 0,
"weekly": 0,
"daily": 0,
"hourly": 0,
"minute": 0,
"second": 0
},
"pullsperday": 0,
"rateshops": {
"allowed": 0,
"used": 0,
"available": 0
},
"horizonmax": 0,
"schedules": {
"allowed": 0,
"used": 0,
"available": 0
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | credit |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
References
Get Currencies
Code samples
# You can also use wget
curl -X GET /currencies \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /currencies HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/currencies", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/currencies',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/currencies', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/currencies', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/currencies");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/currencies", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /currencies
Implementation Notes
This API call returns a list of supported currencies along with the acceptable format for the RatesAPI. The currency code is used when passing the currency parameter in the /rateshop method to specify the currency.
Example responses
200 Response
{
"currencycode": "string",
"currencyname": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | currencyresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Get Countries
Code samples
# You can also use wget
curl -X GET /countries \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /countries HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/countries", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/countries',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/countries', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/countries', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/countries");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/countries", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /countries
Implementation Notes
This API call returns a list of supported country names along with the acceptable format for the RatesAPI. It is used in the /hotels method when specifying the country parameter while searching for a specific hotel.
Example responses
200 Response
["string"]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | countryresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Get Sources
Code samples
# You can also use wget
curl -X GET /sources \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /sources HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/sources", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/sources',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/sources', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/sources', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/sources");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/sources", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /sources
Implementation Notes
This API call returns a list of available sources along with the unique identifier assigned to each in the RatesAPI. This enables you to specify a particular source ID when creating a RateShop.
Example responses
200 Response
{
"websitecode": 0,
"websitename": "string",
"url": "string",
"channeltype": "string",
"snapshotavailable": true
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | sourceresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Get Room Types
Code samples
# You can also use wget
curl -X GET /roomtypes \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /roomtypes HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/roomtypes", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/roomtypes',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/roomtypes', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/roomtypes', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/roomtypes");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/roomtypes", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /roomtypes
Implementation Notes
This API call returns a list of room type categories along with the unique identifier assigned to each in the RatesAPI. The API maps source-specific room types into broader categories for comparison purposes.
Example responses
200 Response
{
"code": 0,
"desc": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | typeresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Get Meal Plans
Code samples
# You can also use wget
curl -X GET /mealplans \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /mealplans HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/mealplans", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/mealplans',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/mealplans', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/mealplans', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/mealplans");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/mealplans", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /mealplans
Implementation Notes
This API call returns a list of meal plan categories along with the unique identifier assigned to each in the RatesAPI. The API maps source-specific meal plans into broader categories for comparison.
Example responses
200 Response
{
"code": 0,
"desc": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | typeresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Get Conditions
Code samples
# You can also use wget
curl -X GET /conditions \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /conditions HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/conditions", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/conditions',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/conditions', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/conditions', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/conditions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/conditions", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /conditions
Implementation Notes
This API call returns a list of booking condition categories along with the unique identifier assigned to each in the RatesAPI. The API maps source-specific conditions into broader categories for comparison.
Example responses
200 Response
{
"code": 0,
"desc": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | typeresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Get Status Codes
Code samples
# You can also use wget
curl -X GET /statuscodes \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /statuscodes HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/statuscodes", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/statuscodes',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/statuscodes', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/statuscodes', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/statuscodes");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/statuscodes", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /statuscodes
Implementation Notes
This API call returns a list of status codes you may receive as a response when making any requests in the RatesAPI.
Example responses
200 Response
{
"code": 0,
"desc": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | typeresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Get POS
Code samples
# You can also use wget
curl -X GET /pos \
-H 'Authorization: Bearer {access-token}'
GET /pos HTTP/1.1
const headers = {
Authorization: "Bearer {access-token}",
};
fetch("/pos", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/pos',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/pos', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/pos', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/pos");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/pos", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /pos
Implementation Notes
This API provides a list of POS options available for different geographic regions.
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | None |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Rates
Create Hotelrates
Code samples
# You can also use wget
curl -X POST /hotelrates \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /hotelrates HTTP/1.1
Content-Type: application/json
Accept: application/json
const inputBody = `{
"hotelcode": 2005,
"checkin": "2019-08-24",
"checkout": "2019-08-24",
"guests": 1,
"currency": "USD",
"websitecode": 2,
"pos": 0,
"snapshot": false
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/hotelrates',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/hotelrates',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/hotelrates', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/hotelrates', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/hotelrates");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/hotelrates", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /hotelrates
Implementation Notes
This API call allows you to make a granular request to receive the rates data for a single day. It accepts the parameters listed below and retrieves the rate data. Due to its limitations, this API should be used exclusively for demo or quality control purposes.
Parameters:
- hotelcode - The code for the hotel to be shopped.
- checkin - The desired check-in date.
- checkout - The desired check-out date.
- guests - The number of guests occupying the room.
- currency - The preferred currency for the rate.
- websitecode - The source ID assigned to the source being shopped.
- pos - This parameter determines the region from which the call is made. By default, use '0'. If a specific POS is required, please contact our support team.
{
"hotelcode": 30388,
"checkin": "2024-09-25",
"checkout": "2024-09-26",
"guests": 1,
"currency": "USD",
"websitecode": 1,
"pos": 0,
"snapshot": false
}
Body parameter
{
"hotelcode": 2005,
"checkin": "2019-08-24",
"checkout": "2019-08-24",
"guests": 1,
"currency": "USD",
"websitecode": 2,
"pos": 0,
"snapshot": false
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ratereq | false | none |
Example responses
200 Response
{
"hotelcode": 0,
"websitecode": 0,
"dtcollected": "2019-08-24",
"ratedate": "2019-08-24",
"los": 0,
"guests": 0,
"roomtype": "string",
"onsiterate": 0,
"netrate": 0,
"currency": "string",
"ratedescription": "string",
"sourceurl": "string",
"roomamenities": "string",
"maxoccupancy": 0,
"ispromo": true,
"closed": "string",
"checkin": "2019-08-24",
"checkout": "2019-08-24",
"discount": 0,
"promoname": "string",
"searchkeyword": "string",
"roomtypecode": 0,
"conditionscode": 0,
"mealplancode": 0,
"taxstatus": 0,
"taxtype": "string",
"taxamount": 0,
"pos": 0,
"requestorigin": "string",
"israteperstay": "string",
"status_code": 0,
"snapshoturl": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | rateresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
429 | Too Many Requests | You have exceeded your access limit | None |
500 | Internal Server Error | Internal server error | None |
Create Runrateshop
Code samples
# You can also use wget
curl -X POST /runrateshop \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /runrateshop HTTP/1.1
Content-Type: application/json
Accept: application/json
const inputBody = `{
"rateshopid": 0,
"startdate": "2019-08-24",
"horizon": 0,
"horizonexpression": "string",
"sources": [
0
],
"hotelcodes": [
0
],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [
0
]
}
]
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/runrateshop',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/runrateshop',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/runrateshop', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/runrateshop', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/runrateshop");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/runrateshop", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /runrateshop
Implementation Notes
This API call executes the RateShop to retrieve rates based on the configuration parameters defined during the RateShop creation. The only mandatory parameter is the rateshop ID. While all request parameters can be set at the time of RateShop creation, you may opt to define certain parameters, such as the horizon, hotel code, source code, and comp sets, at runtime. Even if these parameters were set during creation, they can still be overridden during execution.
queueid - A unique ID generated upon successful execution of the RateShop, used to check the queue status and retrieve rate data via the API.
approximatetime - The estimated time to process the RateShop, in seconds.
Body parameter
{
"rateshopid": 0,
"startdate": "2019-08-24",
"horizon": 0,
"horizonexpression": "string",
"sources": [0],
"hotelcodes": [0],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [0]
}
]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | runrateshopreq | false | none |
Example responses
200 Response
{
"queueid": 0,
"approximatetime": "string",
"status_code": 0,
"status_msg": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | ratepullresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Get Runstatus
Code samples
# You can also use wget
curl -X GET /runstatus/{queueid} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /runstatus/{queueid} HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/runstatus/{queueid}", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/runstatus/{queueid}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/runstatus/{queueid}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/runstatus/{queueid}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/runstatus/{queueid}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/runstatus/{queueid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /runstatus/{queueid}
Implementation Notes
This API call retrieves the status of a run rateshop request by accepting the queue ID as an input parameter.
The available status codes are:
- 1 - In Progress
- 2 - Completed
- 3 - Terminated with Errors
- 4 - Terminated, No Credits Available
- 5 - Rerun In Progress
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
queueid | path | integer(int32) | true | none |
Example responses
200 Response
{
"queueid": 0,
"rateshopid": 0,
"statuscode": 0,
"statusmessage": "string",
"creditused": 0,
"totalrows": 0
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | runstatusresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Create Ratesbyqueue
Code samples
# You can also use wget
curl -X POST /ratesbyqueue/{queueid} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /ratesbyqueue/{queueid} HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/ratesbyqueue/{queueid}", {
method: "POST",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/ratesbyqueue/{queueid}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/ratesbyqueue/{queueid}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/ratesbyqueue/{queueid}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/ratesbyqueue/{queueid}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/ratesbyqueue/{queueid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /ratesbyqueue/{queueid}
Implementation Notes
This API call enables you to retrieve rate data once the queue has completed, using the queue ID as an input parameter.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
queueid | path | integer(int32) | true | none |
Example responses
200 Response
{
"queueid": 0,
"hotelcode": 0,
"subjecthotelcode": 0,
"websitecode": 0,
"dtcollected": "2019-08-24",
"ratedate": "2019-08-24",
"los": 0,
"guests": 0,
"roomtype": "string",
"onsiterate": 0,
"netrate": 0,
"currency": "string",
"ratedescription": "string",
"sourceurl": "string",
"roomamenities": "string",
"maxoccupancy": 0,
"ispromo": true,
"closed": "string",
"checkin": "2019-08-24",
"checkout": "2019-08-24",
"discount": 0,
"promoname": "string",
"searchkeyword": "string",
"roomtypecode": 0,
"conditionscode": 0,
"mealplancode": 0,
"taxstatus": 0,
"taxtype": "string",
"taxamount": 0,
"pos": 0,
"requestorigin": "string",
"israteperstay": "string",
"status_code": 0
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | ratesbyqueue |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Hotel Information
Search Hotels
Code samples
# You can also use wget
curl -X POST /hotels \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /hotels HTTP/1.1
Content-Type: application/json
Accept: application/json
const inputBody = `{
"hotelname": "",
"country": "United States Of America",
"city": "",
"state": "",
"zip": "",
"keyword": "",
"pagenumber": 0,
"pagesize": 0,
"geolocation": {
"latitude": "",
"longitude": "",
"radius": "5km"
}
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/hotels',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/hotels',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/hotels', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/hotels', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/hotels");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/hotels", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /hotels
Implementation Notes
This API call retrieves a list of all hotels available in the RatesAPI database for rate retrieval. If a hotel you wish to retrieve rate for is not listed, please send the request using POST /Hotelmaprequest endpoint. We will make efforts to add the hotel to our database within 24 to 72 business hours.
Parameters:
- hotelname: The name of the hotel.
- city: The name of the city where the hotel is located.
- state: The name of the state where the hotel is located.
- country: The name of the country where the hotel is located.
- zip: The postal code of the hotel.
- geoLocationFilter: The geographical location parameters.
- latitude: The latitude of the area.
- longitude: The longitude of the area.
- radius: The radius (in kilometers) around the specified latitude and longitude.
- Pagination: The pageNumber and pageSize parameters must be numeric values.
Mandatory Fields:
- country or geoLocationFilter
Note: Either the country or geoLocationFilter are mandatory parameters. When using geoLocationFilter, all three sub-parameters (latitude, longitude, and radius) are required. All other parameters are optional.
Body parameter
{
"hotelname": "",
"country": "United States Of America",
"city": "",
"state": "",
"zip": "",
"keyword": "",
"pagenumber": 0,
"pagesize": 0,
"geolocation": {
"latitude": "",
"longitude": "",
"radius": "5km"
}
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | hotelsearch | false | none |
Example responses
200 Response
{
"hotelcode": 0,
"hotelname": "string",
"address": "string",
"city": "string",
"state": "string",
"zip": "string",
"country": "string",
"starrating": "string",
"lat": 0,
"lng": 0
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | hotelsresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Create Hotelmaprequest
Code samples
# You can also use wget
curl -X POST /hotelmaprequest \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /hotelmaprequest HTTP/1.1
Content-Type: application/json
Accept: application/json
const inputBody = `{
"hotelname": "",
"address": "",
"city": "",
"state": "",
"country": "",
"zip": "",
"latitude": 0,
"longitude": 0,
"url": [
"string"
],
"websitecodes": [
0
]
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/hotelmaprequest',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/hotelmaprequest',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/hotelmaprequest', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/hotelmaprequest', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/hotelmaprequest");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/hotelmaprequest", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /hotelmaprequest
Implementation Notes
This method enables users to add a new hotel to the RatesAPI database if it is not already listed. Users can provide details such as the hotel name, address, geographic coordinates, and optionally include reference URLs or preferred website codes to assist with mapping. A unique requestid is automatically generated for each mapping request.
Mandatory Fields:
- hotelname
- address
- city
- state
- country
- zip
Body parameter
{
"hotelname": "",
"address": "",
"city": "",
"state": "",
"country": "",
"zip": "",
"latitude": 0,
"longitude": 0,
"url": ["string"],
"websitecodes": [0]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | newmapreq | false | none |
Example responses
200 Response
{
"requestid": 0,
"referencehotelcodes": [0],
"statuscode": 0,
"statusmsg": "string",
"approximatetime": "2019-08-24"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | newmapresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Get Maprequeststatus
Code samples
# You can also use wget
curl -X GET /maprequeststatus/{requestid} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /maprequeststatus/{requestid} HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/maprequeststatus/{requestid}", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/maprequeststatus/{requestid}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/maprequeststatus/{requestid}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/maprequeststatus/{requestid}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/maprequeststatus/{requestid}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/maprequeststatus/{requestid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /maprequeststatus/{requestid}
Implementation Notes
This endpoint returns the status of a hotel map request. It requires the requestid as an input parameter to retrieve the current status.
Status Codes:
- 1 - Queued
- 2 - Work in progress
- 3 - Completed
- 4 - Hotel exists
- 5 - Feasibility failed
- 6 - Source unavailable
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
requestid | path | integer(int32) | true | none |
Example responses
200 Response
{
"requestid": 0,
"referencehotelcodes": [0],
"statuscode": 0,
"statusmsg": "string",
"approximatetime": "2019-08-24"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | newmapresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Search by Hotel Code
Code samples
# You can also use wget
curl -X POST /hotelinfo \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /hotelinfo HTTP/1.1
Content-Type: application/json
Accept: application/json
const inputBody = `{
"hotelcode": 2005,
"hotelcodes": [
0
]
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/hotelinfo',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/hotelinfo',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/hotelinfo', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/hotelinfo', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/hotelinfo");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/hotelinfo", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /hotelinfo
Implementation Notes
This API call utilizes the hotelcode obtained from the POST/hotels endpoint to retrieve a list of sources available for a specific hotel. If a source you wish to retrieve rates for is not configured with the hotel, please send the request using POST /sourcemaprequest endpoint. We will make efforts to add the source to our database within 24 to 72 business hours.
Parameters:
- hotelcode: Retrieve information for a single hotel code.
- hotelcodes: Retrieve information for multiple hotel codes.
Mandatory Fields:
- hotelcode or hotelcodes
Body parameter
{
"hotelcode": 2005,
"hotelcodes": [0]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | hotelinfo | false | none |
Example responses
200 Response
{
"hotelcode": 0,
"hotelname": "string",
"address": "string",
"city": "string",
"state": "string",
"zip": "string",
"country": "string",
"starrating": "string",
"lat": 0,
"long": 0,
"sources": {
"websitecode": 0,
"websitename": "string",
"url": "string",
"channeltype": "string",
"snapshotavailable": true
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | hotelinforesp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Get Maprequest
Code samples
# You can also use wget
curl -X GET /maprequeststatus/{requestid} \
-H 'Authorization: Bearer {access-token}'
GET /maprequeststatus/{requestid} HTTP/1.1
const headers = {
'Authorization':'Bearer {access-token}'
};
fetch('/maprequeststatus/{requestid}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/maprequeststatus/{requestid}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/maprequeststatus/{requestid}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/maprequeststatus/{requestid}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/maprequeststatus/{requestid}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/maprequeststatus/{requestid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /maprequeststatus/{requestid}
This API endpoint is used to check the status of a mapping request made through the /hotelmaprequest method. The request ID is passed as the input parameter, and the response structure is identical to the response received from the /hotelmaprequest method.
By using this method, users can track the progress and current status of their mapping request.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
requestid | path | integer(int32) | true | none |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | None |
400 | Bad Request | Error | None |
401 | Unauthorized | Authorization has been denied for this request | None |
Create Sourcemap
Code samples
# You can also use wget
curl -X GET /sourcemaprequest/{requestid} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /sourcemaprequest/{requestid} HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/sourcemaprequest/{requestid}", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/sourcemaprequest/{requestid}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/sourcemaprequest/{requestid}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/sourcemaprequest/{requestid}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/sourcemaprequest/{requestid}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/sourcemaprequest/{requestid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /sourcemaprequest/{requestid}
Implementation Notes
This endpoint returns the status of a source map request. It requires the requestid as an input parameter to retrieve the current status.
Status Codes:
- 1 - Queued
- 2 - Work in progress
- 3 - Completed
- 4 - Source already exists in the system and websitecode is available
- 5 - Not Feasible
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
requestid | path | integer(int32) | true | none |
Example responses
200 Response
{
"requestid": 0,
"hotelcode": 0,
"sources": [0],
"urls": ["string"],
"status": 0,
"approximatetime": 0,
"channeltype": ["string"]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | sourcemapresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Rateshop
Create Rateshop
Code samples
# You can also use wget
curl -X POST /rateshop \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /rateshop HTTP/1.1
Content-Type: application/json
Accept: application/json
const inputBody = `{
"rateshopname": "string",
"los": 0,
"occupancy": 0,
"currency": "string",
"currencies": [
"string"
],
"fetchtype": 0,
"horizon": 0,
"hotelcodes": [
0
],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [
0
]
}
],
"sources": [
0
],
"horizonexpression": "2-10, 11, 13, 15, 20-25",
"pos": 0,
"horizonrange": "2025/08/18,2025/08/20-2025/08/25",
"directsource": 0
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/rateshop',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/rateshop',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/rateshop', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/rateshop', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/rateshop");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/rateshop", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /rateshop
Implementation Notes
This endpoint allows you to create a rate shop, which is a collection of hotel codes, source codes and related parameters: Length of Stay (LOS), Occupancy, Horizon, POS and Currency, for which rate information is requested. The maximum value allowed for the horizon is 365 days. Use any one of the horizon fields listed below.
Parameters:
- rateshopname - Your custom name for the RateShop
- los - Number of nights for the rate requested. Example: A LOS of 5 means the rate is for a 5-night stay
- occupancy - Room occupancy for the rate requested. Example: An occupancy of 2 means the rate is for a room that accommodates 2 people.
- currency - The currency in which the rate is retrieved. If the source does not offer it directly, we will convert from the available currency using the appropriate exchange rate. Example: To fetch rates in the United States Dollar, set the currency to USD.
- horizon - The number of consecutive days from the call date for data retrieval. Example: A horizon of 30 days will retrieve the rates from start date to the next 30 days in future.
- hotelcodes - The hotel codes to be included in the rateshop.
- compsets - Defines the comp set, consisting of the subject hotel and its competitors
- hotelcode – Subject hotel code to include in the rateshop
- competitorhotelcodes - Competitor hotel codes to include in the rateshop
- sources - The source codes to be included in the rateshop.
- horizonexpression - Customizable horizon for specific days in the future. Example: 2-10, 15, 20-25 retrieves data from days 2 to 10, the 15th day, and days 20 to 25 from the current date.
- pos - This parameter decides the rateshop call be made from which region to extract rates. POS for various regions - Americas – 0, Europe – 2, Asia - 1.
- horizonrange - A range of fixed dates for which the data is retrieved. Example: '2025/08/01-2025/08/31' retrieves data for the entire month of August 2025.
- directsource - Indicates whether a direct source is required. A value of '0' means it is not required, while '1' means it is required.
Mandatory Fields:
- rateshopname
- los
- occupancy
- currency
- horizonexpression or horizon or horizonrange
- hotelcodes or compsets
- sources
- pos
Body parameter
{
"rateshopname": "string",
"los": 0,
"occupancy": 0,
"currency": "string",
"currencies": ["string"],
"fetchtype": 0,
"horizon": 0,
"hotelcodes": [0],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [0]
}
],
"sources": [0],
"horizonexpression": "2-10, 11, 13, 15, 20-25",
"pos": 0,
"horizonrange": "2025/08/18,2025/08/20-2025/08/25",
"directsource": 0
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | newrateshop | false | none |
Example responses
200 Response
{
"rateshopid": 0,
"rateshopname": "string",
"los": 0,
"occupancy": 0,
"currency": "string",
"currencies": ["string"],
"fetchtype": 0,
"horizon": 0,
"hotelcodes": [0],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [0]
}
],
"sources": [0],
"horizonexpression": "string",
"pos": 0
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | rateshopinfo |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Get Rateshop List
Code samples
# You can also use wget
curl -X GET /rateshoplist \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /rateshoplist HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/rateshoplist", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/rateshoplist',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/rateshoplist', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/rateshoplist', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/rateshoplist");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/rateshoplist", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /rateshoplist
Implementation Notes
This API call allows you to retrieve the list of active rate shops created in your account along with their configuration details.
Example responses
200 Response
{
"rateshopid": 0,
"rateshopname": "string",
"los": 0,
"occupancy": 0,
"currency": "string",
"currencies": ["string"],
"fetchtype": 0,
"horizon": 0,
"hotelcodes": [0],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [0]
}
],
"sources": [0],
"horizonexpression": "string",
"pos": 0
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | rateshopinfo |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
404 | Not Found | Record Not Found | None |
500 | Internal Server Error | Internal server error | None |
Get Rateshop
Code samples
# You can also use wget
curl -X GET /rateshop/{rateshopid} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /rateshop/{rateshopid} HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/rateshop/{rateshopid}", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/rateshop/{rateshopid}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/rateshop/{rateshopid}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/rateshop/{rateshopid}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/rateshop/{rateshopid}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/rateshop/{rateshopid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /rateshop/{rateshopid}
Implementation Notes
This API endpoint takes the rateshop ID as an input parameter and returns the configuration details associated with that rateshop ID.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
rateshopid | path | integer(int32) | true | none |
Example responses
200 Response
{
"rateshopid": 0,
"rateshopname": "string",
"los": 0,
"occupancy": 0,
"currency": "string",
"currencies": ["string"],
"fetchtype": 0,
"horizon": 0,
"hotelcodes": [0],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [0]
}
],
"sources": [0],
"horizonexpression": "string",
"pos": 0
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | rateshopinfo |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Code samples
# You can also use wget
curl -X DELETE /rateshop/{rateshopid} \
-H 'Authorization: Bearer {access-token}'
DELETE /rateshop/{rateshopid} HTTP/1.1
const headers = {
Authorization: "Bearer {access-token}",
};
fetch("/rateshop/{rateshopid}", {
method: "DELETE",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.delete '/rateshop/{rateshopid}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('/rateshop/{rateshopid}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('DELETE','/rateshop/{rateshopid}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/rateshop/{rateshopid}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "/rateshop/{rateshopid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Update Rateshop
Code samples
# You can also use wget
curl -X PUT /rateshop/{rateshopid} \
-H 'Content-Type: application/json' \
-H 'Accept: text/plain' \
-H 'Authorization: Bearer {access-token}'
PUT /rateshop/{rateshopid} HTTP/1.1
Content-Type: application/json
Accept: text/plain
const inputBody = '{
"rateshopname": "string",
"los": 0,
"occupancy": 0,
"currency": "string",
"currencies": [
"string"
],
"fetchtype": 0,
"horizon": 0,
"hotelcodes": [
0
],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [
0
]
}
],
"sources": [
0
],
"horizonexpression": "2-10, 11, 13, 15, 20-25",
"pos": 0
}';
const headers = {
'Content-Type':'application/json',
'Accept':'text/plain',
'Authorization':'Bearer {access-token}'
};
fetch('/rateshop/{rateshopid}',
{
method: 'PUT',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'text/plain',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.put '/rateshop/{rateshopid}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'text/plain',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('/rateshop/{rateshopid}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'text/plain',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('PUT','/rateshop/{rateshopid}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/rateshop/{rateshopid}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"text/plain"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "/rateshop/{rateshopid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /rateshop/{rateshopid}
This API call enables the user to update the details of an existing RateShop associated with the specified rateshopid. It allows for modifications to be made to the RateShop's settings, parameters, or any other relevant information, providing flexibility in managing and adjusting the configuration of the rateshop as needed.
Body parameter
{
"rateshopname": "string",
"los": 0,
"occupancy": 0,
"currency": "string",
"currencies": [
"string"
],
"fetchtype": 0,
"horizon": 0,
"hotelcodes": [
0
],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [
0
]
}
],
"sources": [
0
],
"horizonexpression": "2-10, 11, 13, 15, 20-25",
"pos": 0
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
rateshopid | path | integer(int32) | true | none |
body | body | newrateshop | false | none |
Example responses
200 Response
{"error":false,"rateshop":{"rateshopname":"string","los":0,"occupancy":0,"currency":"string","currencies":["string"],"fetchtype":0,"horizon":0,"hotelcodes":0,"compsets":{"hotelcode":0,"competitorhotelcodes":[0]},"sources":0,"horizonexpression":["string"],"pos":0}}
{
"error": false,
"rateshop": {
"rateshopname": "string",
"los": 0,
"occupancy": 0,
"currency": "string",
"currencies": [
"string"
],
"fetchtype": 0,
"horizon": 0,
"hotelcodes": 0,
"compsets": {
"hotelcode": 0,
"competitorhotelcodes": [
0
]
},
"sources": 0,
"horizonexpression": [
"string"
],
"pos": 0
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | RateshopExampleValues |
400 | Bad Request | Error | None |
401 | Unauthorized | Authorization has been denied for this request | None |
429 | Too Many Requests | You have exceeded your access limit | None |
Delete Rateshop
DELETE /rateshop/{rateshopid}
Implementation Notes
This API call enables you to delete a RateShop from your account. It accepts the rateshop ID as a parameter and returns the status of the request.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
rateshopid | path | integer(int32) | true | none |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successfully deleted | None |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Schedules
Create Schedule
Code samples
# You can also use wget
curl -X POST /schedule \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /schedule HTTP/1.1
Content-Type: application/json
Accept: application/json
const inputBody = `{
"schedulename": "X-Mas",
"rateshopid": 0,
"year": "*",
"month": "*",
"dow": "*",
"day": "*",
"hour": "1",
"minute": "*",
"seconds": "*",
"status": 1,
"startdate": "2019-08-24",
"enddate": "2019-08-24"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/schedule',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/schedule',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/schedule', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/schedule', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/schedule");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/schedule", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /schedule
Implementation Notes
This endpoint allows you to create custom schedules for executing rate shops at specified dates and times.
Parameters:
- Year - Specifies the years for scheduling.
- " * " - No specific year
- "2016" - Only in 2016
- "2016,2017" - In 2016 and 2017
- Month - Specifies the months for scheduling.
- " * " - All 12 months
- "1": January
- "2": February
- "3": March
- "4": April
- "5": May
- "6": June
- "7": July
- "8": August
- "9": September
- "10": October
- "11": November
- "12": December
- "1,3": January and March
- Day of Week - Specifies the days of the week for scheduling.
- " * ": All days
- "1": Monday
- "2": Tuesday
- "3": Wednesday
- "4": Thursday
- "5": Friday
- "6": Saturday
- "0": Sunday
- "1,3,5": Monday, Wednesday, and Friday
- Day - Specifies the days of the month for scheduling.
- " * ": All days
- "1-31": Specific days or ranges within the month (e.g., "1,3,5")
- Hour Specifies the hour of the day (0-23) when the review shop is triggered.
- " * ": Run the shop hourly
- Minute - Specifies the minute (0-59) within the hour when the review shop is triggered.
- Seconds Specifies the second (0-59) within the minute when the review shop is triggered
- Status - Indicates whether the schedule is active or inactive.
- 1: Active
- 0: Inactive
- startdate - Specifies when the schedule should start.
- enddate - Specifies when the schedule should end. If left undefined, the schedule will run indefinitely.
Mandatory Fields:
- schedulename
- rateshopId
- year
- month
- dow
- day
- hour
- minute
- seconds
- startdate
Body parameter
{
"schedulename": "X-Mas",
"rateshopid": 0,
"year": "*",
"month": "*",
"dow": "*",
"day": "*",
"hour": "1",
"minute": "*",
"seconds": "*",
"status": 1,
"startdate": "2019-08-24",
"enddate": "2019-08-24"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | newschedule | false | none |
Example responses
200 Response
{
"scheduleid": 0,
"schedulename": "string",
"rateshopid": 0,
"year": "string",
"month": "string",
"dow": "string",
"day": "string",
"hour": "string",
"minute": "string",
"seconds": "string",
"status": 0,
"startdate": "2019-08-24",
"enddate": "2019-08-24"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | schedule |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Get Schedule List
Code samples
# You can also use wget
curl -X GET /schedulelist \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /schedulelist HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/schedulelist", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/schedulelist',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/schedulelist', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/schedulelist', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/schedulelist");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/schedulelist", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /schedulelist
Implementation Notes
This API call retrieves the list of active schedules defined in your account.
Example responses
200 Response
{
"scheduleid": 0,
"schedulename": "string",
"rateshopid": 0,
"year": "string",
"month": "string",
"dow": "string",
"day": "string",
"hour": "string",
"minute": "string",
"seconds": "string",
"status": 0,
"startdate": "2019-08-24",
"enddate": "2019-08-24"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | schedule |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Get Schedule
Code samples
# You can also use wget
curl -X GET /schedule/{scheduleid} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /schedule/{scheduleid} HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/schedule/{scheduleid}", {
method: "GET",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/schedule/{scheduleid}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/schedule/{scheduleid}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/schedule/{scheduleid}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/schedule/{scheduleid}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/schedule/{scheduleid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /schedule/{scheduleid}
Implementation Notes
This API call retrieves the configuration details of a specific schedule based on the provided schedule ID.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
scheduleid | path | integer(int32) | true | none |
Example responses
200 Response
{
"scheduleid": 0,
"schedulename": "string",
"rateshopid": 0,
"year": "string",
"month": "string",
"dow": "string",
"day": "string",
"hour": "string",
"minute": "string",
"seconds": "string",
"status": 0,
"startdate": "2019-08-24",
"enddate": "2019-08-24"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | schedule |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Delete Schedule
Code samples
# You can also use wget
curl -X DELETE /schedule/{scheduleid} \
-H 'Authorization: Bearer {access-token}'
DELETE /schedule/{scheduleid} HTTP/1.1
const headers = {
'Authorization':'Bearer {access-token}'
};
fetch('/schedule/{scheduleid}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.delete '/schedule/{scheduleid}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('/schedule/{scheduleid}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('DELETE','/schedule/{scheduleid}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/schedule/{scheduleid}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "/schedule/{scheduleid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /schedule/{scheduleid}
This API call deletes a schedule from your account. It accepts the scheduleid as a parameter and returns the status of the request. It allows you to remove a specific schedule from your account based on its unique identifier.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
scheduleid | path | integer(int32) | true | none |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | None |
400 | Bad Request | Error | None |
401 | Unauthorized | Authorization has been denied for this request | None |
429 | Too Many Requests | You have exceeded your access limit | None |
Update Schedule
Code samples
# You can also use wget
curl -X PUT /schedule/{scheduleid} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
PUT /schedule/{scheduleid} HTTP/1.1
Content-Type: application/json
Accept: application/json
const inputBody = `{
"schedulename": "X-Mas",
"rateshopid": 0,
"year": "*",
"month": "*",
"dow": "*",
"day": "*",
"hour": "1",
"minute": "*",
"seconds": "*",
"status": 1,
"startdate": "2019-08-24",
"enddate": "2019-08-24"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/schedule/{scheduleid}',
{
method: 'PUT',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.put '/schedule/{scheduleid}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('/schedule/{scheduleid}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('PUT','/schedule/{scheduleid}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/schedule/{scheduleid}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "/schedule/{scheduleid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /schedule/{scheduleid}
Implementation Notes
This API call enables you to modify a schedule configuration by providing the scheduleid as an input.
Body parameter
{
"schedulename": "X-Mas",
"rateshopid": 0,
"year": "*",
"month": "*",
"dow": "*",
"day": "*",
"hour": "1",
"minute": "*",
"seconds": "*",
"status": 1,
"startdate": "2019-08-24",
"enddate": "2019-08-24"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
scheduleid | path | integer(int32) | true | none |
body | body | newschedule | false | none |
Example responses
200 Response
{
"scheduleid": 0,
"schedulename": "string",
"rateshopid": 0,
"year": "string",
"month": "string",
"dow": "string",
"day": "string",
"hour": "string",
"minute": "string",
"seconds": "string",
"status": 0,
"startdate": "2019-08-24",
"enddate": "2019-08-24"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | schedule |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Code samples
# You can also use wget
curl -X DELETE /schedule/{scheduleid} \
-H 'Authorization: Bearer {access-token}'
DELETE /schedule/{scheduleid} HTTP/1.1
const headers = {
Authorization: "Bearer {access-token}",
};
fetch("/schedule/{scheduleid}", {
method: "DELETE",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.delete '/schedule/{scheduleid}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('/schedule/{scheduleid}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('DELETE','/schedule/{scheduleid}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/schedule/{scheduleid}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "/schedule/{scheduleid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /schedule/{scheduleid}
Implementation Notes
This endpoint enables you to delete an existing schedule by providing the schedule ID as input and returns the status of the request.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
scheduleid | path | integer(int32) | true | none |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | None |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Create Schedulelog
Code samples
# You can also use wget
curl -X POST /schedulelog \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /schedulelog HTTP/1.1
Content-Type: application/json
Accept: application/json
const inputBody = `{
"scheduleid": 0,
"startdate": "2019-08-24",
"enddate": "2019-08-24"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/schedulelog',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/schedulelog',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/schedulelog', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/schedulelog', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/schedulelog");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/schedulelog", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /schedulelog
Implementation Notes
This API call allows you to retrieve the schedule log, which includes execution date and time, the corresponding queue ID, and the username of active schedules by providing the schedule ID as an input parameter. By default, it retrieves schedules executed on the current date, but you can filter the results using the startdate and enddate parameters.
Body parameter
{
"scheduleid": 0,
"startdate": "2019-08-24",
"enddate": "2019-08-24"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | schedulelogreq | false | none |
Example responses
200 Response
{
"scheduleid": 0,
"rateshopid": 0,
"queueid": 0,
"executedat": "2019-08-24"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | schedulelog |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Hooks
Create Queuealerts
Code samples
# You can also use wget
curl -X POST /hooks/queuealerts \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /hooks/queuealerts HTTP/1.1
Content-Type: application/json
Accept: application/json
const inputBody = `{
"endpoint": "string",
"authtype": "string",
"username": "string",
"password": "string",
"token": "string"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/hooks/queuealerts',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/hooks/queuealerts',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/hooks/queuealerts', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/hooks/queuealerts', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/hooks/queuealerts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/hooks/queuealerts", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /hooks/queuealerts
Implementation Notes
This API call uses a Web Hook to deliver the queue status to a designated endpoint you specify. If a hook is defined, the status—whether successful completion or termination due to an error—will be sent to your endpoint.
Authentication types and its descriptions:
- None - No authentication required. Users can access resources without providing any credentials.
- Basic - Username and password required. Users must provide their credentials for verification.
- Bearer - Token-based authentication. Users present a valid access token to access resources.
- Header - API key in header: API key is provided as a specific header value (e.g., "X-Api-Key").
This hook will POST the following JSON schema to your endpoint.
{
"queueid": 31570988,
"rateshopid": 28719364,
"statuscode": 2,
"statusmessage": "Completed",
"creditused": 240,
"totalrows": 1003
}
Body parameter
{
"endpoint": "string",
"authtype": "string",
"username": "string",
"password": "string",
"token": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ratehookreq | false | none |
Example responses
200 Response
{
"requestid": "string",
"message": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | ratehookresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Create Rate
Code samples
# You can also use wget
curl -X POST /hooks/rate \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /hooks/rate HTTP/1.1
Content-Type: application/json
Accept: application/json
const inputBody = `{
"endpoint": "string",
"authtype": "string",
"username": "string",
"password": "string",
"token": "string"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/hooks/rate',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/hooks/rate',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/hooks/rate', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/hooks/rate', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/hooks/rate");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/hooks/rate", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /hooks/rate
Implementation Notes
This API call uses a WebHook to deliver the rate data generated by your RateShop to a designated endpoint you specify. If a hook is defined, the rates will be automatically sent to this endpoint once the queue is completed.
Authentication types and its descriptions:
- None - No authentication required. Users can access resources without providing any credentials.
- Basic - Username and password required. Users must provide their credentials for verification.
- Bearer - Token-based authentication. Users present a valid access token to access resources.
- Header - API key in header: API key is provided as a specific header value (e.g., "X-Api-Key").
This hook will POST the following JSON schema to your endpoint.
Body parameter
{
"endpoint": "string",
"authtype": "string",
"username": "string",
"password": "string",
"token": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ratehookreq | false | none |
Example responses
200 Response
{
"requestid": "string",
"message": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | ratehookresp |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Realtime
Create Shoprealtime
Code samples
# You can also use wget
curl -X POST /shoprealtime \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /shoprealtime HTTP/1.1
Content-Type: application/json
Accept: application/json
const inputBody = `{
"rateshopid": 0,
"startdate": "2019-08-24",
"horizon": 0,
"horizonexpression": "string",
"sources": 0,
"hotelcodes": [
0
],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [
0
]
}
]
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/shoprealtime',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/shoprealtime',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/shoprealtime', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/shoprealtime', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/shoprealtime");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/shoprealtime", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /shoprealtime
Body parameter
{
"rateshopid": 0,
"startdate": "2019-08-24",
"horizon": 0,
"horizonexpression": "string",
"sources": 0,
"hotelcodes": [0],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [0]
}
]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | shoprealtimerequest | false | none |
Example responses
200 Response
{
"queueid": 0
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | shoprealtimeresponse |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
429 | Too Many Requests | You have exceeded your access limit | None |
500 | Internal Server Error | Internal server error | None |
Create Realtimeratesbyqueue
Code samples
# You can also use wget
curl -X POST /realtimeratesbyqueue/{queueid} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
POST /realtimeratesbyqueue/{queueid} HTTP/1.1
Accept: application/json
const headers = {
Accept: "application/json",
Authorization: "Bearer {access-token}",
};
fetch("/realtimeratesbyqueue/{queueid}", {
method: "POST",
headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post '/realtimeratesbyqueue/{queueid}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('/realtimeratesbyqueue/{queueid}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','/realtimeratesbyqueue/{queueid}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/realtimeratesbyqueue/{queueid}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/realtimeratesbyqueue/{queueid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /realtimeratesbyqueue/{queueid}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
queueid | path | integer(int32) | true | none |
Example responses
200 Response
{
"queueId": 0,
"rateshopId": 0,
"hotelCode": 0,
"subjectHotelCode": 0,
"websiteCode": 0,
"dtCollected": "2019-08-24",
"checkIn": "2019-08-24",
"checkOut": "2019-08-24",
"los": 0,
"guests": 0,
"roomType": "string",
"onsiteRate": 0.1,
"netRate": 0.1,
"currency": "string",
"roomDescription": "string",
"ratePlan": "string",
"mealPlan": "string",
"roomAmenities": "string",
"occupancy": 0,
"sourceUrl": "string",
"isPromo": true,
"closed": true,
"discount": 0.1,
"promoName": "string",
"roomTypeCode": 0,
"ratePlanCode": 0,
"mealPlanCode": 0,
"statusCode": 0,
"taxStatus": 0,
"taxType": "string",
"taxAmount": 0.1,
"pos": 0,
"isRatePerStay": true,
"minStay": 0,
"optionalExtras": "string",
"payPlan": "string",
"channelType": "string",
"isRealtime": true
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | realtimeratesbyqueueresponse |
202 | Accepted | Accepted | None |
400 | Bad Request | Bad Request | None |
401 | Unauthorized | Authentication Failed or Account validity expired | None |
500 | Internal Server Error | Internal server error | None |
Schemas
HooksRateExamplevalue
{
"endpoint": "",
"authtype": "",
"username": "",
"password": "",
"token": ""
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
endpoint | string | false | none | none |
authtype | string | false | none | none |
username | string | false | none | none |
password | string | false | none | none |
token | string | false | none | none |
HotelExamplevalues
{
"hotelname": "",
"country": "United States of America",
"city": "",
"state": "",
"zip": "",
"keyword": ""
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelname | string | false | none | none |
country | string | false | none | none |
city | string | false | none | none |
state | string | false | none | none |
zip | string | false | none | none |
keyword | string | false | none | none |
HotelInfoReq
{
"hotelcode": 0,
"hotelcodes": [0]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelcode | integer(int32)¦null | false | none | none |
hotelcodes | [integer]¦null | false | none | none |
HotelMapRequestExampleValues
{
"hotelname": "",
"address": "",
"city": "",
"state": "",
"country": "",
"zip": "",
"latitude": 0,
"longitude": 0,
"url": ["string"],
"websitecodes": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelname | string | false | none | none |
address | string | false | none | none |
city | string | false | none | none |
state | string | false | none | none |
country | string | false | none | none |
zip | string | false | none | none |
latitude | integer(int32) | false | none | none |
longitude | integer(int32) | false | none | none |
url | [string]¦null | false | none | none |
websitecodes | [integer]¦null | false | none | none |
HotelSearch
{
"hotelname": "string",
"country": "string",
"city": "string",
"state": "string",
"zip": "string",
"keyword": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelname | string | false | none | none |
country | string | false | none | none |
city | string | false | none | none |
state | string | false | none | none |
zip | string | false | none | none |
keyword | string | false | none | none |
HotelSource
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [{}],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {}
}
]
}
}
],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {}
}
],
"hotelSources_backups": [{}]
}
}
]
},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [{}],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {}
}
]
},
"websiteCodeNavigation": {}
}
],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {}
}
],
"hotelSources_backups": [{}]
},
"websiteCodeNavigation": {}
}
]
}
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
mapID | integer(int64) | false | none | none |
hotelCode | integer(int32) | false | none | none |
websiteCode | integer(int32) | false | none | none |
baseurl | string | false | none | none |
createddate | string(date-time)¦null | false | none | none |
modifieddate | string(date-time)¦null | false | none | none |
hotelCodeNavigation | hotel | false | none | none |
websiteCodeNavigation | Source | false | none | none |
HotelSources_backup
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [{}],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {}
}
]
}
}
],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {}
}
],
"hotelSources_backups": [{}]
}
}
]
},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [{}],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {}
}
]
},
"websiteCodeNavigation": {}
}
],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {}
}
],
"hotelSources_backups": [{}]
},
"websiteCodeNavigation": {}
}
]
}
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
mapID | integer(int64) | false | none | none |
hotelCode | integer(int32) | false | none | none |
websiteCode | integer(int32) | false | none | none |
baseurl | string | false | none | none |
createddate | string(date-time)¦null | false | none | none |
hotelCodeNavigation | hotel | false | none | none |
websiteCodeNavigation | Source | false | none | none |
LoginUserReq
{
"username": "string",
"password": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
username | string | true | none | none |
password | string | true | none | none |
MetarespExample
{
"checkout": "2025-03-08",
"checkin": "2025-03-07",
"hotelcode": 0,
"websitecode": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
checkout | string | false | none | none |
checkin | string | false | none | none |
hotelcode | integer(int32) | false | none | none |
websitecode | integer(int32) | false | none | none |
QueueAlertsExampleValue
{
"endpoint": "",
"authtype": "",
"username": "",
"password": "",
"token": ""
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
endpoint | string | false | none | none |
authtype | string | false | none | none |
username | string | false | none | none |
password | string | false | none | none |
token | string | false | none | none |
RateshopExampleValues
{
"rateshopname": "string",
"los": 0,
"occupancy": 0,
"currency": "string",
"currencies": ["string"],
"fetchtype": 0,
"horizon": 0,
"hotelcodes": 0,
"compsets": {
"hotelcode": 0,
"competitorhotelcodes": [0]
},
"sources": 0,
"horizonexpression": ["string"],
"pos": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
rateshopname | string | false | none | none |
los | integer(int32) | false | none | none |
occupancy | integer(int32) | false | none | none |
currency | string | false | none | none |
currencies | [string]¦null | false | none | none |
fetchtype | integer(int32) | false | none | none |
horizon | integer(int32) | false | none | none |
hotelcodes | [integer]¦null | false | none | none |
compsets | [string]¦null | false | none | none |
sources | [integer]¦null | false | none | none |
horizonexpression | [string]¦null | false | none | none |
pos | integer(int32) | false | none | none |
ScheduleExampleValues
{
"schedulename": "X-Mas",
"rateshopid": 0,
"year": "*",
"month": "*",
"dow": "*",
"day": "*",
"hour": "1",
"minute": "*",
"seconds": "*",
"status": 1,
"startdate": "2025-02-16",
"enddate": "2025-02-16"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
schedulename | string | false | none | none |
rateshopid | integer(int32) | false | none | none |
year | string | false | none | none |
month | string | false | none | none |
dow | string | false | none | none |
day | string | false | none | none |
hour | string | false | none | none |
minute | string | false | none | none |
seconds | string | false | none | none |
status | integer(int32) | false | none | none |
startdate | string | false | none | none |
enddate | string | false | none | none |
SchedulelogExamplevalues
{
"scheduleid": 0,
"startdate": "2025-02-16",
"enddate": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
scheduleid | integer(int32) | false | none | none |
startdate | string | false | none | none |
enddate | integer(int32) | false | none | none |
Source
{
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [{}],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [],
"hotelSources_backups": [{}]
}
}
]
},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [{}],
"hotelSources_backups": [{}]
},
"websiteCodeNavigation": {}
}
]
}
}
],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [{}],
"hotelSources_backups": []
}
}
],
"hotelSources_backups": [{}]
},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [{}],
"hotelSources_backups": [{}]
},
"websiteCodeNavigation": {}
}
],
"hotelSources_backups": []
}
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
websiteCode | integer(int32) | false | none | none |
websiteName | string | false | none | none |
url | string | false | none | none |
channeltype | string | false | none | none |
status | integer(int32)¦null | false | none | none |
createddate | string(date-time)¦null | false | none | none |
snapshot | integer(int32)¦null | false | none | none |
description | string | false | none | none |
coverage | string | false | none | none |
hotelSources | [HotelSource]¦null | false | none | none |
hotelSources_backups | [HotelSources_backup]¦null | false | none | none |
SourceMapRequestExampleValues
{
"hotelcode": 0,
"sources": 0,
"urls": ["string"]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelcode | integer(int32) | false | none | none |
sources | [integer]¦null | false | none | none |
urls | [string]¦null | false | none | none |
SourceMapRequestModel
{
"hotelcode": 0,
"sources": [0],
"urls": ["string"]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelcode | integer(int32) | true | none | none |
sources | [integer]¦null | false | none | none |
urls | [string]¦null | false | none | none |
compset
{
"hotelcode": 0,
"competitorhotelcodes": [0]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelcode | integer(int32) | false | none | none |
competitorhotelcodes | [integer]¦null | false | none | none |
hookreq
{
"endpoint": "string",
"authtype": "string",
"username": "string",
"password": "string",
"token": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
endpoint | string | true | none | none |
authtype | string | false | none | none |
username | string | false | none | none |
password | string | false | none | none |
token | string | false | none | none |
hotel
{
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [{}],
"hotelSources_backups": [{}]
}
}
]
},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [{}],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [],
"hotelSources_backups": [{}]
},
"websiteCodeNavigation": {}
}
]
}
}
],
"hotelSources_backups": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [{}],
"hotelSources_backups": [{}]
}
}
],
"hotelSources_backups": []
},
"websiteCodeNavigation": {
"websiteCode": 0,
"websiteName": "string",
"url": "string",
"channeltype": "string",
"status": 0,
"createddate": "2019-08-24T14:15:22Z",
"snapshot": 0,
"description": "string",
"coverage": "string",
"hotelSources": [
{
"mapID": 0,
"hotelCode": 0,
"websiteCode": 0,
"baseurl": "string",
"createddate": "2019-08-24T14:15:22Z",
"modifieddate": "2019-08-24T14:15:22Z",
"hotelCodeNavigation": {
"hotelCode": 0,
"hotelName": "string",
"hotelGroup": "string",
"address": "string",
"city": "string",
"state": "string",
"country": "string",
"zip": "string",
"lat": "string",
"lng": "string",
"rating": "string",
"status": 0,
"currencycode": "string",
"propertyType": "string",
"time_zone": "string",
"time_zone_name": "string",
"countrycode": "string",
"hotelSources": [{}],
"hotelSources_backups": []
},
"websiteCodeNavigation": {}
}
],
"hotelSources_backups": [{}]
}
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelCode | integer(int32) | false | none | none |
hotelName | string | false | none | none |
hotelGroup | string | false | none | none |
address | string | false | none | none |
city | string | false | none | none |
state | string | false | none | none |
country | string | false | none | none |
zip | string | false | none | none |
lat | string | false | none | none |
lng | string | false | none | none |
rating | string | false | none | none |
status | integer(int32)¦null | false | none | none |
currencycode | string | false | none | none |
propertyType | string | false | none | none |
time_zone | string | false | none | none |
time_zone_name | string | false | none | none |
countrycode | string | false | none | none |
hotelSources | [HotelSource]¦null | false | none | none |
hotelSources_backups | [HotelSources_backup]¦null | false | none | none |
logreq
{
"scheduleid": 0,
"startdate": "2019-08-24T14:15:22Z",
"enddate": "2019-08-24T14:15:22Z"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
scheduleid | integer(int32) | true | none | none |
startdate | string(date-time) | true | none | none |
enddate | string(date-time) | true | none | none |
rateshopreq
{
"rateshopname": "string",
"los": 1,
"occupancy": 1,
"currency": "string",
"currencies": ["string"],
"fetchtype": 0,
"horizon": 1,
"hotelcodes": [0],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [0]
}
],
"sources": [0],
"horizonexpression": "string",
"horizonrange": "string",
"pos": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
rateshopname | string | true | none | none |
los | integer(int32) | true | none | none |
occupancy | integer(int32) | true | none | none |
currency | string | false | none | none |
currencies | [string]¦null | false | none | none |
fetchtype | integer(int32) | false | none | none |
horizon | integer(int32) | false | none | none |
hotelcodes | [integer]¦null | false | none | none |
compsets | [compset]¦null | false | none | none |
sources | [integer]¦null | false | none | none |
horizonexpression | string | false | none | none |
horizonrange | string | false | none | none |
pos | integer(int32)¦null | false | none | none |
runshop
{
"rateshopid": 0,
"startdate": "2019-08-24T14:15:22Z",
"horizon": 0,
"horizonexpression": "string",
"sources": [0],
"hotelcodes": [0],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [0]
}
],
"snapshot": true
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
rateshopid | integer(int32) | true | none | none |
startdate | string(date-time)¦null | false | none | none |
horizon | integer(int32)¦null | false | none | none |
horizonexpression | string | false | none | none |
sources | [integer]¦null | false | none | none |
hotelcodes | [integer]¦null | false | none | none |
compsets | [compset]¦null | false | none | none |
snapshot | boolean¦null | false | none | none |
schedulereq
{
"schedulename": "string",
"rateshopid": 0,
"year": "string",
"month": "string",
"dow": "string",
"day": "string",
"hour": "string",
"minute": "string",
"seconds": "string",
"status": 1,
"startdate": "2019-08-24T14:15:22Z",
"enddate": "2019-08-24T14:15:22Z"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
schedulename | string | true | none | none |
rateshopid | integer(int32) | true | none | none |
year | string | true | none | none |
month | string | true | none | none |
dow | string | true | none | none |
day | string | true | none | none |
hour | string | true | none | none |
minute | string | true | none | none |
seconds | string | true | none | none |
status | integer(int32) | true | none | none |
startdate | string(date-time) | true | none | none |
enddate | string(date-time)¦null | false | none | none |
userresp
{
"access_token": "string",
"token_type": "string",
"expires_in": 0,
"userName": "string",
".issued": "string",
".expires": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
access_token | string | false | none | Access token |
token_type | string | false | none | none |
expires_in | number | false | none | none |
userName | string | false | none | none |
.issued | string | false | none | none |
.expires | string | false | none | none |
shoprealtimerequest
{
"rateshopid": 0,
"startdate": "2019-08-24",
"horizon": 0,
"horizonexpression": "string",
"sources": 0,
"hotelcodes": [0],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [0]
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
rateshopid | number | true | none | none |
startdate | string(date) | false | none | none |
horizon | number | false | none | none |
horizonexpression | string | false | none | none |
sources | number | false | none | none |
hotelcodes | [number] | false | none | none |
compsets | [object] | false | none | none |
» hotelcode | number | false | none | none |
» competitorhotelcodes | [number] | false | none | none |
shoprealtimeresponse
{
"queueid": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
queueid | integer | false | none | none |
realtimeratesbyqueueresponse
{
"queueId": 0,
"rateshopId": 0,
"hotelCode": 0,
"subjectHotelCode": 0,
"websiteCode": 0,
"dtCollected": "2019-08-24",
"checkIn": "2019-08-24",
"checkOut": "2019-08-24",
"los": 0,
"guests": 0,
"roomType": "string",
"onsiteRate": 0.1,
"netRate": 0.1,
"currency": "string",
"roomDescription": "string",
"ratePlan": "string",
"mealPlan": "string",
"roomAmenities": "string",
"occupancy": 0,
"sourceUrl": "string",
"isPromo": true,
"closed": true,
"discount": 0.1,
"promoName": "string",
"roomTypeCode": 0,
"ratePlanCode": 0,
"mealPlanCode": 0,
"statusCode": 0,
"taxStatus": 0,
"taxType": "string",
"taxAmount": 0.1,
"pos": 0,
"isRatePerStay": true,
"minStay": 0,
"optionalExtras": "string",
"payPlan": "string",
"channelType": "string",
"isRealtime": true
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
queueId | integer | false | none | none |
rateshopId | integer | false | none | none |
hotelCode | integer | false | none | none |
subjectHotelCode | integer | false | none | none |
websiteCode | integer | false | none | none |
dtCollected | string(date) | false | none | none |
checkIn | string(date) | false | none | none |
checkOut | string(date) | false | none | none |
los | integer | false | none | none |
guests | integer | false | none | none |
roomType | string | false | none | none |
onsiteRate | number(double)¦null | false | none | none |
netRate | number(double)¦null | false | none | none |
currency | string | false | none | none |
roomDescription | string | false | none | none |
ratePlan | string | false | none | none |
mealPlan | string | false | none | none |
roomAmenities | string | false | none | none |
occupancy | integer | false | none | none |
sourceUrl | string | false | none | none |
isPromo | boolean | false | none | none |
closed | boolean | false | none | none |
discount | number(double)¦null | false | none | none |
promoName | string | false | none | none |
roomTypeCode | integer | false | none | none |
ratePlanCode | integer | false | none | none |
mealPlanCode | integer | false | none | none |
statusCode | integer | false | none | none |
taxStatus | integer | false | none | none |
taxType | string | false | none | none |
taxAmount | number(double)¦null | false | none | none |
pos | integer | false | none | none |
isRatePerStay | boolean | false | none | none |
minStay | integer | false | none | none |
optionalExtras | string | false | none | none |
payPlan | string | false | none | none |
channelType | string | false | none | none |
isRealtime | boolean | false | none | none |
realtimeratesbyqueuerequest
{
"queueid": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
queueid | integer | true | none | none |
ratehookreq
{
"endpoint": "string",
"authtype": "string",
"username": "string",
"password": "string",
"token": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
endpoint | string | true | none | none |
authtype | string | true | none | none |
username | string | true | none | none |
password | string | true | none | none |
token | string | true | none | none |
ratehookresp
{
"requestid": "string",
"message": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
requestid | string | false | none | none |
message | string | false | none | none |
hotelsearch
{
"hotelname": "",
"country": "United States Of America",
"city": "",
"state": "",
"zip": "",
"keyword": "",
"pagenumber": 0,
"pagesize": 0,
"geolocation": {
"latitude": "",
"longitude": "",
"radius": "5km"
}
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelname | string | false | none | none |
country | string | false | none | none |
city | number | false | none | none |
state | string | false | none | none |
zip | string | false | none | none |
keyword | string | false | none | none |
pagenumber | number | false | none | none |
pagesize | number | false | none | none |
geolocation | object | false | none | none |
» latitude | string | false | none | none |
» longitude | string | false | none | none |
» radius | string | false | none | none |
hotelsresp
{
"hotelcode": 0,
"hotelname": "string",
"address": "string",
"city": "string",
"state": "string",
"zip": "string",
"country": "string",
"starrating": "string",
"lat": 0,
"lng": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelcode | number | false | none | none |
hotelname | string | false | none | none |
address | string | false | none | none |
city | string | false | none | none |
state | string | false | none | none |
zip | string | false | none | none |
country | string | false | none | none |
starrating | string | false | none | none |
lat | number | false | none | none |
lng | number | false | none | none |
runrateshopreq
{
"rateshopid": 0,
"startdate": "2019-08-24",
"horizon": 0,
"horizonexpression": "string",
"sources": [0],
"hotelcodes": [0],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [0]
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
rateshopid | number | false | none | none |
startdate | string(date) | false | none | none |
horizon | number | false | none | none |
horizonexpression | string | false | none | none |
sources | [number] | false | none | none |
hotelcodes | [number] | false | none | none |
compsets | [object] | false | none | none |
» hotelcode | number | false | none | none |
» competitorhotelcodes | [number] | false | none | none |
ratepullresp
{
"queueid": 0,
"approximatetime": "string",
"status_code": 0,
"status_msg": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
queueid | number | false | none | none |
approximatetime | string | false | none | none |
status_code | integer | false | none | none |
status_msg | string | false | none | none |
hotelinfo
{
"hotelcode": 2005,
"hotelcodes": [0]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelcode | number | false | none | none |
hotelcodes | [number] | false | none | none |
hotelinforesp
{
"hotelcode": 0,
"hotelname": "string",
"address": "string",
"city": "string",
"state": "string",
"zip": "string",
"country": "string",
"starrating": "string",
"lat": 0,
"long": 0,
"sources": {
"websitecode": 0,
"websitename": "string",
"url": "string",
"channeltype": "string",
"snapshotavailable": true
}
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelcode | number | false | none | none |
hotelname | string | false | none | none |
address | string | false | none | none |
city | string | false | none | none |
state | string | false | none | none |
zip | string | false | none | none |
country | string | false | none | none |
starrating | string | false | none | none |
lat | number | false | none | none |
long | number | false | none | none |
sources | object | false | none | none |
» websitecode | number | false | none | none |
» websitename | string | false | none | none |
» url | string | false | none | none |
» channeltype | string | false | none | none |
» snapshotavailable | boolean | false | none | none |
ratereq
{
"hotelcode": 2005,
"checkin": "2019-08-24",
"checkout": "2019-08-24",
"guests": 1,
"currency": "USD",
"websitecode": 2,
"pos": 0,
"snapshot": false
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelcode | number | true | none | none |
checkin | string(date) | true | none | none |
checkout | string(date) | true | none | none |
guests | number | true | none | none |
currency | string | true | none | none |
websitecode | number | true | none | none |
pos | number | true | none | none |
snapshot | boolean | true | none | none |
rateshopinfo
{
"rateshopid": 0,
"rateshopname": "string",
"los": 0,
"occupancy": 0,
"currency": "string",
"currencies": ["string"],
"fetchtype": 0,
"horizon": 0,
"hotelcodes": [0],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [0]
}
],
"sources": [0],
"horizonexpression": "string",
"pos": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
rateshopid | number | false | none | none |
rateshopname | string | false | none | none |
los | integer | false | none | none |
occupancy | integer | false | none | none |
currency | string | false | none | none |
currencies | [string] | false | none | none |
fetchtype | integer | false | none | none |
horizon | integer | false | none | none |
hotelcodes | [number] | false | none | none |
compsets | [object] | false | none | none |
» hotelcode | number | false | none | none |
» competitorhotelcodes | [number] | false | none | none |
sources | [integer] | false | none | none |
horizonexpression | string | false | none | none |
pos | number | false | none | none |
newrateshop
{
"rateshopname": "string",
"los": 0,
"occupancy": 0,
"currency": "string",
"currencies": ["string"],
"fetchtype": 0,
"horizon": 0,
"hotelcodes": [0],
"compsets": [
{
"hotelcode": 0,
"competitorhotelcodes": [0]
}
],
"sources": [0],
"horizonexpression": "2-10, 11, 13, 15, 20-25",
"pos": 0,
"horizonrange": "2025/08/18,2025/08/20-2025/08/25",
"directsource": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
rateshopname | string | false | none | none |
los | integer | false | none | none |
occupancy | integer | false | none | none |
currency | string | false | none | none |
currencies | [string] | false | none | none |
fetchtype | integer | false | none | none |
horizon | integer | false | none | none |
hotelcodes | [number] | false | none | none |
compsets | [object] | false | none | none |
» hotelcode | number | false | none | none |
» competitorhotelcodes | [number] | false | none | none |
sources | [integer] | false | none | none |
horizonexpression | string | false | none | none |
pos | number | false | none | none |
horizonrange | string | false | none | none |
directsource | number | false | none | none |
rateresp
{
"hotelcode": 0,
"websitecode": 0,
"dtcollected": "2019-08-24",
"ratedate": "2019-08-24",
"los": 0,
"guests": 0,
"roomtype": "string",
"onsiterate": 0,
"netrate": 0,
"currency": "string",
"ratedescription": "string",
"sourceurl": "string",
"roomamenities": "string",
"maxoccupancy": 0,
"ispromo": true,
"closed": "string",
"checkin": "2019-08-24",
"checkout": "2019-08-24",
"discount": 0,
"promoname": "string",
"searchkeyword": "string",
"roomtypecode": 0,
"conditionscode": 0,
"mealplancode": 0,
"taxstatus": 0,
"taxtype": "string",
"taxamount": 0,
"pos": 0,
"requestorigin": "string",
"israteperstay": "string",
"status_code": 0,
"snapshoturl": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelcode | number | false | none | none |
websitecode | number | false | none | none |
dtcollected | string(date) | false | none | none |
ratedate | string(date) | false | none | none |
los | number | false | none | none |
guests | number | false | none | none |
roomtype | string | false | none | none |
onsiterate | number | false | none | none |
netrate | number | false | none | none |
currency | string | false | none | none |
ratedescription | string | false | none | none |
sourceurl | string | false | none | none |
roomamenities | string | false | none | none |
maxoccupancy | number | false | none | none |
ispromo | boolean | false | none | none |
closed | string | false | none | none |
checkin | string(date) | false | none | none |
checkout | string(date) | false | none | none |
discount | number | false | none | none |
promoname | string | false | none | none |
searchkeyword | string | false | none | none |
roomtypecode | number | false | none | none |
conditionscode | number | false | none | none |
mealplancode | number | false | none | none |
taxstatus | number | false | none | none |
taxtype | string | false | none | none |
taxamount | number | false | none | none |
pos | number | false | none | none |
requestorigin | string | false | none | none |
israteperstay | string | false | none | none |
status_code | number | false | none | none |
snapshoturl | string | false | none | none |
RatesbyqueueResponse
{
"queueId": 0,
"rateshopId": 0,
"hotelCode": 0,
"subjectHotelCode": 0,
"websiteCode": 0,
"dtCollected": "2019-08-24",
"checkIn": "2019-08-24",
"checkOut": "2019-08-24",
"los": 0,
"guests": 0,
"roomType": "string",
"onsiteRate": 0,
"netRate": 0,
"currency": "string",
"roomDescription": "string",
"ratePlan": "string",
"mealPlan": "string",
"roomAmenities": "string",
"occupancy": 0,
"sourceUrl": "string",
"isPromo": true,
"closed": true,
"discount": 0,
"promoName": "string",
"roomTypeCode": 0,
"ratePlanCode": 0,
"mealPlanCode": 0,
"statusCode": 0,
"taxStatus": "string",
"taxType": "string",
"taxAmount": 0,
"pos": 0,
"isRatePerStay": "string",
"minStay": 0,
"optionalExtras": "string",
"payPlan": "string",
"channelType": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
queueId | number | false | none | none |
rateshopId | number | false | none | none |
hotelCode | number | false | none | none |
subjectHotelCode | number | false | none | none |
websiteCode | number | false | none | none |
dtCollected | string(date) | false | none | none |
checkIn | string(date) | false | none | none |
checkOut | string(date) | false | none | none |
los | number | false | none | none |
guests | number | false | none | none |
roomType | string | false | none | none |
onsiteRate | number | false | none | none |
netRate | number | false | none | none |
currency | string | false | none | none |
roomDescription | string | false | none | none |
ratePlan | string | false | none | none |
mealPlan | string | false | none | none |
roomAmenities | string | false | none | none |
occupancy | number | false | none | none |
sourceUrl | string | false | none | none |
isPromo | boolean | false | none | none |
closed | boolean | false | none | none |
discount | number | false | none | none |
promoName | string | false | none | none |
roomTypeCode | number | false | none | none |
ratePlanCode | number | false | none | none |
mealPlanCode | number | false | none | none |
statusCode | number | false | none | none |
taxStatus | string | false | none | none |
taxType | string | false | none | none |
taxAmount | number | false | none | none |
pos | number | false | none | none |
isRatePerStay | string | false | none | none |
minStay | number | false | none | none |
optionalExtras | string | false | none | none |
payPlan | string | false | none | none |
channelType | string | false | none | none |
ratesbyqueue
{
"queueid": 0,
"hotelcode": 0,
"subjecthotelcode": 0,
"websitecode": 0,
"dtcollected": "2019-08-24",
"ratedate": "2019-08-24",
"los": 0,
"guests": 0,
"roomtype": "string",
"onsiterate": 0,
"netrate": 0,
"currency": "string",
"ratedescription": "string",
"sourceurl": "string",
"roomamenities": "string",
"maxoccupancy": 0,
"ispromo": true,
"closed": "string",
"checkin": "2019-08-24",
"checkout": "2019-08-24",
"discount": 0,
"promoname": "string",
"searchkeyword": "string",
"roomtypecode": 0,
"conditionscode": 0,
"mealplancode": 0,
"taxstatus": 0,
"taxtype": "string",
"taxamount": 0,
"pos": 0,
"requestorigin": "string",
"israteperstay": "string",
"status_code": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
queueid | number | false | none | none |
hotelcode | number | false | none | none |
subjecthotelcode | number | false | none | none |
websitecode | number | false | none | none |
dtcollected | string(date) | false | none | none |
ratedate | string(date) | false | none | none |
los | number | false | none | none |
guests | number | false | none | none |
roomtype | string | false | none | none |
onsiterate | number | false | none | none |
netrate | number | false | none | none |
currency | string | false | none | none |
ratedescription | string | false | none | none |
sourceurl | string | false | none | none |
roomamenities | string | false | none | none |
maxoccupancy | number | false | none | none |
ispromo | boolean | false | none | none |
closed | string | false | none | none |
checkin | string(date) | false | none | none |
checkout | string(date) | false | none | none |
discount | number | false | none | none |
promoname | string | false | none | none |
searchkeyword | string | false | none | none |
roomtypecode | number | false | none | none |
conditionscode | number | false | none | none |
mealplancode | number | false | none | none |
taxstatus | number | false | none | none |
taxtype | string | false | none | none |
taxamount | number | false | none | none |
pos | number | false | none | none |
requestorigin | string | false | none | none |
israteperstay | string | false | none | none |
status_code | number | false | none | none |
newschedule
{
"schedulename": "X-Mas",
"rateshopid": 0,
"year": "*",
"month": "*",
"dow": "*",
"day": "*",
"hour": "1",
"minute": "*",
"seconds": "*",
"status": 1,
"startdate": "2019-08-24",
"enddate": "2019-08-24"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
schedulename | string | false | none | none |
rateshopid | number | false | none | none |
year | string | false | none | none |
month | string | false | none | none |
dow | string | false | none | none |
day | string | false | none | none |
hour | string | false | none | none |
minute | string | false | none | none |
seconds | string | false | none | none |
status | number | false | none | none |
startdate | string(date) | false | none | none |
enddate | string(date) | false | none | none |
Enumerated Values
Property | Value |
---|---|
status | 1 |
status | 2 |
schedule
{
"scheduleid": 0,
"schedulename": "string",
"rateshopid": 0,
"year": "string",
"month": "string",
"dow": "string",
"day": "string",
"hour": "string",
"minute": "string",
"seconds": "string",
"status": 0,
"startdate": "2019-08-24",
"enddate": "2019-08-24"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
scheduleid | number | false | none | none |
schedulename | string | false | none | none |
rateshopid | number | false | none | none |
year | string | false | none | none |
month | string | false | none | none |
dow | string | false | none | none |
day | string | false | none | none |
hour | string | false | none | none |
minute | string | false | none | none |
seconds | string | false | none | none |
status | number | false | none | none |
startdate | string(date) | false | none | none |
enddate | string(date) | false | none | none |
schedulelog
{
"scheduleid": 0,
"rateshopid": 0,
"queueid": 0,
"executedat": "2019-08-24"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
scheduleid | number | true | none | none |
rateshopid | number | true | none | none |
queueid | number | true | none | none |
executedat | string(date) | true | none | none |
schedulelogreq
{
"scheduleid": 0,
"startdate": "2019-08-24",
"enddate": "2019-08-24"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
scheduleid | number | false | none | none |
startdate | string(date) | false | none | none |
enddate | string(date) | false | none | none |
countryresp
["string"]
Properties
None
currencyresp
{
"currencycode": "string",
"currencyname": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
currencycode | string | false | none | none |
currencyname | string | false | none | none |
sourceresp
{
"websitecode": 0,
"websitename": "string",
"url": "string",
"channeltype": "string",
"snapshotavailable": true
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
websitecode | number | false | none | none |
websitename | string | false | none | none |
url | string | false | none | none |
channeltype | string | false | none | none |
snapshotavailable | boolean | false | none | none |
typeresp
{
"code": 0,
"desc": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
code | number | false | none | none |
desc | string | false | none | none |
runstatusresp
{
"queueid": 0,
"rateshopid": 0,
"statuscode": 0,
"statusmessage": "string",
"creditused": 0,
"totalrows": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
queueid | number | false | none | none |
rateshopid | number | false | none | none |
statuscode | number | false | none | none |
statusmessage | string | false | none | none |
creditused | number | false | none | none |
totalrows | number | false | none | none |
credit
{
"validtill": "2019-08-24",
"calls": {
"monthly": 0,
"weekly": 0,
"daily": 0,
"hourly": 0,
"minute": 0,
"second": 0
},
"pullsperday": 0,
"rateshops": {
"allowed": 0,
"used": 0,
"available": 0
},
"horizonmax": 0,
"schedules": {
"allowed": 0,
"used": 0,
"available": 0
}
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
validtill | string(date) | false | none | none |
calls | object | false | none | none |
» monthly | number | false | none | none |
» weekly | number | false | none | none |
» daily | number | false | none | none |
» hourly | number | false | none | none |
» minute | number | false | none | none |
» second | number | false | none | none |
pullsperday | number | false | none | none |
rateshops | object | false | none | none |
» allowed | number | false | none | none |
» used | number | false | none | none |
» available | number | false | none | none |
horizonmax | number | false | none | none |
schedules | object | false | none | none |
» allowed | number | false | none | none |
» used | number | false | none | none |
» available | number | false | none | none |
metarates
{
"hotelcode": 0,
"websitecode": 0,
"provider": "string",
"rank": 0,
"checkin": "2019-08-24",
"onsiterate": 0,
"netrate": 0,
"pricepernight": 0,
"currency": "string",
"roomtype": "string",
"roomamenities": "string",
"url": "string",
"status_code": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelcode | number | false | none | none |
websitecode | number | false | none | none |
provider | string | false | none | none |
rank | number | false | none | none |
checkin | string(date) | false | none | none |
onsiterate | number | false | none | none |
netrate | number | false | none | none |
pricepernight | number | false | none | none |
currency | string | false | none | none |
roomtype | string | false | none | none |
roomamenities | string | false | none | none |
url | string | false | none | none |
status_code | string | false | none | none |
metareq
{
"hotelcode": 0,
"websitecode": 0,
"checkin": "2019-08-24",
"checkout": "2019-08-24"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelcode | number | false | none | none |
websitecode | number | false | none | none |
checkin | string(date) | false | none | none |
checkout | string(date) | false | none | none |
newmapreq
{
"hotelname": "",
"address": "",
"city": "",
"state": "",
"country": "",
"zip": "",
"latitude": 0,
"longitude": 0,
"url": ["string"],
"websitecodes": [0]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelname | string | true | none | none |
address | string | true | none | none |
city | string | true | none | none |
state | string | true | none | none |
country | string | true | none | none |
zip | string | true | none | none |
latitude | number | false | none | none |
longitude | number | false | none | none |
url | [string] | false | none | none |
websitecodes | [integer] | false | none | none |
newmapresp
{
"requestid": 0,
"referencehotelcodes": [0],
"statuscode": 0,
"statusmsg": "string",
"approximatetime": "2019-08-24"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
requestid | integer | false | none | none |
referencehotelcodes | [integer] | false | none | none |
statuscode | integer | false | none | none |
statusmsg | string | false | none | none |
approximatetime | string(date) | false | none | none |
sourcemapreq
{
"hotelcode": 0,
"sources": [0],
"urls": ["string"],
"channeltype": ["string"]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
hotelcode | integer | true | none | none |
sources | [integer] | true | none | none |
urls | [string] | false | none | none |
channeltype | [string] | false | none | none |
sourcemapresp
{
"requestid": 0,
"hotelcode": 0,
"sources": [0],
"urls": ["string"],
"status": 0,
"approximatetime": 0,
"channeltype": ["string"]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
requestid | integer | false | none | none |
hotelcode | integer | false | none | none |
sources | [integer] | false | none | none |
urls | [string] | false | none | none |
status | integer | false | none | none |
approximatetime | integer | false | none | This method provides the approximate turnaround time for the request. The default minimum is 72 hours and will vary based on parameter values |
channeltype | [string] | false | none | none |