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_BookingSearch

Request 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