Rezlynx API

pmsfoh_GetMovements

This method can be used to obtain room-related movements or transactions, including check-in events, check-out events, room-moves and changes to alarm calls. If you require near-real-time notification of check-ins and check-outs then this is the method to use.

The method is called with a transaction ID, obtained from the last time the method was called, and it returns all movements or transactions since that transaction ID. The transaction ID starts at 1 and increments for each transaction in the system, indefinitely.

Wondering what value the current transaction ID is set to? You can find out by logging in to Rezlynx and accessing the INI settings.

Note any filtering of results must be done after the method returns, there are no filter parameters. If you want more information about a room, guest or reservation, you can use pmsbkg_BookingSearch to delve deeper into the data.

Parameters

NameTypeDescription
SessionIDstringSession ID
TransIDintTransaction ID of the last transaction or movement from which new data is requested
IncludeMovieAccessBooleanFlag to determine if Movie Access should be included in the response

Returned data

  • Returned data consists of the set of all movement items since the specified transaction ID

Returned data (Movement item)

NameTypeDescription
TransIDintTransaction ID for this particular transaction or movement
EntryTypeintCode for the type of movement (see below)
EntryTimeStampdateTimeDate-time stamp for the transaction or movement
RoomIDstringRoom number or name
TelNo1stringRoom telephone extension number 1, if applicable
TelNo2stringRoom telephone extension number 2, if applicable
TelNo3stringRoom telephone extension number 3, if applicable
TelNo4stringRoom telephone extension number 4, if applicable
BookRefstringRezlynx booking reference for the reservation
RoomPickIDintRoom integer count used for multi-room bookings
FolioIDintFolio number, if more than one folio
SalutationstringTitle for guest
ForenamestringFirst name of guest
SurnamestringSurname of guest
AlarmTimestringAlarm call time, if set
Param1stringOptional string parameter, depends on EntryType
Param2intOptional integer parameter, depends on EntryType
InterfacePostingModeintThe posting mode for this room (see below)
RoomMove(object)Further details, in case of a room move
MovieAccessstringMovie Access code

EntryType codes

CodeDescription
10room check-in
20room check-out
30room-move
40change to alarm time (i.e. wake-up call)
50guest check-in
60guest check-out
70change to ‘InterfacePostingMode’
80guest added to room
90guest removed from room reservation
100change to guest details
110change to guest profile details
120guest unlinked
130change to ‘MovieAccess’
140check-out reversed or undone
150room unallocated from reservation
160room allocated to reservation

Interface Posting Modes

CodeDescription
0All allowed, i.e. all postings allowed for this room
1None allowed, i.e. no postings allowed for this room
2Phone only, i.e. only charges for telephone calls allowed

Request URL

https://pmsws.eu.guestline.net/rlxsoaprouter/rlxsoap.asmx?op=pmsfoh_GetMovements

Request headers

Name Type Description
(optional) string Media type of the body sent to the API.

Request body

<pmsfoh_GetMovements xmlns="http://tempuri.org/RLXSOAP19/RLXSOAP19">
    <SessionID>8e1b1a80-61ae-411e-a8a5-863f9b32d259</SessionID>
    <TransID>866</TransID>
    <IncludeMovieAccess>false</IncludeMovieAccess>
</pmsfoh_GetMovements>

Responses

200 OK

Representations

<pmsfoh_GetMovementsResponse xmlns="http://tempuri.org/RLXSOAP19/RLXSOAP19">
    <pmsfoh_GetMovementsResult>
        <ExceptionCode>0</ExceptionCode>
        <ExceptionDescription>No error</ExceptionDescription>
    </pmsfoh_GetMovementsResult>
    <GetMovements>
        <MovementData>
            <cpmsfoh_GetMovements_MovementItem>
                <TransID>867</TransID>
                <EntryType>30</EntryType>
                <EntryTimeStamp>2017-10-19T15:18:07</EntryTimeStamp>
                <RoomID>110</RoomID>
                <TelNo1 />
                <TelNo2 />
                <TelNo3 />
                <TelNo4 />
                <BookRef>BK000938</BookRef>
                <RoomPickID>1</RoomPickID>
                <FolioID>1</FolioID>
                <Salutation>Mr</Salutation>
                <Forename>James</Forename>
                <Surname>John</Surname>
                <AlarmTime />
                <Param1>118</Param1>
                <Param2>0</Param2>
                <InterfacePostingMode>0</InterfacePostingMode>
                <RoomMove>
                    <OldRoom>
                        <RoomID>118</RoomID>
                        <TelNo1 />
                        <TelNo2 />
                        <TelNo3 />
                        <TelNo4 />
                    </OldRoom>
                </RoomMove>
            </cpmsfoh_GetMovements_MovementItem>
        </MovementData>
    </GetMovements>
</pmsfoh_GetMovementsResponse>

Code samples

@ECHO OFF



curl -v -X POST "https://pmsws.eu.guestline.net/rlxsoaprouter/rlxsoap.asmx?op=pmsfoh_GetMovements"
-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=pmsfoh_GetMovements&" + 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=pmsfoh_GetMovements");


            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=pmsfoh_GetMovements" + $.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=pmsfoh_GetMovements";
    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=pmsfoh_GetMovements');
$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", "pmsfoh_GetMovements%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/pmsfoh_GetMovements&%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=pmsfoh_GetMovements')


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