Rezlynx API
pmsbkg_BookingSearch
This is a general method for fetching bookings or reservations from the PMS. Filter parameters are used to refine the search, e.g. you can filter for residents-only or for a reservation with a specific booking reference, or search for a reservation against a specific guest name. You can use the ReturnAllGuestsInNameSearches parameter to determine if the method returns information on every individual guest in the room or only the principal guest in the room.
More | Booking vs reservation |
Parameters
Name | Type | Description |
---|---|---|
SessionID | string | Session ID |
Filters | - | (see below) |
Note - we recommend to send across all parameters in the request (even the ones that are 'MinOccurs=0' in the WSDL) and only populate the ones you want to update.
Parameters (Filters)
Name | Type | Description |
---|---|---|
BookRef | string | Booking or reservation reference |
RoomPickID | int | Integer indicating which of a multi-room reservation this is (1,2,3,...) |
Forename | string | Guest first name |
Surname | string | Guest surname |
ForenameOrSurname | string | Used to search for a name which exists in either the forename field or the surname field |
ProfileRef | string | Guest profile reference |
LoyaltyID | string | Loyalty ID |
BookingStatus | (object) | Set of booking statuses to search against, see Booking status |
> BookingSearchBookingStatus | string | "PreArrival", "Resident", "Cancelled", "CheckedOut" or "NoShow", see Booking status |
GroupAllotmentRef | string | Group Allotment reference |
MultiRoomReference | string | Free text description field used as a heading for multi-room reservations |
RoomID | string | Room number or name |
ArrivalDate | dateTime | Guest planned arrival date |
DepartureDate | dateTime | Guest planned departure date |
CreationDate | dateTime | Reservation creation date |
BookingType | string | Booking or reservation type (see below) |
ShiftAllowances | string | Option to search against guest Shift allowances, if used: "All" or "CurrentDay" |
Limit | int | Limits the number of records returned, default 200 |
CRSRef | string | External Central Reservation System reference |
ReturnAllGuestsInNameSearches | boolean | Flag to indicate if all guests in the reservation should be returned or just the principal guest |
LastEditFrom | dateTime | Option to search against the date-time when the reservation was last edited ('from' date-time) |
LastEditTo | dateTime | Option to search against the date-time when the reservation was last edited ('to' date-time) |
CreatedFrom | dateTime | Option to search against the date-time when the reservation was created ('from' date-time) |
CreatedTo | dateTime | Option to search against the date-time when the reservation was created ('to' date-time) |
SystemSource | string | System origin of this reservation (see below) |
DistributionChannelID | int | Distribution Channel ID for reservation (if applicable) |
PreCheckIn | boolean | Flag to indicate if pre-checked-in or not (if applicable) |
RezlynxCRS | string | Rezlynx Central Reservation System reference |
IncludeMasterBookings | Boolean | Indicates if master bookings should be included or excluded from the returned set of reservations (see Booking Type below) !new in 1.500! |
Returned data
- Search results consisting of a set of reservations, depending on the search filters used
Returned data (Reservation)
Name | Type | Description |
---|---|---|
RoomId | string | Room ID (room number or name) |
BookRef | string | Booking or reservation reference |
RoomPickID | int | Integer indicating which of a multi-room reservation this is (1,2,3,...) |
BookingType | string | Booking or reservation type (see below) |
BookingStatus | string | "PreArrival", "Resident", "Cancelled", "CheckedOut" or "NoShow", see Booking status |
RoomTypeCode | string | Room type code |
PackageCode | string | Package code, if part of a package |
Arrival | dateTime | Guest planned arrival date (reservation start) |
Departure | dateTime | Guest planned departure date (reservation finish) |
Creation | dateTime | Reservation creation date |
GroupAllotmentRef | string | Group Allotment reference |
MultiRoomReference | string | Free text description field used as a heading for multi-room reservations |
Contact | (object) | Contact person details, see Booking search objects |
Guests | (object) | Guest details, see Booking search objects |
Company | (object) | Name and reference for company through which reservation made, if applicable, see Booking search objects |
Agent | (object) | Name and reference for agent through which reservation made, if applicable, see Booking search objects |
Source | (object) | Name and reference for reservation source, if applicable, see Booking search objects |
Ledger | (object) | Name and reference for ledger, if applicable, see Booking search objects |
PostsAllowed | string | Indicates any posting restrictions for the reservation: either "All" (all postings allowed), "None" (no postings allowed) or "CallsOnly" (only phone postings allowed) |
ShiftAllowances | (object) | Set of all Shift allowances for the reservation, see Booking search objects |
AlarmCall | string | Alarm call time, if set |
MovieAccess | string | Movie Access code, if used |
FunctionBookingDescription | string | Description if function room reservation |
BookRefRoomPickID | string | Long-form booking reference, including Room Pick ID, e.g. "BK000034/1" |
AllowRoomMoves | Boolean | Flag to indicate if room moves are allowed |
EventName | string | Name, if reservation is part of a C&B event |
MarketSegment | string | Market segment, for marketing purposes |
TotalCostNett | decimal | Total cost of the booking (nett of tax) |
TotalCostGross | decimal | Total cost of the booking (gross, including tax) |
LastEdited | dateTime | Date-time the reservation was last edited or changed (not including changes made at a room block, group or multi-room level) |
GDSRef | string | GDS reference, if booking came via an external GDS |
CRSRef1 | string | Rezlynx CRS reference |
CRSRes2 | string | - |
CRSRef2 | string | External CRS reference, if reservation came via an external CRS |
SystemSource | string | System origin of this reservation (see below) |
DistributionChannelId | int | Distribution Channel ID, if the reservation came via a distribution channel |
PreCheckIn | boolean | Flag to indicate if pre-checked-in or not (if applicable) |
RezlynxCRS | string | Rezlynx CRS reference |
Booking type must be one of the following:
- "Bedroom" = normal bedroom reservation
- "Function" = function room reservation
- "Nra" = non-resident account, i.e. not linked to a room
- "Master" = master booking
!new in 1.500!
Note Master bookings are dummy room reservations, similar to an NRA but linked to a group or multi-room reservation. Both master bookings and NRAs can be useful for managing accounts. |
SystemSource must be one of the following:
- "Unknown"
- "Rezlynx"
- "PublicPortal"
- "AgentPortal"
- "CorporatePortal"
- "Roomlynx"
- "CRS"
- "BWCRS"
- "WebService"
- "CentralInvoicing"
- "SalesAndCatering"
Request URL
https://pmsws.eu.guestline.net/rlxsoaprouter/rlxsoap.asmx?op=pmsbkg_BookingSearchRequest headers
Name | Type | Description |
---|---|---|
(optional) | string | Media type of the body sent to the API. |
Request body
<pmsbkg_BookingSearch xmlns="http://tempuri.org/RLXSOAP19/RLXSOAP19">
<SessionID>dda11037-65f5-4bf1-acb9-4fb187176e5c</SessionID>
<Filters>
<BookRef />
<RoomPickID xsi:nil="true" />
<Forename />
<Surname />
<ForenameOrSurname />
<ProfileRef />
<LoyaltyID />
<BookingStatus />
<GroupAllotmentRef />
<MultiRoomReference />
<RoomID />
<ArrivalDate xsi:nil="true" />
<DepartureDate xsi:nil="true" />
<CreationDate xsi:nil="true" />
<BookingType xsi:nil="true" />
<ShiftAllowances xsi:nil="true" />
<Limit>200</Limit>
<CRSRef />
<ReturnAllGuestsInNameSearches>true</ReturnAllGuestsInNameSearches>
<LastEditFrom xsi:nil="true" />
<LastEditTo xsi:nil="true" />
<CreatedFrom>2017-08-29T09:17:45.235262</CreatedFrom>
<CreatedTo>2017-09-19T09:17:45.2317592</CreatedTo>
<SystemSource xsi:nil="true" />
<DistributionChannelID xsi:nil="true" />
<PreCheckIn>false</PreCheckIn>
<RezlynxCRS />
<IncludeMasterBookings>false</IncludeMasterBookings>
</Filters>
</pmsbkg_BookingSearch>
Responses
200 OK
Representations
<pmsbkg_BookingSearchResponse xmlns="http://tempuri.org/RLXSOAP19/RLXSOAP19">
<pmsbkg_BookingSearchResult>
<ExceptionCode>0</ExceptionCode>
<ExceptionDescription>No error</ExceptionDescription>
</pmsbkg_BookingSearchResult>
<SearchResults>
<Reservations>
<Reservation>
<RoomId />
<BookRef>BK000018</BookRef>
<RoomPickId>1</RoomPickId>
<BookingType>Bedroom</BookingType>
<BookingStatus>PreArrival</BookingStatus>
<RoomTypeCode>DBL_STANDARD</RoomTypeCode>
<PackageCode>BAR_BB</PackageCode>
<Arrival>2017-09-04T00:00:00</Arrival>
<Departure>2017-09-05T00:00:00</Departure>
<Creation>2017-08-29T11:09:35</Creation>
<Contact>
<Name>Mr Paul Smith</Name>
<Salutation>Mr</Salutation>
<Forename>Paul</Forename>
<Surname>Smith</Surname>
<TypeOfPerson>Adult</TypeOfPerson>
<Gender>Male</Gender>
<ProfileRef>PF000066</ProfileRef>
<LoyaltyID />
</Contact>
<Guests>
<Guest>
<Name>Mr Paul Smith</Name>
<Salutation>Mr</Salutation>
<Forename>Paul</Forename>
<Surname>Smith</Surname>
<TypeOfPerson>Adult</TypeOfPerson>
<Gender>Male</Gender>
<ProfileRef>PF000066</ProfileRef>
<LoyaltyID />
<FolioID>1</FolioID>
</Guest>
</Guests>
<PostsAllowed>All</PostsAllowed>
<BookRefRoomPickID>BK000018/1</BookRefRoomPickID>
<AllowRoomMoves>true</AllowRoomMoves>
<MarketSegment>BAR</MarketSegment>
<TotalCostNett>66.6600</TotalCostNett>
<TotalCostGross>80.0000</TotalCostGross>
<LastEdited>2017-08-29T14:04:11</LastEdited>
<GDSRef />
<CRSRef1 />
<CRSRef2 />
<SystemSource>Unknown</SystemSource>
<DistributionChannelId>0</DistributionChannelId>
<PreCheckIn>false</PreCheckIn>
<RezlynxCRS />
</Reservation>
<Reservation>
<RoomId>112</RoomId>
<BookRef>BK000019</BookRef>
<RoomPickId>1</RoomPickId>
<BookingType>Bedroom</BookingType>
<BookingStatus>PreArrival</BookingStatus>
<RoomTypeCode>DBL_STANDARD</RoomTypeCode>
<PackageCode>BAR_BB</PackageCode>
<Arrival>2017-09-06T00:00:00</Arrival>
<Departure>2017-09-07T00:00:00</Departure>
<Creation>2017-08-29T11:12:08</Creation>
<Contact>
<Name>Mr Tom Jones</Name>
<Salutation>Mr</Salutation>
<Forename>Tom</Forename>
<Surname>Jones</Surname>
<TypeOfPerson>Adult</TypeOfPerson>
<Gender>Male</Gender>
<ProfileRef>PF000068</ProfileRef>
<LoyaltyID />
</Contact>
<Guests>
<Guest>
<Name>Mr Tom Jones</Name>
<Salutation>Mr</Salutation>
<Forename>Tom</Forename>
<Surname>Jones</Surname>
<TypeOfPerson>Adult</TypeOfPerson>
<Gender>Male</Gender>
<ProfileRef>PF000068</ProfileRef>
<LoyaltyID />
<FolioID>1</FolioID>
</Guest>
</Guests>
<PostsAllowed>All</PostsAllowed>
<BookRefRoomPickID>BK000019/1</BookRefRoomPickID>
<AllowRoomMoves>false</AllowRoomMoves>
<MarketSegment>BAR</MarketSegment>
<TotalCostNett>66.6600</TotalCostNett>
<TotalCostGross>80.0000</TotalCostGross>
<LastEdited>2017-08-29T11:12:08</LastEdited>
<GDSRef />
<CRSRef1 />
<CRSRef2 />
<SystemSource>Unknown</SystemSource>
<DistributionChannelId>0</DistributionChannelId>
<PreCheckIn>false</PreCheckIn>
<RezlynxCRS />
</Reservation>
</Reservations>
</SearchResults>
</pmsbkg_BookingSearchResponse>
Code samples
@ECHO OFF
curl -v -X POST "https://pmsws.eu.guestline.net/rlxsoaprouter/rlxsoap.asmx?op=pmsbkg_BookingSearch"
-H "Content-Type: text/xml"
--data-ascii "{body}"
using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;
namespace CSHttpClientSample
{
static class Program
{
static void Main()
{
MakeRequest();
Console.WriteLine("Hit ENTER to exit...");
Console.ReadLine();
}
static async void MakeRequest()
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
// Request headers
var uri = "https://pmsws.eu.guestline.net/rlxsoaprouter/rlxsoap.asmx?op=pmsbkg_BookingSearch&" + queryString;
HttpResponseMessage response;
// Request body
byte[] byteData = Encoding.UTF8.GetBytes("{body}");
using (var content = new ByteArrayContent(byteData))
{
content.Headers.ContentType = new MediaTypeHeaderValue("< your content type, i.e. application/json >");
response = await client.PostAsync(uri, content);
}
}
}
}
// // This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class JavaSample
{
public static void main(String[] args)
{
HttpClient httpclient = HttpClients.createDefault();
try
{
URIBuilder builder = new URIBuilder("https://pmsws.eu.guestline.net/rlxsoaprouter/rlxsoap.asmx?op=pmsbkg_BookingSearch");
URI uri = builder.build();
HttpPost request = new HttpPost(uri);
request.setHeader("Content-Type", "text/xml");
// Request body
StringEntity reqEntity = new StringEntity("{body}");
request.setEntity(reqEntity);
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null)
{
System.out.println(EntityUtils.toString(entity));
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>JSSample</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function() {
var params = {
// Request parameters
};
$.ajax({
url: "https://pmsws.eu.guestline.net/rlxsoaprouter/rlxsoap.asmx?op=pmsbkg_BookingSearch" + $.param(params),
beforeSend: function(xhrObj){
// Request headers
xhrObj.setRequestHeader("Content-Type","text/xml");
},
type: "POST",
// Request body
data: "{body}",
})
.done(function(data) {
alert("success");
})
.fail(function() {
alert("error");
});
});
</script>
</body>
</html>
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString* path = @"https://pmsws.eu.guestline.net/rlxsoaprouter/rlxsoap.asmx?op=pmsbkg_BookingSearch";
NSArray* array = @[
// Request parameters
@"entities=true",
];
NSString* string = [array componentsJoinedByString:@"&"];
path = [path stringByAppendingFormat:@"?%@", string];
NSLog(@"%@", path);
NSMutableURLRequest* _request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path]];
[_request setHTTPMethod:@"POST"];
// Request headers
[_request setValue:@"text/xml" forHTTPHeaderField:@"Content-Type"];
// Request body
[_request setHTTPBody:[@"{body}" dataUsingEncoding:NSUTF8StringEncoding]];
NSURLResponse *response = nil;
NSError *error = nil;
NSData* _connectionData = [NSURLConnection sendSynchronousRequest:_request returningResponse:&response error:&error];
if (nil != error)
{
NSLog(@"Error: %@", error);
}
else
{
NSError* error = nil;
NSMutableDictionary* json = nil;
NSString* dataString = [[NSString alloc] initWithData:_connectionData encoding:NSUTF8StringEncoding];
NSLog(@"%@", dataString);
if (nil != _connectionData)
{
json = [NSJSONSerialization JSONObjectWithData:_connectionData options:NSJSONReadingMutableContainers error:&error];
}
if (error || !json)
{
NSLog(@"Could not parse loaded json with error:%@", error);
}
NSLog(@"%@", json);
_connectionData = nil;
}
[pool drain];
return 0;
}
<?php
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
require_once 'HTTP/Request2.php';
$request = new Http_Request2('https://pmsws.eu.guestline.net/rlxsoaprouter/rlxsoap.asmx?op=pmsbkg_BookingSearch');
$url = $request->getUrl();
$headers = array(
// Request headers
'Content-Type' => 'text/xml',
);
$request->setHeader($headers);
$parameters = array(
// Request parameters
);
$url->setQueryVariables($parameters);
$request->setMethod(HTTP_Request2::METHOD_POST);
// Request body
$request->setBody("{body}");
try
{
$response = $request->send();
echo $response->getBody();
}
catch (HttpException $ex)
{
echo $ex;
}
?>
########### Python 2.7 #############
import httplib, urllib, base64
headers = {
# Request headers
'Content-Type': 'text/xml',
}
params = urllib.urlencode({
})
try:
conn = httplib.HTTPSConnection('pmsws.eu.guestline.net/rlxsoaprouter/rlxsoap.asmx')
conn.request("POST", "pmsbkg_BookingSearch%s" % params, "{body}", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64
headers = {
# Request headers
'Content-Type': 'text/xml',
}
params = urllib.parse.urlencode({
})
try:
conn = http.client.HTTPSConnection('developers.azure-api.net')
conn.request("POST", "/rezlynx-web-service/?soapAction=http://tempuri.org/RLXSOAP19/RLXSOAP19/pmsbkg_BookingSearch&%s" % params, "{body}", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
require 'net/http'
uri = URI('https://pmsws.eu.guestline.net/rlxsoaprouter/rlxsoap.asmx?op=pmsbkg_BookingSearch')
request = Net::HTTP::Post.new(uri.request_uri)
# Request headers
request['Content-Type'] = 'text/xml'
# Request body
request.body = "{body}"
response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
http.request(request)
end
puts response.body