Rezlynx API
pmsprf_GetProfileSummaryWithAttributes
This method retrieves a guest profile, including custom attributes. It is based on pmsprf_GetProfileSummaryV3 but with the addition of custom attributes in the response object.
(note however that this method uses SessionID like pmsprf_GetProfileSummaryV2 and not SOAP header authentication like pmsprf_GetProfileSummaryV3)
Profile requestor authentication Since profiles contain personal information, there is an additional requirement around access (two factor authentication); the client using this method must supply either a password set up against the profile, or else supply some information already known from the profile, such as guest surname - see below. A single API account will only support one of these two methods, you cannot mix them. |
Parameters
Name | Type | Description |
---|---|---|
SessionID | string | Session ID, obtained at log-in |
ProfileRequestor | (object) | |
> ProfileUniqueId | string | Unique profile ID, must be either a profile reference, unique email address or loyalty ID |
> ProfileUniqueIdAuthenticatorValue | string | The password that is associated with this profile; if you know the password then you don’t need to send any of the other values below, otherwise leave this blank and send through all the second factor authentication values below |
> AuthenticationMethod | "PD" | "PD" stands for "Person Details" and should always be set to this |
> AuthenticationCode | string | The method of second line authentication to be used i.e. "Forename", "Surname" or "PostCode" |
> AuthenticationValue | string | The authentication value, e.g. if the method is "Surname" and the profile is under the name of "Jones" then the value will be "Jones", if the method is "PostCode" then the value will be "SY26LG" |
Filters | "Checked Out", "Resident" or "Future" | Optional filter to filter results according to the reservation status |
ProfileSearchMode | "Contact", "Guest" or "Both" | Used to indicate whether searching for a reservation contact, reservation guest or both |
Returned data (profile)
Name | Type | Description |
---|---|---|
ProfileRef | string | Profile reference |
Salutation | string | Title |
Forename | string | Forename |
Surname | string | Surname |
EMailAddress | string | E-mail address |
Gender | string | Gender |
Street | string | Address street |
Area | string | Address area |
Town | string | Address town or city |
County | string | Address county or state |
PostCode | string | Address postcode or zip code |
Country | string | Address country |
TelephoneNo | string | Telephone number |
FaxNo | string | Fax number |
MobileNo | string | Mobile telephone number |
Nationality | string | Nationality |
Language | string | Language |
CompanyRef | string | Company reference, if applicable |
Vip | int | Integer VIP level (e.g. 1,2,3...) |
DateOfBirth | dateTime | Date of birth |
StudentID | string | Student ID, if applicable |
TypeOfPerson | "Adult", "Child" or "Infant" | Adult status |
PassportNumber | string | Passport number |
PreferredRoomType | string | Preferred room type |
ExcludeFromMailings | Boolean | Indicates if person chose to be excluded from general marketing mailings |
Smoker | int | Smoker or not |
BlackListed | int | Blacklisted or not |
LoyaltyID | string | Loyalty ID |
ProfileType | "Private", "Agents", "Corporate", "TourGroup" or "TourSeries" | Profile type |
ExcludeFromThirdPartyMailings | Boolean | Indicates if person chose to be excluded from third-party mailings |
Suffix | string | Name suffix |
MiddleName | string | Middle name |
AddressLine1 | string | Address line 1 |
AddressLine2 | string | Address line 2 |
State | string | Address state |
PublicNotes | string | Notes (public) |
PrivateNotes | string | Notes (private) |
CustomNotes1 | string | Notes (custom 1) |
CustomNotes2 | string | Notes (custom 2) |
CustomNotes3 | string | Notes (custom 3) |
Returned data (custom attribute)
Name | Type | Description |
---|---|---|
AttributeCode | string | Attribute field type (see below) |
Value | string | (please ignore this field) |
Param1 | string | Parameter #1, if applicable |
Param2 | string | Parameter #2, if applicable |
ProfileAttributeCode | string | Name of this custom attribute |
ProfileAttributeDescription | string | Description or label for this custom attribute |
ProfileAttributeValue | string | Value of this custom attribute |
Attribute field type can be one of the following:
- "SMALL" (a small text box)
- "LARGE" (a large text box)
- "DATE" (a date)
- "NUMBER" (an integer number)
- "YES_NO" (a yes/no flag)
- "LIST" (a list-box)
Note some care is needed with the custom attribute values, as they depend on the attribute field type. For example, values for field type "YES_NO" are '1' for 'Yes' and '0' for 'No'. |
Note in the case of attributes of field type "LIST", Param2 contains the list options, e.g. "[],[1],[2],[3]" indicates possible values for the attribute are <blank>, '1', '2' or '3'. |
Request URL
https://pmsws.eu.guestline.net/rlxsoaprouter/rlxsoap.asmx?op=pmsprf_GetProfileSummaryWithAttributesRequest headers
Name | Type | Description |
---|---|---|
(optional) | string | Media type of the body sent to the API. |
Request body
<pmsprf_GetProfileSummaryWithAttributes xmlns="http://tempuri.org/RLXSOAP19/RLXSOAP19">
<SessionId>a6a70a2d-1ac0-4da0-815a-98cd825a822e</SessionId>
<ProfileRequestor>
<ProfileUniqueId>PF00000003</ProfileUniqueId>
<ProfileUniqueIdAuthenticatorValue />
<AuthenticationMethod>PD</AuthenticationMethod>
<AuthenticationCode>Surname</AuthenticationCode>
<AuthenticationValue>Alibone</AuthenticationValue>
</ProfileRequestor>
</pmsprf_GetProfileSummaryWithAttributes>
Responses
200 OK
Representations
<pmsprf_GetProfileSummaryWithAttributesResponse xmlns="http://tempuri.org/RLXSOAP19/RLXSOAP19">
<pmsprf_GetProfileSummaryV2Result>
<ExceptionCode>0</ExceptionCode>
<ExceptionDescription>No error</ExceptionDescription>
</pmsprf_GetProfileSummaryV2Result>
<Profile>
<ProfileRef>PF00000003</ProfileRef>
<Salutation>Mr</Salutation>
<Forename>Lee</Forename>
<Surname>Alibone</Surname>
<EMailAddress>lee.alibone@guestline.com</EMailAddress>
<Gender>M</Gender>
<Street>Guestline House Shrewsbury Business Park</Street>
<Area>Sitka Drive</Area>
<Town>Shrewsbury</Town>
<County>Shropshire</County>
<PostCode>SY2 6LG</PostCode>
<Country>United Kingdom</Country>
<TelephoneNo>0123456789</TelephoneNo>
<FaxNo />
<MobileNo />
<Nationality>British</Nationality>
<Language>English</Language>
<CompanyRef />
<Vip>0</Vip>
<DateOfBirth>1754-01-01T00:00:00</DateOfBirth>
<StudentID />
<TypeOfPerson>Adult</TypeOfPerson>
<PassportNumber />
<PreferredRoomType />
<ExcludeFromMailings>false</ExcludeFromMailings>
<Smoker>0</Smoker>
<BlackListed>0</BlackListed>
<LoyaltyID />
<ProfileType>Private</ProfileType>
<ExcludeFromThirdPartyMailings>true</ExcludeFromThirdPartyMailings>
<Suffix />
<MiddleName />
<AddressLine1 />
<AddressLine2 />
<State />
<PublicNotes />
<PrivateNotes />
<CustomNotes1>Gluten</CustomNotes1>
<CustomNotes2>No Duvet</CustomNotes2>
<CustomNotes3 />
<colProfileAttributes>
<ProfileCustomAttributes>
<AttributeCode>SMALL</AttributeCode>
<Value>Small text</Value>
<Param1 />
<Param2 />
<ProfileAttributeCode>SMALL</ProfileAttributeCode>
<ProfileAttributeDescription>Small</ProfileAttributeDescription>
<ProfileAttributeValue>Small text</ProfileAttributeValue>
</ProfileCustomAttributes>
<ProfileCustomAttributes>
<AttributeCode>LARGE</AttributeCode>
<Value />
<Param1 />
<Param2 />
<ProfileAttributeCode>LARGE</ProfileAttributeCode>
<ProfileAttributeDescription>Large</ProfileAttributeDescription>
<ProfileAttributeValue />
</ProfileCustomAttributes>
<ProfileCustomAttributes>
<AttributeCode>DATE</AttributeCode>
<Value />
<Param1 />
<Param2 />
<ProfileAttributeCode>DATE</ProfileAttributeCode>
<ProfileAttributeDescription>Date</ProfileAttributeDescription>
<ProfileAttributeValue />
</ProfileCustomAttributes>
<ProfileCustomAttributes>
<AttributeCode>NUMBER</AttributeCode>
<Value>99999</Value>
<Param1 />
<Param2 />
<ProfileAttributeCode>NUMBER</ProfileAttributeCode>
<ProfileAttributeDescription>Number</ProfileAttributeDescription>
<ProfileAttributeValue>99999</ProfileAttributeValue>
</ProfileCustomAttributes>
<ProfileCustomAttributes>
<AttributeCode>YES_NO</AttributeCode>
<Value>1</Value>
<Param1 />
<Param2 />
<ProfileAttributeCode>YES_NO</ProfileAttributeCode>
<ProfileAttributeDescription>Yes / No</ProfileAttributeDescription>
<ProfileAttributeValue>1</ProfileAttributeValue>
</ProfileCustomAttributes>
<ProfileCustomAttributes>
<AttributeCode>LIST</AttributeCode>
<Value>3</Value>
<Param1 />
<Param2>[],[1],[2],[3]</Param2>
<ProfileAttributeCode>LIST</ProfileAttributeCode>
<ProfileAttributeDescription>List</ProfileAttributeDescription>
<ProfileAttributeValue>3</ProfileAttributeValue>
</ProfileCustomAttributes>
</colProfileAttributes>
</Profile>
</pmsprf_GetProfileSummaryWithAttributesResponse>
Code samples
@ECHO OFF
curl -v -X POST "https://pmsws.eu.guestline.net/rlxsoaprouter/rlxsoap.asmx?op=pmsprf_GetProfileSummaryWithAttributes"
-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=pmsprf_GetProfileSummaryWithAttributes&" + 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=pmsprf_GetProfileSummaryWithAttributes");
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=pmsprf_GetProfileSummaryWithAttributes" + $.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=pmsprf_GetProfileSummaryWithAttributes";
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=pmsprf_GetProfileSummaryWithAttributes');
$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", "pmsprf_GetProfileSummaryWithAttributes%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/pmsprf_GetProfileSummaryWithAttributes&%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=pmsprf_GetProfileSummaryWithAttributes')
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