NAV Navbar
XML User Interface C#

Introduction

Rentals United API Endpoint

https://rm.rentalsunited.com/api/Handler.ashx

Welcome to the Rentals United Developer Portal.

Rentals United is The Channel Manager of choice for the Vacation Rental Market.

This Developer Portal has been designed to support developers to

Property providers use this portal to programmatically create properties that you want to publish on Sales Channels or Vacation Rentals Services, manage property content, availability, prices, minimum stay, changeover and bookings via the API.

Sales Channels and VR Services use this portal retrieve Vacation Rentals inventory data and distribute it on the market.

Both developers and business people will find useful and actionable information in this portal.

We recommend that you follow the below steps to streamline the integration process:

  1. Start from the Guides & User Cases section
  2. Review Integration Certification process to understand our expectations of connection quality and scope
  3. Review API methods required for your use case in the API Reference section
  4. Get familiar with additional resources we provide: Screenshots of Rentals United User Interface, XML Requests and Responses, C# code examples
  5. Plan the integration architecture for your system
  6. Describe your action plan and contact Rentals United API Support Team via apisupport@rentalsunited.com
  7. Jump on a kick-off call with our engineers
  8. Code, test and self-certify using the Certification Section
  9. Get Certified by Rentals United API Support Team
  10. Soft-launch and launch.

XML Request

<Pull_IntegrationTimeline_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
</Pull_IntegrationTimeline_RQ>

XML Response

<Pull_IntegrationTimeline_RS>
    <Status ID="0">Success</Status>
    <ResponseID>c70979d4485c4e7dbabe6a5aea1c4d4d</ResponseID>
    <Steps>
        <Step ID="1" Name="Feasibility study">
            <StepItem ID="1">Study developer portal</StepItem>
            <StepItem ID="2">Review certification scope</StepItem>
            <StepItem ID="3">Model your integration</StepItem>
            <StepItem ID="4">Ask questions</StepItem/>
        </Step>
        <Step ID="2" Name="Contract & Account setup">
            <StepItem ID="5">Contact us</StepItem>
            <StepItem ID="6">Sign a contract </StepItem>
            <StepItem ID="7">Sign up an account</StepItem>
        </Step>
        <Step ID="3" Name="Integration">
            <StepItem ID="8">Code</StepItem>
            <StepItem ID="9">Log everything</StepItem>
            <StepItem ID="10">Ask for support</StepItem>
            <StepItem ID="11">Test yourself</StepItem>
        </Step>
        <Step ID="4" Name="Certification">
            <StepItem ID="12">Prepare the use cases</StepItem>
            <StepItem ID="13">Schedule a certification session</StepItem>
            <StepItem ID="14">Get certified</StepItem>
        </Step>
        <Step ID="5" Name="Soft-launch">
            <StepItem ID="15">Onboard the first client</StepItem>
            <StepItem ID="16">Watch & react</StepItem>
            <StepItem ID="17">Fix bugs</StepItem>
        </Step>
        <Step ID="6" Name="Go">
            <StepItem ID="18">Onboard clients</StepItem>
            <StepItem ID="19">Monitor and support</StepItem>
        </Step>
    </Steps>
</Pull_IntegrationTimeline_RS>

Guides & User Cases

This section explains Rentals United capabilities which enables you to evaluate whether Rentals United API serves your needs.

The following abbreviations are used

There are three basic integration models

Try the API - the basics!

Sandbox account

All newly created Rentals United accounts are sandbox accounts which you can use for development and testing purposes. Your sandbox account can be transferred to a production accounts once the integration is certified (see Certification section). Sandbox accounts are isolated and have lower API limits than production accounts.

First API Request

The simplest method of sending a request to Rentals United API is to send the XML directly in the body of a HTTP POST. In practice though, most development platforms provide a simple mechanism to send such a request without the need to generate the headers yourself.

You can use a free tool like Fiddler or Postman to make a POST requests to the RU XML API and check the response XML.

API Response Status

XML Request

<Pull_ListStatuses_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
</Pull_ListStatuses_RQ>

XML Response

<Pull_ListStatuses_RS>
    <Status ID="0">Success</Status>
    <ResponseID>c70979d4485c4e7dbabe6a5aea1c4d4d</ResponseID>
    <Statuses>
        <StatusInfo ID="-6">This request was rate limited. Maximum number of requests allowed for this API method with specified parameters is {0} per {1} sliding window. You have reached this limit.</StatusInfo>
        <StatusInfo ID="-5">This request was rate limited. Maximum concurrent requests allowed for this API method with specified parameters is {0}. You have reached this limit.</StatusInfo>
        <StatusInfo ID="-4">Incorrect login or password</StatusInfo>
        <StatusInfo ID="-3">Invalid request. {0}</StatusInfo>
        <StatusInfo ID="-2">This request cannot be processed. {0}</StatusInfo>
        <StatusInfo ID="-1">The XML contains not implemented method</StatusInfo>
        <StatusInfo ID="0">Success</StatusInfo>
        <StatusInfo ID="1">Property is not available for a given dates</StatusInfo>
        <StatusInfo ID="2">Nothing available for a given dates</StatusInfo>
        <StatusInfo ID="3">Property has no price settings for a given dates</StatusInfo>
        <StatusInfo ID="4">Wrong destination id:{0}</StatusInfo>
        <StatusInfo ID="5">Wrong distance unit id:{0}</StatusInfo>
        <StatusInfo ID="6">Wrong composition room id:{0}</StatusInfo>
        <StatusInfo ID="7">Wrong amenity id:{0}</StatusInfo>
        <StatusInfo ID="8">Wrong arrival instructions</StatusInfo>
        <StatusInfo ID="9">Could not insert late arrival fee, From:{0} To:{1} Fee:{2}</StatusInfo>
        <StatusInfo ID="10">Could not insert early departure fee, From:{0} To:{1} Fee:{2}</StatusInfo>
        <StatusInfo ID="11">Wrong payment method id:{0}</StatusInfo>
        <StatusInfo ID="12">Wrong deposit type id:{0}</StatusInfo>
        <StatusInfo ID="13">Cancallation policies overlaps</StatusInfo>
        <StatusInfo ID="14">Owner does not exist</StatusInfo>
        <StatusInfo ID="15">Apartment name ({0}) already exist in database.</StatusInfo>
        <StatusInfo ID="16">You already defined apartment with PUID:{0}</StatusInfo>
        <StatusInfo ID="17">Unexpected error, contact IT or try again</StatusInfo>
        <StatusInfo ID="18">Property with given ID does not exist.</StatusInfo>
        <StatusInfo ID="19">Dates mishmash</StatusInfo>
        <StatusInfo ID="20">Past dates</StatusInfo>
        <StatusInfo ID="21">Weird block dates for property: {0} - {1} - {2}. Whole block is {3} - {4}</StatusInfo>
        <StatusInfo ID="22">We have confirmed reservation for those dates. Please cancel the reservation instead of marking the dates as available.</StatusInfo>
        <StatusInfo ID="23">Wrong ImageTypeID:{0}</StatusInfo>
        <StatusInfo ID="24">Your are not the owner of the apartment.</StatusInfo>
        <StatusInfo ID="25">The value of "Bigger" must be smaller than the value of "Smaller".</StatusInfo>
        <StatusInfo ID="26">Warning! Look at Notifs collection.</StatusInfo>
        <StatusInfo ID="27">DaysToArrivalFrom and DaysToArrivalTo requires positive values.</StatusInfo>
        <StatusInfo ID="28">Reservation does not exist.</StatusInfo>
        <StatusInfo ID="29">Requested stay, cost details do not match with property on reservation on hold.</StatusInfo>
        <StatusInfo ID="30">Element ignored because of other errors.</StatusInfo>
        <StatusInfo ID="31">Error occured. All changes rolled back.</StatusInfo>
        <StatusInfo ID="32">Bigger and Smaller requires positive values.</StatusInfo>
        <StatusInfo ID="33">Smaller is smaller than Bigger.</StatusInfo>
        <StatusInfo ID="34">RUPrice is not valid. Correct price is:{0}</StatusInfo>
        <StatusInfo ID="35">AlreadyPaid is bigger than ClientPrice.</StatusInfo>
        <StatusInfo ID="36">Wrong DetailedLocationID. City or district precision is required.</StatusInfo>
        <StatusInfo ID="37">Property name is too long (max 150).</StatusInfo>
        <StatusInfo ID="38">Property has missing data and cannot be offered.</StatusInfo>
        <StatusInfo ID="39">Location does not exist.</StatusInfo>
        <StatusInfo ID="40">You cannot define discounts before the prices. The property has missing prices in given dates.</StatusInfo>
        <StatusInfo ID="41">The reservation was created by the other user.</StatusInfo>
        <StatusInfo ID="42">The reservation is expired.</StatusInfo>
        <StatusInfo ID="43">You cannot confirm this reservation. It's broken.</StatusInfo>
        <StatusInfo ID="44">The apartments are not in the same city.</StatusInfo>
        <StatusInfo ID="45">Data validation error.</StatusInfo>
        <StatusInfo ID="46">The property is not active. PropertyID:{0}</StatusInfo>
        <StatusInfo ID="47">Property is not available for a given dates. PropertyID:{0}</StatusInfo>
        <StatusInfo ID="48">The reservation is not on Put On Hold status.</StatusInfo>
        <StatusInfo ID="49">CountryID does not exist.</StatusInfo>
        <StatusInfo ID="50">Guest name is required.</StatusInfo>
        <StatusInfo ID="51">Guest surname is required.</StatusInfo>
        <StatusInfo ID="52">Guest email is required.</StatusInfo>
        <StatusInfo ID="53">This method is deprecated. Use Push_PutConfirmedReservationMulti_RS</StatusInfo>
        <StatusInfo ID="54">This method is deprecated. Use Push_PutPropertiesOnHold_RQ</StatusInfo>
        <StatusInfo ID="55">Negative values in price elements is not allowed.</StatusInfo>
        <StatusInfo ID="56">Property does not exist.</StatusInfo>
        <StatusInfo ID="57">The request contains both types of composition definitions: composition and composition with amenities. Please use only one type.</StatusInfo>
        <StatusInfo ID="58">This amenity: {0} is not allowed in room type: {1}</StatusInfo>
        <StatusInfo ID="59">Positive value is required</StatusInfo>
        <StatusInfo ID="60">Duplicate value in LOSS element</StatusInfo>
        <StatusInfo ID="61">Duplicate value in EGPS element</StatusInfo>
        <StatusInfo ID="62">Missing Text or Image value.</StatusInfo>
        <StatusInfo ID="63">Wrong laguage id:{0}.</StatusInfo>
        <StatusInfo ID="64">DayOfWeek attribute must be between {0} and {1}.</StatusInfo>
        <StatusInfo ID="65">No permission to property {0}.</StatusInfo>
        <StatusInfo ID="66">Coordinates are invalid or missing.</StatusInfo>
        <StatusInfo ID="67">Duplicate value in LOSPS element</StatusInfo>
        <StatusInfo ID="68">NumberOfGuests in LOSP element has to be greather than 0</StatusInfo>
        <StatusInfo ID="69">Building does not exist</StatusInfo>
        <StatusInfo ID="70">Some properties not updated:{0}</StatusInfo>
        <StatusInfo ID="71">Wrong security deposit type id: {0}</StatusInfo>
        <StatusInfo ID="72">Discount value can't be lower than 0.</StatusInfo>
        <StatusInfo ID="73">At least one PropertyID element is required.</StatusInfo>
        <StatusInfo ID="74">DateFrom has to be earlier than DateTo.</StatusInfo>
        <StatusInfo ID="75">DateFrom has to be earlier or equal to DateTo.</StatusInfo>
        <StatusInfo ID="76">StandardGuests must be smaller than CanSleepMax.</StatusInfo>
        <StatusInfo ID="77">NOP: positive value required.</StatusInfo>
        <StatusInfo ID="78">Minimum stay is not valid (X nights).</StatusInfo>
        <StatusInfo ID="79">Stay period doesn't match with minimum stay</StatusInfo>
        <StatusInfo ID="80">Cannot activate archived property</StatusInfo>
        <StatusInfo ID="81">You don't have permission to modify this owner</StatusInfo>
        <StatusInfo ID="82">Apartment is Archived or no longer available or not Active</StatusInfo>
        <StatusInfo ID="83">Mixed owners in the request. Contact IT.</StatusInfo>
        <StatusInfo ID="84">Too many properties in your request (max 100).</StatusInfo>
        <StatusInfo ID="85">Invalid time value. Allowed values 00:00 - 23:59</StatusInfo>
        <StatusInfo ID="86">Operation has reached the maximum limit of time. The results are not complete.</StatusInfo>
        <StatusInfo ID="87">Wrong page URL Type</StatusInfo>
        <StatusInfo ID="88">Wrong date format for parameter {0}</StatusInfo>
        <StatusInfo ID="89">Stay period doesn't match with changeover</StatusInfo>
        <StatusInfo ID="90">Enqueued</StatusInfo>
        <StatusInfo ID="91">Not found</StatusInfo>
        <StatusInfo ID="92">Duplicate value in distances.</StatusInfo>
        <StatusInfo ID="93">Unauthorized</StatusInfo>
        <StatusInfo ID="94">Some of required fields were not filled.</StatusInfo>
        <StatusInfo ID="95">Email already exists.</StatusInfo>
        <StatusInfo ID="96">Password must be at least 8 characters long.</StatusInfo>
        <StatusInfo ID="97">Standard number of guests must be of positive value.</StatusInfo>
        <StatusInfo ID="98">Deposit amount can't exceed value of 214,748.3647</StatusInfo>
        <StatusInfo ID="99">Technical error - missing file</StatusInfo>
        <StatusInfo ID="100">Property description is required</StatusInfo>
        <StatusInfo ID="101">Pets not allowed</StatusInfo>
        <StatusInfo ID="102">Currency doesn't match with city currency</StatusInfo>
        <StatusInfo ID="103">Properties collection cannot be empty</StatusInfo>
        <StatusInfo ID="104">You need provide at least one value to modify stay.</StatusInfo>
        <StatusInfo ID="105">Some periods overlap. Periods must be separable.</StatusInfo>
        <StatusInfo ID="106">You can only modify stay in confirmed reservation.</StatusInfo>
        <StatusInfo ID="107">No reserved apartment found.</StatusInfo>
        <StatusInfo ID="108">Client Price cannot be negative</StatusInfo>
        <StatusInfo ID="109">Already Paid cannot be negative.</StatusInfo>
        <StatusInfo ID="110">Cannot use OwnerID created by other users.</StatusInfo>
        <StatusInfo ID="111">Only property owner can add reviews.</StatusInfo>
        <StatusInfo ID="112">Review rating value must be between 0-5</StatusInfo>
        <StatusInfo ID="113">Submitted date must be later than arrival date</StatusInfo>
        <StatusInfo ID="114">Cannot remove confirmed reservation. Some periods ignored.</StatusInfo>
        <StatusInfo ID="115">MinStays not satisfied, collection cannot be empty.</StatusInfo>
        <StatusInfo ID="116">LocationID {0} is not proper city location.</StatusInfo>
        <StatusInfo ID="117">Only one description allowed per language.</StatusInfo>
        <StatusInfo ID="118">Max number of guests must be of positive value.</StatusInfo>
        <StatusInfo ID="119">Property name is not defined.</StatusInfo>
        <StatusInfo ID="120">Check-in / check-out details are incorrect.</StatusInfo>
        <StatusInfo ID="121">Reservation not mapped in PMS. Contact IT support with Rentals United ID and your PMS Reservation ID.</StatusInfo>
        <StatusInfo ID="122">Failed to modify reservation in PMS. Try again or contact IT support for more information.</StatusInfo>
        <StatusInfo ID="123">Failed to cancel reservation in PMS. Try again or contact IT support for more information.</StatusInfo>
        <StatusInfo ID="124">Failed to insert reservation in PMS. Try again or contact IT support for more information.</StatusInfo>
        <StatusInfo ID="125">Wrong quantity of amenities. It should be between 0 - 32767.</StatusInfo>
        <StatusInfo ID="126">Invalid URL.</StatusInfo>
        <StatusInfo ID="127">Missing mandatory element: {0}.</StatusInfo>
        <StatusInfo ID="128">Cancellation policy text cannot be empty.</StatusInfo>
        <StatusInfo ID="129">Only reservations for apartments from same city are allowed</StatusInfo>
        <StatusInfo ID="130">Cannot change apartment from city other than initial reservation. Cancel this reservation and create new one.</StatusInfo>
        <StatusInfo ID="131">Bad request.</StatusInfo>
        <StatusInfo ID="132">This functionality is forbidden for you.</StatusInfo>
        <StatusInfo ID="133">Too many images. Images limit is 100.</StatusInfo>
        <StatusInfo ID="134">Invalid currency.</StatusInfo>
        <StatusInfo ID="135">Request rejected by partner.</StatusInfo>
        <StatusInfo ID="136">Customer info is required.</StatusInfo>
        <StatusInfo ID="137">PMSID is not valid.</StatusInfo>
        <StatusInfo ID="138">Provide a not empty PUID.</StatusInfo>
        <StatusInfo ID="139">Cannot create new property as archived.</StatusInfo>
        <StatusInfo ID="140">PropertyID : {0} cannot be archived / activated. The whole request was cancelled. Use Push_PutProperty_RQ instead.</StatusInfo>
        <StatusInfo ID="141">PUID already exists for another property.</StatusInfo>
        <StatusInfo ID="142">Property already has PMSID assigned. You cannot omit PMSID while update.</StatusInfo>
        <StatusInfo ID="143">Cannot archive this property. {0}</StatusInfo>
        <StatusInfo ID="144">Invalid Additional fees collection. {0}</StatusInfo>
        <StatusInfo ID="145">There are not enough units in this property.</StatusInfo>
        <StatusInfo ID="146">Multi unit functionality is disabled.</StatusInfo>
        <StatusInfo ID="147">Changeover is invalid. Use number 1, 2, 3 or 4.</StatusInfo>
        <StatusInfo ID="148">Number of units do not match with reservation on hold.</StatusInfo>
        <StatusInfo ID="149">Units must be a positive number</StatusInfo>
        <StatusInfo ID="150">Invalid invoice ID</StatusInfo>
        <StatusInfo ID="151">CancelUrl is missing</StatusInfo>
        <StatusInfo ID="152">ReturnUrl is missing</StatusInfo>
        <StatusInfo ID="153">PayPal transaction failed</StatusInfo>
        <StatusInfo ID="154">Single unit apartment cannot be converted to multi unit</StatusInfo>
        <StatusInfo ID="155">ResApaID has to be provided for multi unit properties</StatusInfo>
        <StatusInfo ID="156">ResApaID is not valid</StatusInfo>
        <StatusInfo ID="157">Card registration failed</StatusInfo>
        <StatusInfo ID="158">Request rejected. Check PMS synchronization settings</StatusInfo>
        <StatusInfo ID="159">Failed to insert reservation for property {0}({1}) to PMS. {2}</StatusInfo>
        <StatusInfo ID="160">The location and city already added to database</StatusInfo>
        <StatusInfo ID="161">You are not permitted to list this user's reservations</StatusInfo>
        <StatusInfo ID="162">Pass valid email</StatusInfo>
        <StatusInfo ID="163">Future dates</StatusInfo>
        <StatusInfo ID="164">Invalid date format</StatusInfo>
        <StatusInfo ID="165">You cannot archive a confirmed reservation. If this is a cancellation please cancel it first.</StatusInfo>
        <StatusInfo ID="166">Reservation is archived. Unarchive first before performing this operation.</StatusInfo>
        <StatusInfo ID="167">Reservation is for properties you are not the owner of</StatusInfo>
        <StatusInfo ID="168">Reservation is not canceled.</StatusInfo>
        <StatusInfo ID="169">Cannot process a request because apartment is connected to RMS</StatusInfo>
        <StatusInfo ID="170">Invalid property type id</StatusInfo>
        <StatusInfo ID="171">Invalid xml format in AdditionalData node</StatusInfo>
        <StatusInfo ID="172">Preparation time before arrival is blocking requested stay</StatusInfo>
        <StatusInfo ID="173">Discount ignored or trimmed. Maximum length of discounted stay is {0} nights.</StatusInfo>
        <StatusInfo ID="174">Invalid field LicenceInfo/FrenchLicenceInfo/CityTaxCategory. Allowed values: 11-19</StatusInfo>
        <StatusInfo ID="175">Invalid field LicenceInfo/FrenchLicenceInfo/TypeOfResidence. Allowed values: 1-3</StatusInfo>
        <StatusInfo ID="176">Request confirmation in external system failed</StatusInfo>
        <StatusInfo ID="177">Property is not connected to external system</StatusInfo>
        <StatusInfo ID="178">This reservation was made in external system and cannot be cancelled in Rentals United. Please cancel it directly in the sales channel</StatusInfo>
        <StatusInfo ID="179">Additional fee value must be greater or equal zero</StatusInfo>
        <StatusInfo ID="180">LOS pricing and full stay pricing cannot be defined in the same season</StatusInfo>
    </Statuses>
</Pull_ListStatuses_RS>

You can pull all possible RU XML API response statuses with a detailed StatusInfo message from Pull_ListStatuses_RQ

XML Response with Notifs collection

<Push_PutAvb_RS>
 <Status ID="5">Warning! Look at Notifs collection.</Status>
 <ResponseID ID="1">Success</ResponseID>
 <Notifs>
 <Notif StatusID="5" DateFrom="2020-03-01" DateTo="2020-03-04">Internal error, please try again</Notif>
 <Notif StatusID="6" DateFrom="2020-04-05" DateTo="2020-03-02">Dates mishmash</Notif>
 </Notifs>
</Push_PutAvb_RS>

Success status means that everything is ok with your XML request.

Error status means that something is wrong with your XML request.

Some Rentals United API methods process parts of submitted XML Requests despite returning Error Response.

For example, Push_PutAvbUnits_RQ which you use to upload availability, minimum stay and changeover of a property, processes each date range independently. It means that some date ranges can be successfully saved and erroneous date ranges will return a detailed message in Notifs collection in the XML Response.

API Limits

There are limits of number of requests you can make to Rentals United API. There are two major limit types:

If the API limit is exceeded, you will receive a corresponding error message in the XML Response.

By default, you can make total of 20 concurrent Requests to Rentals United API with the following exceptions

Pull_ListReservations_RQ - no concurrent XML Requests are allowed (Concurrency limit) and you can make only one request per minute (Rate limit)

The below methods are limited to one request at a time per unique property (Concurrency limit) to ensure that critical sections are held. (i.e. concurrent XML Requests to modify availability for the same property and dates at the same time are not allowed). In total you can make maximum 20 API calls (global Concurrency limit) i.e. you can modify availability for maximum 20 unique properties concurrently.

Sample code

You can use the below method to post requests to the RU XML API

private string SendXmlRequest(string requestXml)
{
  HttpWebRequest httpWebRequest =
            (HttpWebRequest)WebRequest.Create("http://rm.rentalsunited.com/API/Handler.ashx");
  httpWebRequest.Method = "POST";
  httpWebRequest.ContentType = "application/xml";
  byte[] content = Encoding.UTF8.GetBytes(requestXml);
  httpWebRequest.ContentLength = content.Length;
  httpWebRequest.Timeout = 180000;
  using(Stream stream = httpWebRequest.GetRequestStream())
  {
    stream.Write(content, 0, content.Length);
  }
  using(HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse())
  {
    using(StreamReader reader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.UTF8))
    {
      return reader.ReadToEnd();
    }
  }
}

Usage of WS.XMLLayer.dll library and SendXMLRequest method

public int PushProperty()
{
  //Initiate PutProperty object
  WS.XMLLayer.WebMethods.Property.Push_PutProperty_RQ request = new WS.XMLLayer.WebMethods.Property.Push_PutProperty_RQ();

  //Prepare authentication object
  WS.XMLLayer.WebMethods.Authentication authentication = new WS.XMLLayer.WebMethods.Authentication();
  authentication.UserName = username;
  authentication.Password = password;

  //Assign authentication to request object
  request.Authentication = authentication;
  request.Property = CreatePropertyData();
  string requestXml = WS.XMLLayer.XmlTools.SerializeObject<WS.XMLLayer.WebMethods.Property.Push_PutProperty_RQ>(request);

  //Send request and get response
  string responseXml = SendXmlRequest(requestXml);

  //Deserialize response
  WS.XMLLayer.WebMethods.Property.Push_PutProperty_RS response = WS.XMLLayer.XmlTools.DeserializeObject<WS.XMLLayer.WebMethods.Property.Push_PutProperty_RS>(responseXml);

  //Check response
  if(response.Status.ID == 0)
  {
    //Success
    return response.ID;
  }
  else
  {
    //Add error handling here. Check the documention on specific method.
  }
}

private WS.XMLLayer.WebMethods.Property.PropertyDetailedInfo CreatePropertyData()
{
  //Create property data here
}

We provide a WS.XMLLayer .NET C# library with classes corresponding to all necessary XML requests and responses. You can download it here.

WS.XMLLayer library implements methods to serialize and deserialize Rentals United API XML Requests and XML Responses using built in .NET System.XML library.

You can plug this library directly into your project or use this library as guidelines for coding your own Data Model.

You can easily find an equivalent of .NET System.XML library in other programming languages and rewrite WS.XMLLayer to the programming language you use.

Extend your PMS with Channel Management functionality

You run a Property Management Software and you would like to use Rentals United as a Channel Manager. In this section, we describe best distribution practices for vacation rental properties. Follow the steps, complete integration and enjoy new reservations from multiple Sales Channels.

Integration Architecture

The below examples are only pseudo code, do not attempt to use and compile itthem! They are here to present a concept.

namespace SynchronizationPseudoCode
{
    class Push
    {
        enum EventType
        {
            Static
            , Availability
            , Pricing
        }
        enum ChangeOverType
        {
            Both
            , None
            , CheckInOnly
            , CheckOutOnly
        }
        class Event
        {
            int propertyId;
            EventType type;
        }
        class AvailabilityEvent : Event
        {
            DateTime dateFrom;
            DateTime dateTo;
        }
        class PricingEvent : Event
        {
            DateTime dateFrom;
            DateTime dateTo;
        }
        class EventDetails
        {
            int propertyID;
        }
        class StaticEventDetails : EventDetails
        {
            StaticData staticData;
        }
        class StaticData
        {
            // your property definition e.g. property names, images, description, etc.
        }
        class PricingEventDetails : EventDetails
        {
            List<PricingData> pricesData;
        }
        class PricingData
        {
            decimal price;
            DateTime dateFrom;
            DateTime dateTo;
        }
        class AvailabilityEventDetails : EventDetails
        {
            List<AvailabilityData> availabilityData;
        }
        class AvailabilityData
        {
            int availableUnits;
            int minimumStay;
            ChangeOverType changeOver;
            DateTime dateFrom;
            DateTime dateTo;
        }
        static void SynchronizeEvents() // service process
        {
            while (true)
            {
                List<Event> events = getQueuedEvents();
                foreach (var e in events)
                {
                    try
                    {
                        BaseRequest request = null;
                        switch (e.type)
                        {
                            case Static:
                                var eventDetails = getEventDetails<StaticEventDetails>(e);
                                request = new Push_PutSpecProp_RQ(eventDetails.propertyId, eventDetails.staticData);
                                break;
                            case Prices:
                                var eventDetails = getEventDetails<PricingEventDetails>(e);
                                request = new Push_PutPrices_RQ(eventDetails.propertyId, eventDetails.pricesData);
                                break;
                            case Availability:
                                var eventDetails = getEventDetails<AvailabilityEventDetails>(e);
                                request = new Push_PutAvbUnits_RQ(eventDetails.propertyId, eventDetails.availabilityData);
                                break;
                        }
                        var response = CallRentalsUnitedAPI(request);
                        //for troubleshooting purposes                        
                        var logId = LogSynchronization(request, response);
                        if (response.Status.ID == 0)
                        {
                            //success
                            RemoveEventFromQueue(e);
                        }
                        else
                        {
                            //do not remove event from the queue
                            //log synchronization error including logId for details
                            LogSyncError(e, logId);
                        }
                    } catch (Exception exc)
                    {
                        LogSyncError(e, exc);
                    }
                }
            }
        }
    }
}

An effective integration is composed of two parts:

  1. Full data sync required when you initially create a property, performed periodically (weekly or monthly) and emergency synchronization performed or upon Rentals United request.
  2. Delta sync - performed constantly (on data change event in your system)

Below you will find a high-level overview of the recommended system architecture designed for maximum data consistency, minimum load and minimum sync delay. The below events architecture isolates Rentals United integration from other operations your system performs.

All business layer code that modifies property data in your system should trigger an internal event which gets queued. A Service constantly pulls events from the queue and sends updates to Rentals United via the API. It is essential to push delta updates to Rentals United. For example: When a date gets blocked for a specific property in your system, an event is generated to update only this particular date in Rentals United, not the whole calendar!

Explanations of elements from diagrams:

Action – a modify action that adds, deletes or modifies property data (static, availability or price). This can be triggered by the user or by interacting system.

Your Applications – Any of your applications that modify property data.

Queue – a queue of all unprocessed events.

Event – an element that stores information that a property data has changed (Event example: property X – images changed, property Y – availability for specified dates changed, property Z – pricing for specified dates changed. Events' would consist of information of what changed without the actual values. Current values are pulled from your system just before sending them to Rentals United API.

Service - an application which processes events from the queue continuously.

A single event processing is composed of the following steps * pull an event from the queue * identify type of data changed * identify property, dates, etc. affected (stored within the event object) * pull current data from your system for affected property, dates, etc. * push data to Rentals United API

In order to prevent from dirty reads, a single data event does not store the data values to synchronise, it stores only the metadata of a change (property, dates affected). Current values are pulled by the Service just before sending them to the Rentals United API. Thanks to this approach, events processing order does not affect data consistency.

Dictionaries

Implement Pull methods - Dictionaries methods to be able to communicate with Rentals United API i.e. create property featuring all descriptive content (Rooms, Amenities, etc.)

Dictionary values should be stored in your local cache and refreshed every 3 months or upon Rentals United request.

The more Rentals United dictionary values you map, the more complete listings you will create.

Creating properties

Use Push_PutProperty_RQ to create a new property in Rentals United. You may wish to group properties into buildings (this is not mandatory unless the property is multiunit type). Use Push_PutBuilding_RQ to create a building.

Modyfying properties information

Use Push_PutProperty_RQ with a Property/ID parameter to modify static property data of an existing property.

Modifying a property's status

To change a property's status in Rentals United use Push_SetPropertiesStatus_RQ.

There are two flags affecting a property status in Rentals United and connected Sales Channels.

Properties with isActive = true and isArchived = false are visible in the Rentals United UI and can be distributed to the Sales Channels.

You can set up isActive = false and isArchived = false if you wish to temporary deactivate a property in Rentals United and connected Sales Channels. The property is still visible in the Rentals United UI, but availability on the connected Sales Channels gets automatically blocked.

Once you set up isActive = true and isArchived = false, the property and the Sales Channels connections will be restored automatically.

A property in Rentals United will get archived and hidden in Rentals United UI when you set isActive = false and isArchived = true. All of the Sales Channels connections for archived property will be disabled.

Managing a property's calendar

Property calendar consists of * availability (number of units) * minimum stay * changeover days

To push a property's calendar, use Push_PutAvbUnits_RQ. Multiple periods can be pushed in one XML Request. Only calendar data for specified date ranges will get overwritten. Other dates will be untouched.

The default changeover value is Both, check-in and check-out are possible. The minimum stay value must be greater than 0. To remove minimum stay restriction for a date range, set minimum stay value to 1.

Each date range element in Push_PutAvbUnits_RQ, is processed independently. If an error occurs, you need to review the date range element(s) that returned an error. Review the Notifs collection in the XML Response for more info.

Modifying a property's price

Please study VR Price Calculation Logic before you map your pricing logic to Rentals United pricing logic. Rentals United supports seasonal rates, extra guests prices, length of stay pricing, occupancy pricing, last-minute discounts, length of stay discounts, extra fees, taxes and multiple combinations of those.

To modify prices for a specific property, use Push_PutPrices_RQ.

Days without pricing set are deemed as not available - availability is blocked on the Sales Channels.

Reservations & Lead retrieval

In order to get the list of reservations made for your properties, use Pull_ListReservations_RQ. You can make the call every 10 minutes and use LocationID="0" in the request to get reservations for properties in all locations. This method returns both created, modified and cancelled reservations at the same time.

We strongly recommend that you implement Reservation Live Notification Mechanism which notifies your system in a real time about new reservations and reservation modifications. Read more in the Rentals United API Reference here.

You need to create a HTTPS handler, which accepts 3 types of notification XMLs:

LNM_PutConfirmedReservation_RQ – new confirmed reservation notifications

LNM_CancelReservation_RQ – cancellation notifications of confirmed reservations and leads

LNM_PutLeadReservation_RQ – new lead notifications

Live Notification Mechanism does not process your webhook response and does not resend notifications in case of errors. You need to implement Pull_ListReservations_RQ and Pull_GetLeads_RQ and periodically check if all reservations and reservation modifications were properly delivered via RLNM.

Reservations & Lead handling

Rentals United provides your system with reservations from multiple Sales Channels. Reservation data received by Rentals United from the Sales Channels is available for you to pull via Rentals United API. Different channels provide different reservation details.

The differences between Channels occur mostly in the following areas:

You can modify reservations created by Sales Channels using Push_ModifyStay_RQ. Your changes are made only in Rentals United and are not propagated to the Sales Channels. You may wish to modify reservations in the below scenarios:

FAQ

What needs to be created before I can add a property to Rentals United via the API?

All you need is an active Rentals United account, there are no other prerequisites. You can create new Rentals United accounts via the User Interface Sign-up. Users are isolated on separate accounts with individual credentials for logging in to the UI or authorising to the API.

How do I create a property on a brand-new Rentals United account?

In order to create a property you just need to use Push_PutProperty_RQ with all the mandatory information provided. You will need to pull dictionary methods and use the values in the Push_PutProperty_RQ. Dictionary values should be pulled and updated in your local cache once a month and every time you receive an email notification from us that dictionary values have changed.

Do you calculate prices based on the rates pushed via the API?

Yes. We distribute pricing provided by you to connected Sales Channels. This is extremely important to map the pricing logic precisely between your PMS and Rentals United so that a booking price is always correct. Rentals United pricing logic is described in VR price calculation logic section.

Do you quote our system for a final/stay price and availability before making a booking? Or do you accept a booking at your calculated price?

We do not quote your system for a final/stay price before allowing a booking from a Sales Channel. You are responsible for providing up-to-date rates via the API. The best practice is to push new prices to Rentals United immediately after they get changed in your system (event driven delta updates).

How do I receive bookings from Rentals United?

You can pull bookings from Rentals United via Pull_ListReservations_RQ API method. You should call Pull_ListReservations_RQ method every 10 minutes and pull bookings from the last hour.

There is also a webhook system in place called Reservations Live Notification Mechanism (RLNM). RLNM sends notifications to your handler, which you can set with LNM_PutHandlerUrl_RQ. Notifications will be triggered by Rentals United at the moment of a new booking created, modified or cancelled in Rentals United.

Do you handle the credit card processing or do you pass it to us to process?

We do not process any payments ourselves (Rentals United is not a merchant of record). You can pull credit card details via the API (if you are PCI DSS compliant) via Pull_ListReservations_RQ Users can also charge the guests' credit cards through Rentals United UI via a selected 3rd party Payment Gateway.

How can I test a booking process?

You can add a booking through Rentals United UI and then fetch it with Pull_ListReservations_RQ. You can also attempt to modify a test booking and cancel it via UI and pull changes via API.

I can create owners using Push_PutOwner_RQ method (an ownerID is returned). However, when I try to Pull_GetOwnerDetails_RQ with the new ownerID, I get an "Unauthorized" error.

Owners will only become active and visible via the API after you assign properties to them.

When I list all owners via Pull_ListAllOwners_RQ, only one owner is returned.

Owners will not be visible until you assign properties to them. Otherwise only the default account owner will be visible.

How Owner in RU is related to a property

Owner is basically a landlord or a contact person for a property. You can use Owners to sort which property belongs to whom, but Owners have no impact on how the properties are distributed and presented externally.

In out PMS, all the properties have owners, and many owners have several properties. Should I create a separate owner in RU for every owner in the PMS?

This depends on how you would like to run the account(s). Owners do not have separate login details in Rentals United. If you want to allow your owners to access only their own properties in Rentals United UI, you need to create separate Rentals United account for every owner in your PMS.

How can I delete an owner?

There is no API method to delete owners.

Do I need to group properties into Buildings?

Buildings in Rentals United serve the same purpose as folders on drives. You can use buildings to group properties together, but they have no impact on publishing properties on the Sales Channels. Building are optional and you can have properties without buildings assigned. The only exception is multiunit-type property. Multiunit properties must be assigned to buildings.

What Agents are for?

Every Sales Channel in Rentals United is represented as an Agent in the API. Agents represent the reservation source.

Add Vacation Rentals product to your offering

You run a Sales Channel and you would like to add Vacation Rentals properties to your offering. In this section, we describe best practices for adding Vacation Rental properties to your offering, updating calendar data and reservation handling. Follow the steps, complete integration and enjoy new Vacation Rentals inventory on your website.

Integration architecture

The below examples are only pseudo code, do not attempt to use and compile itthem! They are here to present a concept.

class RentalsUnited
{
  static void Static()
  {
    Collection listOfLocations = Pull_ListCitiesProps_RQ(); // retrieve all locations with at least 1 property
    foreach (location in listOfLocations)
    {
      Collection listOfProperties = Pull_ListProp_RQ(location); // retrieve all properties you have access to
      foreach (property in listOfProperties)
      {
        var importStatus;
        if (!existsInMySystem)
        {
          var propertyDetails = Pull_ListSpecProp_RQ(property);
          importStatus = addPropertyToMySystem(propertyDetails);
        }
        else
        {
          if (myLastSyncDate < property.LastMod)
          {
            var propertyDetails = Pull_ListSpecProp_RQ(property);
            importStatus = updatePropertyInMySystem(propertyDetails);
          }
          else
          {
            do nothing;
          }
        }
        Push_PutPropertyExternalListing_RQ(property, importStatus);
      }
    }
  }

  static void Availability()
  {
    Collection listOfPropertiesInMySystem = GetAlreadyImportedPropertiesIntoMySystem();
    foreach (property in listOfProperties)
    {
      Collection dates = Pull_ListPropertyAvbChanges_RQ(property, myLastSyncDate);
      Collection periods = MergeAvbDates(dates); // join adjacent dates into one period
      foreach (period in periods)
      {
        var Block = Pull_ListPropertyBlocks_RQ(property, period.DateFrom, period.DateTo); // get the property's blocks
        var MinStay = Pull_ListPropertyMinStay_RQ(property, period.DateFrom, period.DateTo); // get the property's minstay policy
        var Changeover = Pull_GetChangeoverDays_RQ(property, period.DateFrom, period.DateTo); // get the property's changeover policy
        saveInMySystem(property, Block, MinStay, Changeover);
      }
    }
  }

  static void Prices()
  {
    Collection listOfPropertiesInMySystem = GetAlreadyImportedPropertiesIntoMySystem();
    foreach (property in listOfProperties)
    {
      Collection dates = Pull_ListPropertyPriceChanges_RQ(property, myLastSyncDate);
      Collection periods = MergePrices(dates); // join adjacent dates into one period
      foreach (period in periods)
      {
        var price = Pull_ListPropertyPrices_RQ(property, period.DateFrom, period.DateTo); // get the property's base prices
        var discounts = Pull_ListPropertyDiscounts_RQ(property, period.DateFrom, period.DateTo); // get the property's discounts
        saveInMySystem(property, price, discounts);
      }
    }
  }
}

An effective integration is composed of two parts:

  1. Full data sync required when you initially retrieve a property, performed periodically (weekly or monthly) and emergency synchronization performed or upon Rentals United request.
  2. Delta sync - performed constantly (on data change event in Rentals United)

Below you will find a high-level overview of the recommended system architecture designed for maximum data consistency, minimum load and minimum sync delay. The below events architecture isolates Rentals United integration from other operations your system performs.

Dictionaries

Implement Pull methods - Dictionaries methods to be able to communicate with Rentals United API i.e. create property featuring all descriptive content (Rooms, Amenities, etc.)

Dictionary values should be stored in your local cache and refreshed every 3 months or upon Rentals United request.

The more Rentals United dictionary values you map, the more complete listings you will create.

Retrieving properties

You will get access to properties once a property manager selects your Sales Channel in Rentals United, completes connection wizard and activates the connection.

We offer 3 API methods allowing you to retrieve properties depending on your needs: - Pull_ListProp_RQ - allows you to pull properties by LocationID - Pull_ListOwnerProp_RQ - allows you to pull properties by OwnerID - Pull_ListPropByCreationDate_RQ - allows you to pull properties by the date they were created in Rentals United.

To get the details of a specific property, use Pull_ListSpecProp_RQ

User and Owner ID

In RU API, every account can have one or multiple owners. Owners can be used to group properties, for example, properties with the same landlord or if they share the same location.

Retrieving property updates

Use Live Notification Mechanism to receive webhooks once property data gets changed in Rentals United. There are 3 data change types supported

Onboarding new properties

Periodicaly use Pull_ListProp_RQ or Pull_ListOwnerProp_RQ to identify new properties connected to your Sales Channel.

Only properties with isActive = true, isArchived = false are available for sales.

To get the details of a specific property, use Pull_ListSpecProp_RQ

Removing properties

Properties with isActive = false, isArchived = true or false or property not available in Pull_ListProp_RQ XML Response are not available for sales and should be removed from your system.

Updating property external status

Use Push_PutPropertyExternalListing_RQ to provide current status of a listing on your Sales Channel.

Retrieving calendar

Property calendar consists of - availability (number of units) - minimum stay - changeover days

Use Pull_ListPropertyAvailabilityCalendar_RQ to pull property calendar at least once a day and every time your receive a Live Notification to your LNM endpoint.

Retrieving pricing

Please study VR Price Calculation Logic before you map Rentals United pricing logic to your platform pricing logic. Rentals United supports seasonal rates, extra guests prices, length of stay pricing, occupancy pricing, last-minute discounts, length of stay discounts, extra fees, taxes and multiple combinations of those.

Use Pull_ListPropertyPrices_RQ to pull property pricing at least once a day and every time your receive a Live Notification to your LNM endpoint. Use Pull_ListPropertyDiscounts_RQ to pull property discounts at least once a day and every time your receive a Live Notification to your LNM endpoint.

Reservations & Leads creation

The below examples are only pseudo code, do not attempt to use and compile it! It is only here to present the concept.

namespace PseudoCodeDocumentation
{

    static void makeReservation()
    {
        var clientPrice < the final price the client will pay
        var canBook = Pull_GetPropertyAvbPrice_RQ(propertyid, arrival, departure, guests);
        if (canBook.Status == Success)
        {
            var result = Push_PutConfirmedReservationMulti_RQ(propertyid, arrival, departure, guests, guestInfo, canBook.RUPrice, clientprice);
            if (result.Status == Success)
            {
                saveInMySystem(result.ReservationID);
                ShowReservationConfirmedMessage();
            }
            else
            {
                ShowErrorMessage();
            }
        }
        else
        {
            ShowPropertyNotAvailableMessage();
        }
    }

    static void modifyReservation()
    {
        var ReservationID; //ReservationID returned by RentalsUnited
        var initialStay = GetInitialStayFromMySystem(ReservationID);
        var newStay = GetNewStayFromMySystem(ReservationID);
        var result = Push_ModifyStay_RQ(ReservationID, initialStay, newStay);
        if (result.Status == Success)
        {
            updateInMySystem(result.ReservationID, newStay); //save updated values in my system
            ShowReservationUpdatedMessage();
        }
        else
        {
            ShowErrorMessage();
        }
    }

    static void cancelReservation()
    {
        var ReservationID; //ReservationID returned by RentalsUnited
        var result = Push_CancelReservation_RQ(ReservationID);
        if (result.Status == Success)
        {
            updateInMySystem(result.ReservationID); //save updated values in my system
            ShowReservationCancelledMessage();
        }
        else
        {
            ShowErrorMessage();
        }
    }
}

In order to create a new confirmed reservations, use Push_PutConfirmedReservationMulti_RQ. In order to cancel a confirmed reservation created by you, use Push_CancelReservation_RQ. In order to create an enquiry/request/lead, use Push_PutLead_RQ. You can modify already existing reservation using Push_ModifyStay_RQ

Guest Communication

Rentals United Guest Communication REST API Documentation

https://api.rentalsunited.com/swagger/ui/index

In this section we describe Guest Communication API desgined for:

Rentals United Guest communication currently supports:

Swagger documentation for Rentals United Guest Communication REST API is available under the below link: https://api.rentalsunited.com/swagger/ui/index

Guest Communication for Sales Channels

You are integrated with Rentals United as a Sales Channel and you would like to automatically exchange messages between Guests and Property Providers via Rentals United Guest Communication REST API. In this section we describe best practices for Guest Communication integration, starting a new thread, posting messages to a thread, getting new messages, marking messages as “read”, getting webhook notifications when a new message is posted.

An effective Guest Communication integration for a Sales Channel is composed of the following steps:

Guest Communication for PMSes

You are integrated with Rentals United as a Property Management System and you would like to automatically exchange messages with Guests via Rentals United Guest Communication REST API. In this section we describe best practices for Guest Communication integration, fetching threads attached to reservations, getting messages, posting replies, marking message as “read”, getting webhook notifications when a new message is posted.

An effective Guest Communication integration for a PMS is composed of the following steps:

API Reference

The API Reference section documents each and every endpoint: HTTP routes, input requests, output responses, and what each domain object and its attributes mean.

Abbreviations in API

Abbreviation Description
C Container element
M Mandatory element
O Optional element
X

Authentication

To authorize, use this code:

<Pull_ListStatuses_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListStatuses_RQ>

Pull methods - Dictionaries

This section contains information about the predefined dictionary values used in Rentals United like list of property types, amenities, etc.

Make sure create proper mappings between values retrieved from these dictionaries and your system. You will use these mappings to encode data sent and received from rentals united API.

List statuses

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Status;

Pull_ListStatuses_RQ request = new Pull_ListStatuses_RQ() 
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListStatuses_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try 
{
    Pull_ListStatuses_RS response = XmlTools.DeserializeObject<Pull_ListStatuses_RS>(xmlResponse);
    // process response object
}
catch 
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Rentals United API will provide a response including:

Request

XML Request

<Pull_ListStatuses_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
</Pull_ListStatuses_RQ>
XML Path Data Type Type Description
Pull_ListStatuses_RQ C Root element
Pull_ListStatuses_RQ/Authentication C, M Authentication details
Pull_ListStatuses_RQ/Authentication/UserName String(50) M Username
Pull_ListStatuses_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListStatuses_RS>
    <Status ID="0">Success</Status>
    <ResponseID>d3144ddc232f40ccb2b974e0e4ef66f5</ResponseID>
    <Statuses>
        <StatusInfo ID="-6">This request was rate limited. Maximum number of requests allowed for this API method with specified parameters is {0} per {1} sliding window. You have reached this limit.</StatusInfo>
        <StatusInfo ID="-5">This request was rate limited. Maximum concurrent requests allowed for this API method with specified parameters is {0}. You have reached this limit.</StatusInfo>
        <StatusInfo ID="-4">Incorrect login or password</StatusInfo>
        <StatusInfo ID="-3">Invalid request. {0}</StatusInfo>
        <StatusInfo ID="-2">This request cannot be processed. {0}</StatusInfo>
        <StatusInfo ID="-1">The XML contains not implemented method</StatusInfo>
        <StatusInfo ID="0">Success</StatusInfo>
        <StatusInfo ID="1">Property is not available for a given dates</StatusInfo>
        <StatusInfo ID="2">Nothing available for a given dates</StatusInfo>
        <StatusInfo ID="3">Property has no price settings for a given dates</StatusInfo>
        <StatusInfo ID="4">Wrong destination id:{0}</StatusInfo>
        <StatusInfo ID="5">Wrong distance unit id:{0}</StatusInfo>
        <StatusInfo ID="6">Wrong composition room id:{0}</StatusInfo>
        <StatusInfo ID="7">Wrong amenity id:{0}</StatusInfo>
        <StatusInfo ID="8">Wrong arrival instructions</StatusInfo>
        <StatusInfo ID="9">Could not insert late arrival fee, From:{0} To:{1} Fee:{2}</StatusInfo>
        <StatusInfo ID="10">Could not insert early departure fee, From:{0} To:{1} Fee:{2}</StatusInfo>
        <StatusInfo ID="11">Wrong payment method id:{0}</StatusInfo>
        <StatusInfo ID="12">Wrong deposit type id:{0}</StatusInfo>
        <StatusInfo ID="13">Cancallation policies overlaps</StatusInfo>
        <StatusInfo ID="14">Owner does not exist</StatusInfo>
        <StatusInfo ID="15">Apartment name ({0}) already exist in database.</StatusInfo>
        <StatusInfo ID="16">You already defined apartment with PUID:{0}</StatusInfo>
        <StatusInfo ID="17">Unexpected error, contact IT or try again</StatusInfo>
        <StatusInfo ID="18">Property with given ID does not exist.</StatusInfo>
        <StatusInfo ID="19">Dates mishmash</StatusInfo>
        <StatusInfo ID="20">Past dates</StatusInfo>
        <StatusInfo ID="21">Weird block dates for property: {0} - {1} - {2}. Whole block is {3} - {4}</StatusInfo>
        <StatusInfo ID="22">We have confirmed reservation for those dates. Please cancel the reservation instead of marking the dates as available.</StatusInfo>
        <StatusInfo ID="23">Wrong ImageTypeID:{0}</StatusInfo>
        <StatusInfo ID="24">Your are not the owner of the apartment.</StatusInfo>
        <StatusInfo ID="25">The value of "Bigger" must be smaller than the value of "Smaller".</StatusInfo>
        <StatusInfo ID="26">Warning! Look at Notifs collection.</StatusInfo>
        <StatusInfo ID="27">DaysToArrivalFrom and DaysToArrivalTo requires positive values.</StatusInfo>
        <StatusInfo ID="28">Reservation does not exist.</StatusInfo>
        <StatusInfo ID="29">Requested stay, cost details do not match with property on reservation on hold.</StatusInfo>
        <StatusInfo ID="30">Element ignored because of other errors.</StatusInfo>
        <StatusInfo ID="31">Error occured. All changes rolled back.</StatusInfo>
        <StatusInfo ID="32">Bigger and Smaller requires positive values.</StatusInfo>
        <StatusInfo ID="33">Smaller is smaller than Bigger.</StatusInfo>
        <StatusInfo ID="34">RUPrice is not valid. Correct price is:{0}</StatusInfo>
        <StatusInfo ID="35">AlreadyPaid is bigger than ClientPrice.</StatusInfo>
        <StatusInfo ID="36">Wrong DetailedLocationID. City or district precision is required.</StatusInfo>
        <StatusInfo ID="37">Property name is too long (max 150).</StatusInfo>
        <StatusInfo ID="38">Property has missing data and cannot be offered.</StatusInfo>
        <StatusInfo ID="39">Location does not exist.</StatusInfo>
        <StatusInfo ID="40">You cannot define discounts before the prices. The property has missing prices in given dates.</StatusInfo>
        <StatusInfo ID="41">The reservation was created by the other user.</StatusInfo>
        <StatusInfo ID="42">The reservation is expired.</StatusInfo>
        <StatusInfo ID="43">You cannot confirm this reservation. It's broken.</StatusInfo>
        <StatusInfo ID="44">The apartments are not in the same city.</StatusInfo>
        <StatusInfo ID="45">Data validation error.</StatusInfo>
        <StatusInfo ID="46">The property is not active. PropertyID:{0}</StatusInfo>
        <StatusInfo ID="47">Property is not available for a given dates. PropertyID:{0}</StatusInfo>
        <StatusInfo ID="48">The reservation is not on Put On Hold status.</StatusInfo>
        <StatusInfo ID="49">CountryID does not exist.</StatusInfo>
        <StatusInfo ID="50">Guest name is required.</StatusInfo>
        <StatusInfo ID="51">Guest surname is required.</StatusInfo>
        <StatusInfo ID="52">Guest email is required.</StatusInfo>
        <StatusInfo ID="53">This method is deprecated. Use Push_PutConfirmedReservationMulti_RS</StatusInfo>
        <StatusInfo ID="54">This method is deprecated. Use Push_PutPropertiesOnHold_RQ</StatusInfo>
        <StatusInfo ID="55">Negative values in price elements is not allowed.</StatusInfo>
        <StatusInfo ID="56">Property does not exist.</StatusInfo>
        <StatusInfo ID="57">The request contains both types of composition definitions: composition and composition with amenities. Please use only one type.</StatusInfo>
        <StatusInfo ID="58">This amenity: {0} is not allowed in room type: {1}</StatusInfo>
        <StatusInfo ID="59">Positive value is required</StatusInfo>
        <StatusInfo ID="60">Duplicate value in LOSS element</StatusInfo>
        <StatusInfo ID="61">Duplicate value in EGPS element</StatusInfo>
        <StatusInfo ID="62">Missing Text or Image value.</StatusInfo>
        <StatusInfo ID="63">Wrong laguage id:{0}.</StatusInfo>
        <StatusInfo ID="64">DayOfWeek attribute must be between {0} and {1}.</StatusInfo>
        <StatusInfo ID="65">No permission to property {0}.</StatusInfo>
        <StatusInfo ID="66">Coordinates are invalid or missing.</StatusInfo>
        <StatusInfo ID="67">Duplicate value in LOSPS element</StatusInfo>
        <StatusInfo ID="68">NumberOfGuests in LOSP element has to be greather than 0</StatusInfo>
        <StatusInfo ID="69">Building does not exist</StatusInfo>
        <StatusInfo ID="70">Some properties not updated:{0}</StatusInfo>
        <StatusInfo ID="71">Wrong security deposit type id: {0}</StatusInfo>
        <StatusInfo ID="72">Discount value can't be lower than 0.</StatusInfo>
        <StatusInfo ID="73">At least one PropertyID element is required.</StatusInfo>
        <StatusInfo ID="74">DateFrom has to be earlier than DateTo.</StatusInfo>
        <StatusInfo ID="75">DateFrom has to be earlier or equal to DateTo.</StatusInfo>
        <StatusInfo ID="76">StandardGuests must be smaller than CanSleepMax.</StatusInfo>
        <StatusInfo ID="77">NOP: positive value required.</StatusInfo>
        <StatusInfo ID="78">Minimum stay is not valid (X nights).</StatusInfo>
        <StatusInfo ID="79">Stay period doesn't match with minimum stay</StatusInfo>
        <StatusInfo ID="80">Cannot activate archived property</StatusInfo>
        <StatusInfo ID="81">You don't have permission to modify this owner</StatusInfo>
        <StatusInfo ID="82">Apartment is Archived or no longer available or not Active</StatusInfo>
        <StatusInfo ID="83">Mixed owners in the request. Contact IT.</StatusInfo>
        <StatusInfo ID="84">Too many properties in your request (max 100).</StatusInfo>
        <StatusInfo ID="85">Invalid time value. Allowed values 00:00 - 23:59</StatusInfo>
        <StatusInfo ID="86">Operation has reached the maximum limit of time. The results are not complete.</StatusInfo>
        <StatusInfo ID="87">Wrong page URL Type</StatusInfo>
        <StatusInfo ID="88">Wrong date format for parameter {0}</StatusInfo>
        <StatusInfo ID="89">Stay period doesn't match with changeover</StatusInfo>
        <StatusInfo ID="90">Enqueued</StatusInfo>
        <StatusInfo ID="91">Not found</StatusInfo>
        <StatusInfo ID="92">Duplicate value in distances.</StatusInfo>
        <StatusInfo ID="93">Unauthorized</StatusInfo>
        <StatusInfo ID="94">Some of required fields were not filled.</StatusInfo>
        <StatusInfo ID="95">Email already exists.</StatusInfo>
        <StatusInfo ID="96">Password must be at least 8 characters long.</StatusInfo>
        <StatusInfo ID="97">Standard number of guests must be of positive value.</StatusInfo>
        <StatusInfo ID="98">Deposit amount can't exceed value of 214,748.3647</StatusInfo>
        <StatusInfo ID="99">Technical error - missing file</StatusInfo>
        <StatusInfo ID="100">Property description is required</StatusInfo>
        <StatusInfo ID="101">Pets not allowed</StatusInfo>
        <StatusInfo ID="102">Currency doesn't match with city currency</StatusInfo>
        <StatusInfo ID="103">Properties collection cannot be empty</StatusInfo>
        <StatusInfo ID="104">You need provide at least one value to modify stay.</StatusInfo>
        <StatusInfo ID="105">Some periods overlap. Periods must be separable.</StatusInfo>
        <StatusInfo ID="106">You can only modify stay in confirmed reservation.</StatusInfo>
        <StatusInfo ID="107">No reserved apartment found.</StatusInfo>
        <StatusInfo ID="108">Client Price cannot be negative</StatusInfo>
        <StatusInfo ID="109">Already Paid cannot be negative.</StatusInfo>
        <StatusInfo ID="110">Cannot use OwnerID created by other users.</StatusInfo>
        <StatusInfo ID="111">Only property owner can add reviews.</StatusInfo>
        <StatusInfo ID="112">Review rating value must be between 0-5</StatusInfo>
        <StatusInfo ID="113">Submitted date must be later than arrival date</StatusInfo>
        <StatusInfo ID="114">Cannot remove confirmed reservation. Some periods ignored.</StatusInfo>
        <StatusInfo ID="115">MinStays not satisfied, collection cannot be empty.</StatusInfo>
        <StatusInfo ID="116">LocationID {0} is not proper city location.</StatusInfo>
        <StatusInfo ID="117">Only one description allowed per language.</StatusInfo>
        <StatusInfo ID="118">Max number of guests must be of positive value.</StatusInfo>
        <StatusInfo ID="119">Property name is not defined.</StatusInfo>
        <StatusInfo ID="120">Check-in / check-out details are incorrect.</StatusInfo>
        <StatusInfo ID="121">Reservation not mapped in PMS. Contact IT support with Rentals United ID and your PMS Reservation ID.</StatusInfo>
        <StatusInfo ID="122">Failed to modify reservation in PMS. Try again or contact IT support for more information.</StatusInfo>
        <StatusInfo ID="123">Failed to cancel reservation in PMS. Try again or contact IT support for more information.</StatusInfo>
        <StatusInfo ID="124">Failed to insert reservation in PMS. Try again or contact IT support for more information.</StatusInfo>
        <StatusInfo ID="125">Wrong quantity of amenities. It should be between 0 - 32767.</StatusInfo>
        <StatusInfo ID="126">Invalid URL.</StatusInfo>
        <StatusInfo ID="127">Missing mandatory element: {0}.</StatusInfo>
        <StatusInfo ID="128">Cancellation policy text cannot be empty.</StatusInfo>
        <StatusInfo ID="129">Only reservations for apartments from same city are allowed</StatusInfo>
        <StatusInfo ID="130">Cannot change apartment from city other than initial reservation. Cancel this reservation and create new one.</StatusInfo>
        <StatusInfo ID="131">Bad request.</StatusInfo>
        <StatusInfo ID="132">This functionality is forbidden for you.</StatusInfo>
        <StatusInfo ID="133">Too many images. Images limit is 100.</StatusInfo>
        <StatusInfo ID="134">Invalid currency.</StatusInfo>
        <StatusInfo ID="135">Request rejected by partner.</StatusInfo>
        <StatusInfo ID="136">Customer info is required.</StatusInfo>
        <StatusInfo ID="137">PMSID is not valid.</StatusInfo>
        <StatusInfo ID="138">Provide a not empty PUID.</StatusInfo>
        <StatusInfo ID="139">Cannot create new property as archived.</StatusInfo>
        <StatusInfo ID="140">PropertyID : {0} cannot be archived / activated. The whole request was cancelled. Use Push_PutProperty_RQ instead.</StatusInfo>
        <StatusInfo ID="141">PUID already exists for another property.</StatusInfo>
        <StatusInfo ID="142">Property already has PMSID assigned. You cannot omit PMSID while update.</StatusInfo>
        <StatusInfo ID="143">Cannot archive this property. {0}</StatusInfo>
        <StatusInfo ID="144">Invalid Additional fees collection. {0}</StatusInfo>
        <StatusInfo ID="145">There are not enough units in this property.</StatusInfo>
        <StatusInfo ID="146">Multi unit functionality is disabled.</StatusInfo>
        <StatusInfo ID="147">Changeover is invalid. Use number 1, 2, 3 or 4.</StatusInfo>
        <StatusInfo ID="148">Number of units do not match with reservation on hold.</StatusInfo>
        <StatusInfo ID="149">Units must be a positive number</StatusInfo>
        <StatusInfo ID="150">Invalid invoice ID</StatusInfo>
        <StatusInfo ID="151">CancelUrl is missing</StatusInfo>
        <StatusInfo ID="152">ReturnUrl is missing</StatusInfo>
        <StatusInfo ID="153">PayPal transaction failed</StatusInfo>
        <StatusInfo ID="154">Single unit apartment cannot be converted to multi unit</StatusInfo>
        <StatusInfo ID="155">ResApaID has to be provided for multi unit properties</StatusInfo>
        <StatusInfo ID="156">ResApaID is not valid</StatusInfo>
        <StatusInfo ID="157">Card registration failed</StatusInfo>
        <StatusInfo ID="158">Request rejected. Check PMS synchronization settings</StatusInfo>
        <StatusInfo ID="159">Failed to insert reservation for property {0}({1}) to PMS. {2}</StatusInfo>
        <StatusInfo ID="160">The location and city already added to database</StatusInfo>
        <StatusInfo ID="161">You are not permitted to list this user's reservations</StatusInfo>
        <StatusInfo ID="162">Pass valid email</StatusInfo>
        <StatusInfo ID="163">Future dates</StatusInfo>
        <StatusInfo ID="164">Invalid date format</StatusInfo>
        <StatusInfo ID="165">You cannot archive a confirmed reservation. If this is a cancellation please cancel it first.</StatusInfo>
        <StatusInfo ID="166">Reservation is archived. Unarchive first before performing this operation.</StatusInfo>
        <StatusInfo ID="167">Reservation is for properties you are not the owner of</StatusInfo>
        <StatusInfo ID="168">Reservation is not canceled.</StatusInfo>
        <StatusInfo ID="169">Cannot process a request because apartment is connected to RMS</StatusInfo>
        <StatusInfo ID="170">Invalid property type id</StatusInfo>
        <StatusInfo ID="171">Invalid xml format in AdditionalData node</StatusInfo>
        <StatusInfo ID="172">Preparation time before arrival is blocking requested stay</StatusInfo>
        <StatusInfo ID="173">Discount ignored or trimmed. Maximum length of discounted stay is {0} nights.</StatusInfo>
        <StatusInfo ID="174">Invalid field LicenceInfo/FrenchLicenceInfo/CityTaxCategory. Allowed values: 11-19</StatusInfo>
        <StatusInfo ID="175">Invalid field LicenceInfo/FrenchLicenceInfo/TypeOfResidence. Allowed values: 1-3</StatusInfo>
        <StatusInfo ID="176">Request confirmation in external system failed</StatusInfo>
        <StatusInfo ID="177">Property is not connected to external system</StatusInfo>
        <StatusInfo ID="178">This reservation was made in external system and cannot be cancelled in Rentals United. Please cancel it directly in the sales channel</StatusInfo>
        <StatusInfo ID="179">Additional fee value must be greater or equal zero</StatusInfo>
        <StatusInfo ID="180">LOS pricing and full stay pricing cannot be defined in the same season</StatusInfo>
        <StatusInfo ID="181">Number of units cannot be decreased</StatusInfo>
    </Statuses>
</Pull_ListStatuses_RS>
XML Path Data Type Type Description
Pull_ListStatuses_RS C Root element
Pull_ListStatuses_RS/Status String(100) M Status description
Pull_ListStatuses_RS/Status@ID Integer M Status ID
Pull_ListStatuses_RS/ResponseID String(32) M Unique response ID
Pull_ListStatuses_RS/Statuses C A collection of statuses
Pull_ListStatuses_RS/Statuses/StatusInfo String(100) M Status description
Pull_ListStatuses_RS/Statuses/StatusInfo@ID Integer M Status ID

List property types

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyType;

Pull_ListPropTypes_RQ request = new Pull_ListPropTypes_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListPropTypes_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListPropTypes_RS response = XmlTools.DeserializeObject<Pull_ListPropTypes_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns the list of available property types by number of bedrooms.

Request

XML Request

<Pull_ListPropTypes_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListPropTypes_RQ>
XML Path Data Type Type Description
Pull_ListPropTypes_RQ C Root element
Pull_ListPropTypes_RQ/Authentication C, M Authentication details
Pull_ListPropTypes_RQ/Authentication/UserName String(50) M Username
Pull_ListPropTypes_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListPropTypes_RS>
    <Status ID="0">Success</Status>
    <ResponseID>d98099217d9041dcb98389dea617ac5b</ResponseID>
    <PropertyTypes>
        <PropertyType PropertyTypeID="1">Studio</PropertyType>
        <PropertyType PropertyTypeID="2">One Bedroom</PropertyType>
        <PropertyType PropertyTypeID="3">Two Bedroom</PropertyType>
        <PropertyType PropertyTypeID="4">Three Bedroom</PropertyType>
        <PropertyType PropertyTypeID="12">Four Bedroom</PropertyType>
        <PropertyType PropertyTypeID="11">Five Bedroom</PropertyType>
        <PropertyType PropertyTypeID="26">Six Bedroom</PropertyType>
        <PropertyType PropertyTypeID="27">Seven Bedroom</PropertyType>
        <PropertyType PropertyTypeID="28">Eight Bedroom</PropertyType>
        <PropertyType PropertyTypeID="29">Nine Bedroom</PropertyType>
        <PropertyType PropertyTypeID="30">Ten Bedroom</PropertyType>
        <PropertyType PropertyTypeID="34">Eleven Bedroom</PropertyType>
        <PropertyType PropertyTypeID="35">Twelve Bedroom</PropertyType>
        <PropertyType PropertyTypeID="36">Thirteen Bedroom</PropertyType>
        <PropertyType PropertyTypeID="37">Fourteen Bedroom</PropertyType>
        <PropertyType PropertyTypeID="38">Fifteen Bedroom</PropertyType>
        <PropertyType PropertyTypeID="39">Sixteen Bedroom</PropertyType>
        <PropertyType PropertyTypeID="40">Seventeen Bedroom</PropertyType>
        <PropertyType PropertyTypeID="41">Eighteen Bedroom</PropertyType>
        <PropertyType PropertyTypeID="42">Nineteen Bedroom</PropertyType>
        <PropertyType PropertyTypeID="43">Twenty Bedroom</PropertyType>
        <PropertyType PropertyTypeID="44">Twentyone Bedroom</PropertyType>
        <PropertyType PropertyTypeID="45">Twentytwo Bedroom</PropertyType>
        <PropertyType PropertyTypeID="46">Twentythree Bedroom</PropertyType>
        <PropertyType PropertyTypeID="47">Twentyfour Bedroom</PropertyType>
        <PropertyType PropertyTypeID="48">Twentyfive Bedroom</PropertyType>
        <PropertyType PropertyTypeID="49">Twentysix Bedroom</PropertyType>
        <PropertyType PropertyTypeID="50">Twentyseven Bedroom</PropertyType>
        <PropertyType PropertyTypeID="51">Twentyeight Bedroom</PropertyType>
        <PropertyType PropertyTypeID="52">Twentynine Bedroom</PropertyType>
        <PropertyType PropertyTypeID="53">Thirty Bedroom</PropertyType>
    </PropertyTypes>
</Pull_ListPropTypes_RS>
XML Path Data Type Type Description
Pull_ListPropTypes_RS C Root element
Pull_ListPropTypes_RS/Status String(100) M See ListStatuses
Pull_ListPropTypes_RS/Status@ID Integer M See ListStatuses
Pull_ListPropTypes_RS/ResponseID String(32) M Unique response ID
Pull_ListPropTypes_RS/PropertyTypes C, M A collection of property types
Pull_ListPropTypes_RS/PropertyTypes/PropertyType String(50) M Description of a property type
Pull_ListPropTypes_RS/PropertyTypes/PropertyTypes@PropertyTypeID Integer M Unique property type ID

List OTA property types

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyType;

Pull_ListOTAPropTypes_RQ request = new Pull_ListOTAPropTypes_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListOTAPropTypes_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListOTAPropTypes_RS response = XmlTools.DeserializeObject<Pull_ListOTAPropTypes_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns the list of available property types as classified by Open Travel Alliance Standard

Request

XML Request

<Pull_ListOTAPropTypes_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListOTAPropTypes_RQ>
XML Path Data Type Type Description
Pull_ListOTAPropTypes_RQ C Root element
Pull_ListOTAPropTypes_RQ/Authentication C, M Authentication details
Pull_ListOTAPropTypes_RQ/Authentication/UserName String (50) M Username
Pull_ListOTAPropTypes_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListOTAPropTypes_RS>
    <Status ID="0">Success</Status>
    <ResponseID>5aa853ab207e4d829312046dc5d7dc66</ResponseID>
    <PropertyTypes>
        <PropertyType PropertyTypeID="3" OTACode="3">Apartment</PropertyType>
        <PropertyType PropertyTypeID="4" OTACode="4">Bed and breakfast</PropertyType>
        <PropertyType PropertyTypeID="7" OTACode="7">Chalet</PropertyType>
        <PropertyType PropertyTypeID="16" OTACode="16">Guest house</PropertyType>
        <PropertyType PropertyTypeID="20" OTACode="20">Hotel</PropertyType>
        <PropertyType PropertyTypeID="22" OTACode="22">Lodge</PropertyType>
        <PropertyType PropertyTypeID="30" OTACode="30">Resort</PropertyType>
        <PropertyType PropertyTypeID="35" OTACode="35">Villa</PropertyType>
        <PropertyType PropertyTypeID="37" OTACode="37">Castle</PropertyType>
        <PropertyType PropertyTypeID="63" OTACode="3">Aparthotel</PropertyType>
        <PropertyType PropertyTypeID="64" OTACode="31">Boat</PropertyType>
        <PropertyType PropertyTypeID="65" OTACode="5">Cottage</PropertyType>
        <PropertyType PropertyTypeID="66" OTACode="25">Camping</PropertyType>
        <PropertyType PropertyTypeID="67" OTACode="34">House</PropertyType>
    </PropertyTypes>
</Pull_ListOTAPropTypes_RS>
XML Path Data Type Type Description
Pull_ListOTAPropTypes_RS C Root element
Pull_ListOTAPropTypes_RS/Status String (100) M See ListStatuses
Pull_ListOTAPropTypes_RS/Status@ID Integer M See ListStatuses
Pull_ListOTAPropTypes_RS/ResponseID String(32) M Unique response ID
Pull_ListOTAPropTypes_RS/PropertyTypes C, M A collection of property types
Pull_ListOTAPropTypes_RS/PropertyTypes/PropertyTypes/PropertyType String (50) M Description of a property type
Pull_ListOTAPropTypes_RS/PropertyTypes/PropertyTypes@PropertyTypeID Integer M Unique OTA property type ID
Pull_ListOTAPropTypes_RS/PropertyTypes/PropertyTypes@OTACode Integer M Property Type Code according to Open Travel Alliance standard

List location types

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.LocationType;

Pull_ListLocationTypes_RQ request = new Pull_ListLocationTypes_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListLocationTypes_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListLocationTypes_RS response = XmlTools.DeserializeObject<Pull_ListLocationTypes_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns Rentals United location hierarchy.

Request

XML Request

<Pull_ListLocationTypes_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListLocationTypes_RQ>
XML Path Data Type Type Description
Pull_ListLocationTypes_RQ C Root element
Pull_ListLocationTypes_RQ/Authentication C, M Authentication details
Pull_ListLocationTypes_RQ/Authentication/UserName String(50) M Username
Pull_ListLocationTypes_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListLocationTypes_RS>
    <Status ID="0">Success</Status>
    <ResponseID>07d879f033104283a0b018561d4b2867</ResponseID>
    <LocationTypes>
        <LocationType LocationTypeID="6">Worldwide</LocationType>
        <LocationType LocationTypeID="1">Continent</LocationType>
        <LocationType LocationTypeID="2">Country</LocationType>
        <LocationType LocationTypeID="3">Region</LocationType>
        <LocationType LocationTypeID="4">City</LocationType>
        <LocationType LocationTypeID="5">District</LocationType>
    </LocationTypes>
</Pull_ListLocationTypes_RS>
XML Path Data Type Type Description
Pull_ListLocationTypes_RS C Root element
Pull_ListLocationTypes_RS/Status String(100) M See ListStatuses
Pull_ListLocationTypes_RS/Status@ID Integer M See ListStatuses
Pull_ListLocationTypes_RS/ResponseID String(32) M Unique response ID
Pull_ListLocationTypes_RS/LocationTypes C, M A collection of all location types
Pull_ListLocationTypes_RS/LocationTypes/LocationType String(50) M A description of the location type
Pull_ListLocationTypes_RS/LocationTypes/LocationType@LocationTypeID Integer M Unique location type ID

List locations

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Location;

Pull_ListLocations_RQ request = new Pull_ListLocations_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListLocations_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListLocations_RS response = XmlTools.DeserializeObject<Pull_ListLocations_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns entire dictionary of locations supported by Rentals United.

If you are a property provider you may prefer we recommend to use Pull_GetLocationByCoordinates_RQ. If you don't retrieve location you expected then you should call Pull_GetLocationsListByName_RQ to choose appropriate location. We believe implementing these two methods will be handy and always up to date compared to mapping entire dictionary of locations.

If you are a Sales Channel or VR Service Provider pulling properties from Rentals United, you need to map the location to your system in order to retrieve properties by location.

Request

XML Request

<Pull_ListLocations_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListLocations_RQ>
XML Path Data Type Type Description
Pull_ListLocations_RQ C Root element
Pull_ListLocations_RQ/Authentication C Authentication details
Pull_ListLocations_RQ/Authentication/UserName String(50) M Username
Pull_ListLocations_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListLocations_RS>
    <Status ID="0">Success</Status>
    <ResponseID>5a4f24d5e1494918ba5056fafd88edfa</ResponseID>
    <Locations>
        <Location LocationID="1" LocationTypeID="6" ParentLocationID="0">Worldwide</Location>
        <Location LocationID="2" LocationTypeID="1" ParentLocationID="1">Europe</Location>
        <Location LocationID="3" LocationTypeID="1" ParentLocationID="1">North America</Location>
        <Location LocationID="4" LocationTypeID="1" ParentLocationID="1">South America</Location>
        <Location LocationID="5" LocationTypeID="1" ParentLocationID="1">Asia</Location>
        <Location LocationID="6" LocationTypeID="1" ParentLocationID="1">Australia</Location>
        <Location LocationID="7" LocationTypeID="1" ParentLocationID="1">Antarctica</Location>
        <Location LocationID="8" LocationTypeID="1" ParentLocationID="1">Africa</Location>
        <Location LocationID="55443" LocationTypeID="2" ParentLocationID="1">Isle of Man</Location>
        <Location LocationID="57296" LocationTypeID="2" ParentLocationID="1">Jersey</Location>
        <Location LocationID="58829" LocationTypeID="2" ParentLocationID="1">Bouvet Island</Location>
        <Location LocationID="58834" LocationTypeID="2" ParentLocationID="1">Comoros</Location>
        <Location LocationID="58835" LocationTypeID="2" ParentLocationID="1">Falkland Islands</Location>
        <Location LocationID="58836" LocationTypeID="2" ParentLocationID="1">French Southern Territories</Location>
        <Location LocationID="58837" LocationTypeID="2" ParentLocationID="1">Guernsey</Location>
        <Location LocationID="58838" LocationTypeID="2" ParentLocationID="1">Holy See</Location>
        <Location LocationID="58841" LocationTypeID="2" ParentLocationID="1">Mayotte</Location>
        <Location LocationID="58842" LocationTypeID="2" ParentLocationID="1">Nauru</Location>
        <Location LocationID="58843" LocationTypeID="2" ParentLocationID="1">Niue</Location>
        <Location LocationID="58844" LocationTypeID="2" ParentLocationID="1">Palau</Location>
        <Location LocationID="58847" LocationTypeID="2" ParentLocationID="1">Pitcairn</Location>
        <Location LocationID="58848" LocationTypeID="2" ParentLocationID="1">Saint Helena, Ascension and Tristan da Cunha</Location>
        <Location LocationID="58849" LocationTypeID="2" ParentLocationID="1">Saint Pierre and Miquelon</Location>
        ...
 </Locations>
</Pull_ListLocations_RS>
XML Path Data Type Type Description
Pull_ListLocations_RS C Root element
Pull_ListLocations_RS/Status String(100) M See ListStatuses
Pull_ListLocations_RS/Status@ID Integer M See ListStatuses
Pull_ListLocations_RS/ResponseID String(32) M Unique response ID
Pull_ListLocations_RS/Locations C, M A collection of locations
Pull_ListLocations_RS/Locations/Location String(50) M A description of a single location
Pull_ListLocations_RS/Locations/Location@LocationID Integer M Unique location ID
Pull_ListLocations_RS/Locations/Location@LocationTypeID Integer M Location type ID, see ListLocationTypes
Pull_ListLocations_RS/Locations/Location@ParentLocationID Integer M Parent location ID, see ListLocations

Get location details

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Location;

Pull_GetLocationDetails_RQ request = new Pull_GetLocationDetails_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_GetLocationDetails_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_GetLocationDetails_RS response = XmlTools.DeserializeObject<Pull_GetLocationDetails_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns the location details in a parent-child way. LocationID of any LocationTypeID can be requested.

If you are a Sales Channel or VR Service Provider pulling properties from Rentals United, you can use this method to pull a single location details in case of not recognized property location.

Request

XML Request

<Pull_GetLocationDetails_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
 <LocationID>500</LocationID>
</Pull_GetLocationDetails_RQ>
XML Path Data Type Type Description
Pull_GetLocationDetails_RQ C Root element
Pull_GetLocationDetails_RQ/Authentication C, M Authentication details
Pull_GetLocationDetails_RQ/Authentication/UserName String(50) M Username
Pull_GetLocationDetails_RQ/Authentication/Password String(50) M Password
Pull_GetLocationDetails_RQ/LocationID Integer M Location ID, see ListLocations

Response

XML Response

<Pull_GetLocationDetails_RS>
 <Status ID="0">Success</Status>
 <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
 <Locations>
   <Location LocationID="1" LocationTypeID="6" ParentLocationID="-1">Worldwide</Location>
   <Location LocationID="2" LocationTypeID="1" ParentLocationID="1">Europe</Location>
   <Location LocationID="10" LocationTypeID="2" ParentLocationID="2" >Belgium</Location>
   <Location LocationID="10054" LocationTypeID="3" ParentLocationID="10" >Wallonia</Location>
   <Location LocationID="500" LocationTypeID="4" ParentLocationID="10054" >Duffet</Location>
 </Locations>
</Pull_GetLocationDetails_RS>
XML Path Data Type Type Description
Pull_GetLocationDetails_RS C Root element
Pull_GetLocationDetails_RS/Status String(100) M See ListStatuses
Pull_GetLocationDetails_RS/Status@ID Integer M See ListStatuses
Pull_GetLocationDetails_RS/ResponseID String(32) M Unique response ID
Pull_GetLocationDetails_RS/Locations C A collection of locations
Pull_GetLocationDetails_RS/Locations/Location String(50) M A description of a location
Pull_GetLocationDetails_RS/Locations/Location@LocationID Integer M Location ID, see ListLocations
Pull_GetLocationDetails_RS/Locations/Location@LocationTypeID Integer M Location type ID, see ListLocationTypes
Pull_GetLocationDetails_RS/Locations/Location@ParentLocationID Integer M Parent location ID, see ListLocations

Get location by name

This method is deprecated. See Pull_GetLocationsListByName_RQ

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Location;

Pull_GetLocationByName_RQ request = new Pull_GetLocationByName_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    LocationName = "Łomża"
};

string xmlBody = XmlTools.SerializeObject<Pull_GetLocationByName_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_GetLocationByName_RS response = XmlTools.DeserializeObject<Pull_GetLocationByName_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a Rentals United LocationID based on the location name.

If you are a property provider pushing properties to Rentals United, you can check a specific Rentals United LocationID based on a location name.

It may be easier for you to get the location name and Rentals United LocationID by geo-coordinates of a property. Please review Pull_GetLocationByCoordinates_RQ API method for details.

Request

XML Request

<Pull_GetLocationByName_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
 <LocationName>Warsaw</LocationName>
</Pull_GetLocationByName_RQ>
XML Path Data Type Type Description
Pull_GetLocationByName_RQ C Root element
Pull_GetLocationByName_RQ/Authentication C, M Authentication details
Pull_GetLocationByName_RQ/Authentication/UserName String(50) M Username
Pull_GetLocationByName_RQ/Authentication/Password String(50) M Password
Pull_GetLocationByName_RQ/LocationName String(50) M Location name

Response

XML Response

<Pull_GetLocatinByName_RS>
    <Status ID="0">Success</Status>
    <ResponseID>e483f7675d554aad9f5efeff35532ef4</ResponseID>
    <LocationID>5309</LocationID>
</Pull_GetLocatinByName_RS>
XML Path Data Type Type Description
Pull_GetLocationByName_RS C Root element
Pull_GetLocationByName_RS/Status String(100) M See ListStatuses
Pull_GetLocationByName_RS/Status@ID Integer M See ListStatuses
Pull_GetLocationByName_RS/LocationID Integer M A collection of locations
Pull_GetLocationDetails_RS/Locations/Location String(50) M Location ID, see ListLocations

Get locations list by name and country name

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Location;

Pull_GetLocationByName_RQ request = new Pull_GetLocationByName_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    LocationName = "Łomża"
};

string xmlBody = XmlTools.SerializeObject<Pull_GetLocationByName_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_GetLocationByName_RS response = XmlTools.DeserializeObject<Pull_GetLocationByName_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of Rentals United locations details, based on the location name and country name (optional). Returned locations data contains: Currency, LocationID, CountryLocationID and LocationName.

The Currency field in returned data will be filled only if the provided location name is either a city or a district of a city. Otherwise, the field will be left empty. An empty Currency field also means that in such location an apartment cannot be placed.

If you are a property provider pushing properties to Rentals United, you can check a specific Rentals United data set associated with a location, based on a location name and country name (optional).

It may be easier for you to get the location name and Rentals United LocationID by geo-coordinates of a property. Please review Pull_GetLocationByCoordinates_RQ API method for details.

Request

XML Request

<Pull_GetLocationByName_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
 <CountryName>United States</CountryName>
 <LocationName>Warsaw</LocationName>
</Pull_GetLocationByName_RQ>
XML Path Data Type Type Description
Pull_GetLocationByName_RQ C Root element
Pull_GetLocationByName_RQ/Authentication C, M Authentication details
Pull_GetLocationByName_RQ/Authentication/UserName String(50) M Username
Pull_GetLocationByName_RQ/Authentication/Password String(50) M Password
Pull_GetLocationByName_RQ/CountryName String(50) O Country name
Pull_GetLocationByName_RQ/LocationName String(50) M Location name

Response

XML Response

<Pull_GetLocationByName_RS>
    <Status ID="0">Success</Status>
    <ResponseID>22385f6d056c45d08d462599002c2219</ResponseID>
    <Locations>
        <LocationWithCurrency Currency="USD" LocationID="58334" CountryLocationID="330">Warsaw</LocationWithCurrency>
        <LocationWithCurrency Currency="USD" LocationID="58338" CountryLocationID="330">Warsaw</LocationWithCurrency>
    </Locations>
</Pull_GetLocationByName_RS>
XML Path Data Type Type Description
Pull_GetLocationByName_RS C Root element
Pull_GetLocationByName_RS/Status String(100) M See ListStatuses
Pull_GetLocationByName_RS/Status@ID Integer M See ListStatuses
Pull_GetLocationByName_RS/Locations C, M A collection of locations
Pull_GetLocationByName_RS/Locations/LocationWithCurrency String(50) M Location name, see ListLocations
Pull_GetLocationByName_RS/Locations/LocationWithCurrency@Currency String(3) M Currency, see ListCurrencies
Pull_GetLocationByName_RS/Locations/LocationWithCurrency@LocationID Integer M LocationID, see ListLocations
Pull_GetLocationByName_RS/Locations/LocationWithCurrency@CountryLocationID Integer M CountryLocationID, see ListLocations

Get location by coordinates

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Location;

Pull_GetLocationByCoordinates_RQ request = new Pull_GetLocationByCoordinates_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    Latitude = 10.12312,
    Longitude = 22.23123
};

string xmlBody = XmlTools.SerializeObject<Pull_GetLocationByCoordinates_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_GetLocationByCoordinates_RS response = XmlTools.DeserializeObject<Pull_GetLocationByCoordinates_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns Rentals United location details based on the geo-coordinates provided on the XML request.

Request

XML Request

<Pull_GetLocationByCoordinates_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
 <Latitude>52.14</Latitude>
 <Longitude>21.1</Longitude>
</Pull_GetLocationByCoordinates_RQ>
XML Path Data Type Type Description
Pull_GetLocationByCoordinates_RQ C Root element
Pull_GetLocationByCoordinates_RQ/Authentication C, M Authentication details
Pull_GetLocationByCoordinates_RQ/Authentication/UserName String(50) M Username
Pull_GetLocationByCoordinates_RQ/Authentication/Password String(50) M Password
Pull_GetLocationByCoordinates_RQ/Latitude Decimal M Latitude
Pull_GetLocationByCoordinates_RQ/Longitude Decimal M Longitude

Response

XML Response

<Pull_GetLocationByCoordinates_RS>
    <Status ID="0">Success</Status>
    <ResponseID>ffacd672ac424e128b58362d2e4e53c2</ResponseID>
    <Location LocationID="25591" Distance="11.6227131">Warszawa</Location>
</Pull_GetLocationByCoordinates_RS>
XML Path Data Type Type Description
Pull_GetLocationByCoordinates_RS C Root element
Pull_GetLocationByCoordinates_RS/Status String(100) M See ListStatuses
Pull_GetLocationByCoordinates_RS/Status@ID Integer M See ListStatuses
Pull_GetLocationByCoordinates_RS/Locations/Location M Collection of locations
Pull_GetLocationByCoordinates_RS/LocationID Integer M Location ID, see ListLocations
Pull_GetLocationByCoordinates_RS/Locations/Distance Decimal M Distance between the coordinates and that location center

Get cities and number of properties

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Location;

Pull_ListCitiesProps_RQ request = new Pull_ListCitiesProps_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListCitiesProps_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListCitiesProps_RS response = XmlTools.DeserializeObject<Pull_ListCitiesProps_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method has been designed for distribution partners (Sales Channels and VR Service Providers). It returns a breakdown of number of active properties per LocationID available for you to pull.

Request

XML Request

<Pull_ListCitiesProps_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListCitiesProps_RQ>
XML Path Data Type Type Description
Pull_ListCitiesProps_RQ C Root element
Pull_ListCitiesProps_RQ/Authentication C, M Authentication details
Pull_ListCitiesProps_RQ/Authentication/UserName String(50) M Username
Pull_ListCitiesProps_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListCitiesProps_RS>
    <Status ID="0">Success</Status>
    <ResponseID>268ee54444da4f1688a6a9b4004b188f</ResponseID>
    <CitiesProps>
        <CityProps LocationID="48">18</CityProps>
        <CityProps LocationID="49">3</CityProps>
        <CityProps LocationID="50">7</CityProps>
        <CityProps LocationID="51">1</CityProps>
        <CityProps LocationID="54">4</CityProps>
        <CityProps LocationID="55">1</CityProps>
        <CityProps LocationID="56">1</CityProps>
        <CityProps LocationID="58">3</CityProps>
        <CityProps LocationID="59">1</CityProps>
        <CityProps LocationID="60">11</CityProps>
    </CitiesProps>
</Pull_ListCitiesProps_RS>
XML Path Data Type Type Description
Pull_ListCitiesProps_RS C Root element
Pull_ListCitiesProps_RS/Status String(100) M See ListStatuses
Pull_ListCitiesProps_RS/Status@ID Integer M See ListStatuses
Pull_ListCitiesProps_RS/ResponseID String(32) M Unique response ID
Pull_ListCitiesProps_RS/CitiesProps C A collection of cities (locations with city location type)
Pull_ListCitiesProps_RS/CitiesProps/CityProps Integer M The number of active properties in the city
Pull_ListCitiesProps_RS/CitiesProps/CityProps@LocationID Integer M Location ID, see ListLocations

List cities and currencies

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Currency;

Pull_ListCurrenciesWithCities_RQ request = new Pull_ListCurrenciesWithCities_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListCurrenciesWithCities_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListCurrenciesWithCities_RS response = XmlTools.DeserializeObject<Pull_ListCurrenciesWithCities_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Currency displayed in Rentals United is based on the city the property is located in (LocationID of LocationTypeID = 4 is used)

Currency per property is currently not supported. All properties in a given city across the whole Rentals United client base work with the same currency e.g. all properties in London (UK) work with GBP.

Example: UK resident leaving in London manages a property in Spain. Given his clients are mostly UK based, his rates are in GBP. He works in GBP with Sales Channels already but wants to join Rentals United. Rentals United supports EUR for all cities in Spain. UK resident will convert GBP to EUR before pushing rates to Rentals United and configure Rentals United Sales Channel connection to GBP. Rentals United will perform currency conversion from EUR to GBP when sending rates to the Sales Channels.

Request

XML Request

<Pull_ListCurrenciesWithCities_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListCurrenciesWithCities_RQ>
XML Path Data Type Type Description
Pull_ListCurrenciesWithCities_RQ C Root element
Pull_ListCurrenciesWithCities_RQ/Authentication C, M Authentication details
Pull_ListCurrenciesWithCities_RQ/Authentication/UserName String(50) M Username
Pull_ListCurrenciesWithCities_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListCurrenciesWithCities_RS>
 <Status ID="0">Success</Status>
 <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
 <Currencies>
   <Currency CurrencyCode="AUD">
     <Locations>
       <LocationID>8694</LocationID>
       <LocationID>8718</LocationID>
     </Locations>
   </Currency>
   <Currency CurrencyCode="CAD">
     <Locations>
       <LocationID>5032</LocationID>
     </Locations>
   </Currency>
   <Currency CurrencyCode="CHF">
     <Locations>
       <LocationID>7222</LocationID>
     </Locations>
   </Currency>
   <Currency CurrencyCode="EUR">
     <Locations>
       <LocationID>7048</LocationID>
       <LocationID>3206</LocationID>
       <LocationID>4898</LocationID>
       <LocationID>5964</LocationID>
       <LocationID>3191</LocationID>
       <LocationID>8752</LocationID>
       <LocationID>2958</LocationID>
       <LocationID>3119</LocationID>
       <LocationID>2986</LocationID>
     </Locations>
   </Currency>
   <Currency CurrencyCode="GBP">
     <Locations>
       <LocationID>7752</LocationID>
     </Locations>
   </Currency>
   <Currency CurrencyCode="PLN">
     <Locations>
       <LocationID>5319</LocationID>
     </Locations>
   </Currency>
   <Currency CurrencyCode="USD">
     <Locations>
      <LocationID>5514</LocationID>
     </Locations>
   </Currency>
   <Currency CurrencyCode="ZAR">
     <Locations>
      <LocationID>6169</LocationID>
     </Locations>
   </Currency>
 </Currencies>
</Pull_ListCurrenciesWithCities_RS>
XML Path Data Type Type Description
Pull_ListCurrenciesWithCities_RS C Root element
Pull_ListCurrenciesWithCities_RS/Status String(100) M See ListStatuses
Pull_ListCurrenciesWithCities_RS/Status@ID Integer M See ListStatuses
Pull_ListCurrenciesWithCities_RS/ResponseID String(32) M Unique response ID
Pull_ListCurrenciesWithCities_RS/Currencies C, M A collection of currencies
Pull_ListCurrenciesWithCities_RS/Currencies/Currency M A single currency used in the locations
Pull_ListCurrenciesWithCities_RS/Currencies/Currency@CurrencyCode String(3) M Unique currency ISO 4217 code
Pull_ListCurrenciesWithCities_RS/Currencies/Currency/Locations C, M A collection of cities where the currency applies
Pull_ListCurrenciesWithCities_RS/Currencies/Currency/Locations/LocationID Integer M Location ID, see ListLocations, LocationTypeID = 4)

List destinations

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Destination;

Pull_ListDestinations_RQ request = new Pull_ListDestinations_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListDestinations_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListDestinations_RS response = XmlTools.DeserializeObject<Pull_ListDestinations_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Rentals United destinations are POIs to which you can define distances from the property.

Request

XML Request

<Pull_ListDestinations_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListDestinations_RQ>
XML Path Data Type Type Description
Pull_ListDestinations_RQ C Root element
Pull_ListDestinations_RQ/Authentication C, M Authentication details
Pull_ListDestinations_RQ/Authentication/UserName String(50) M Username
Pull_ListDestinations_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListDestinations_RS>
    <Status ID="0">Success</Status>
    <ResponseID>2d1eff43b6bc4647b1df7f0af73db5d1</ResponseID>
    <Destinations>
        <Destination DestinationID="2">Central Barcelona</Destination>
        <Destination DestinationID="3">La Sagrada Familia</Destination>
        <Destination DestinationID="4">Metro</Destination>
        <Destination DestinationID="5">Gothic Church of Sta. Maria del Mar</Destination>
        <Destination DestinationID="7">Boqueria Street</Destination>
        <Destination DestinationID="8">Sea</Destination>
        <Destination DestinationID="9">Tourist bus stops nearby</Destination>
        <Destination DestinationID="10">Bogatell beach</Destination>
        <Destination DestinationID="11">Ramblas</Destination>
        <Destination DestinationID="13">Paseo del Borne</Destination>
        <Destination DestinationID="14">Main Square</Destination>
        <Destination DestinationID="15">Hachesche Hofe</Destination>
        <Destination DestinationID="17">Pl. Catalunya</Destination>
        ...
 </Destinations>
</Pull_ListDestinations_RS>
XML Path Data Type Type Description
Pull_ListDestinations_RS C Root element
Pull_ListDestinations_RS/Status String(100) M See ListStatuses
Pull_ListDestinations_RS/Status@ID Integer M See ListStatuses
Pull_ListDestinations_RS/ResponseID String(32) M Unique response ID
Pull_ListDestinations_RS/Destinations C, M A collection of destinations
Pull_ListDestinations_RS/Destinations/Destination String(200) M Description of a destination
Pull_ListDestinations_RS/Destinations/Destination@DestinationID Integer M Unique destination ID

List distance units

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.DistanceUnit;

Pull_ListDistanceUnits_RQ request = new Pull_ListDistanceUnits_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListDistanceUnits_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListDistanceUnits_RS response = XmlTools.DeserializeObject<Pull_ListDistanceUnits_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns available distance unit types from property to a POI (minutes, km, etc.)

Request

XML Request

<Pull_ListDistanceUnits_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListDistanceUnits_RQ>
XML Path Data Type Type Description
Pull_ListDistanceUnits_RQ C Root element
Pull_ListDistanceUnits_RQ/Authentication C, M Authentication details
Pull_ListDistanceUnits_RQ/Authentication/UserName String(50) M Username
Pull_ListDistanceUnits_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListDistanceUnits_RS>
    <Status ID="0">Success</Status>
    <ResponseID>d6a3b5b657234cc59c44da6f72d057c0</ResponseID>
    <DistanceUnits>
        <DistanceUnit DistanceUnitID="1">meters</DistanceUnit>
        <DistanceUnit DistanceUnitID="2">minutes</DistanceUnit>
        <DistanceUnit DistanceUnitID="3">km</DistanceUnit>
        <DistanceUnit DistanceUnitID="6">minutes walk</DistanceUnit>
        <DistanceUnit DistanceUnitID="8">miles</DistanceUnit>
        <DistanceUnit DistanceUnitID="16">minutes by tube</DistanceUnit>
        <DistanceUnit DistanceUnitID="18">minutes by train</DistanceUnit>
        <DistanceUnit DistanceUnitID="19">minutes by bus</DistanceUnit>
        <DistanceUnit DistanceUnitID="20">On location</DistanceUnit>
        <DistanceUnit DistanceUnitID="21">minutes drive</DistanceUnit>
        <DistanceUnit DistanceUnitID="22">yards</DistanceUnit>
    </DistanceUnits>
</Pull_ListDistanceUnits_RS>
XML Path Data Type Type Description
Pull_ListDistanceUnits_RS C Root element
Pull_ListDistanceUnits_RS/Status String(100) M See ListStatuses
Pull_ListDistanceUnits_RS/Status@ID Integer M See ListStatuses
Pull_ListDistanceUnits_RS/ResponseID String(32) M Unique response ID
Pull_ListDistanceUnits_RS/DistanceUnits C A collection of distance units
Pull_ListDistanceUnits_RS/DistanceUnits/DistanceUnit String(50) M Description of a distance unit
Pull_ListDistanceUnits_RS/DistanceUnits/DistanceUnit@DistanceUnitID Integer M Unique distance unit ID

List composition rooms

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.CompositionRoom;

Pull_ListCompositionRooms_RQ request = new Pull_ListCompositionRooms_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListCompositionRooms_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListCompositionRooms_RS response = XmlTools.DeserializeObject<Pull_ListCompositionRooms_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of room types available for a property. .

Request

XML Request

<Pull_ListCompositionRooms_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListCompositionRooms_RQ>
XML Path Data Type Type Description
Pull_ListCompositionRooms_RQ C Root element
Pull_ListCompositionRooms_RQ/Authentication C, M Authentication details
Pull_ListCompositionRooms_RQ/Authentication/UserName String(50) M Username
Pull_ListCompositionRooms_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListCompositionRooms_RS>
    <Status ID="0">Success</Status>
    <ResponseID>4217f8c4615048488e029b931e13eca2</ResponseID>
    <CompositionRooms>
        <CompositionRoom CompositionRoomID="53">WC</CompositionRoom>
        <CompositionRoom CompositionRoomID="81">Bathroom</CompositionRoom>
        <CompositionRoom CompositionRoomID="94">Kitchen in the living / dining room</CompositionRoom>
        <CompositionRoom CompositionRoomID="101">Kitchen</CompositionRoom>
        <CompositionRoom CompositionRoomID="249">Living room</CompositionRoom>
        <CompositionRoom CompositionRoomID="257">Bedroom</CompositionRoom>
        <CompositionRoom CompositionRoomID="372">Livingroom / Bedroom</CompositionRoom>
        <CompositionRoom CompositionRoomID="517">Bedroom/Living room with kitchen corner</CompositionRoom>
    </CompositionRooms>
</Pull_ListCompositionRooms_RS>
XML Path Data Type Type Description
Pull_ListCompositionRooms_RS C Root element
Pull_ListCompositionRooms_RS/Status String(100) M See ListStatuses
Pull_ListCompositionRooms_RS/Status@ID Integer M See ListStatuses
Pull_ListCompositionRooms_RS/ResponseID String(32) M Unique response ID
Pull_ListCompositionRooms_RS/CompositionRooms C, M A collection of room types
Pull_ListCompositionRooms_RS/CompositionRooms/CompositionRoom String(100) M Description of a room type
Pull_ListCompositionRooms_RS/CompositionRooms/CompositionRoomID Integer Unique room type ID

List amenities

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Amenity;

Pull_ListAmenities_RQ request = new Pull_ListAmenities_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListAmenities_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListAmenities_RS response = XmlTools.DeserializeObject<Pull_ListAmenities_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of amenities available for a property.

Request

XML Request

<Pull_ListAmenities_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListAmenities_RQ>
XML Path Data Type Type Description
Pull_ListAmenities_RQ C Root element
Pull_ListAmenities_RQ/Authentication C, M Authentication details
Pull_ListAmenities_RQ/Authentication/UserName String(50) M Username
Pull_ListAmenities_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListAmenities_RS>
    <Status ID="0">Success</Status>
    <ResponseID>7cc63f8cc9f84693aa1a856767c4c85d</ResponseID>
    <Amenities>
        <Amenity AmenityID="2">Cookware &amp; Kitchen Utensils</Amenity>
        <Amenity AmenityID="3">Crockery &amp; Cutlery</Amenity>
        <Amenity AmenityID="4">Iron &amp; Ironing Board</Amenity>
        <Amenity AmenityID="5">Drying Rack</Amenity>
        <Amenity AmenityID="6">Hair Dryer</Amenity>
        <Amenity AmenityID="7">Bed Linen &amp; Towels</Amenity>
        <Amenity AmenityID="8">Toiletries</Amenity>
        ...
      </Amenities>
</Pull_ListAmenities_RS>
XML Path Data Type Type Description
Pull_ListAmenities_RS C Root element
Pull_ListAmenities_RS/Status String(100) M See ListStatuses
Pull_ListAmenities_RS/Status@ID Integer M See ListStatuses
Pull_ListAmenities_RS/ResponseID String(32) M Unique response ID
Pull_ListAmenities_RS/Amenities C A collection of amenities
Pull_ListAmenities_RS/Amenity String(200) M Description of an amenity
Pull_ListAmenities_RS/Amenity@AmenityID Integer Unique amenity ID

List amenities available for room

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.CompositionRoom;

Pull_ListAmenitiesAvailableForRooms_RQ request = new Pull_ListAmenitiesAvailableForRooms_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListAmenitiesAvailableForRooms_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListAmenitiesAvailableForRooms_RS response = XmlTools.DeserializeObject<Pull_ListAmenitiesAvailableForRooms_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This merthod returns a list of amenities available for a given room type

Request

XML Request

<Pull_ListAmenitiesAvailableForRooms_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListAmenitiesAvailableForRooms_RQ>
XML Path Data Type Type Description
Pull_ListAmenitiesAvailableForRooms_RQ C Root element
Pull_ListAmenitiesAvailableForRooms_RQ/Authentication C, M Authentication details
Pull_ListAmenitiesAvailableForRooms_RQ/Authentication/UserName String(50) M Username
Pull_ListAmenitiesAvailableForRooms_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListAmenitiesAvailableForRooms_RS>
    <Status ID="0">Success</Status>
    <ResponseID>b0cb6ee42e1e495cadacbbe40413081c</ResponseID>
    <AmenitiesAvailableForRooms>
        <AmenitiesAvailableForRoom CompositionRoom="WC" CompositionRoomID="53">
            <Amenity AmenityID="11">Washing Machine</Amenity>
            <Amenity AmenityID="29">bidet</Amenity>
            <Amenity AmenityID="37">toilet</Amenity>
            <Amenity AmenityID="78">chest of drawers</Amenity>
            <Amenity AmenityID="245">washbasin </Amenity>
            <Amenity AmenityID="447">Heated towel bar</Amenity>
            <Amenity AmenityID="503">mirror</Amenity>
        </AmenitiesAvailableForRoom>
        <AmenitiesAvailableForRoom CompositionRoom="Bathroom" CompositionRoomID="81">
            <Amenity AmenityID="4">Iron &amp; Ironing Board</Amenity>
            <Amenity AmenityID="5">Drying Rack</Amenity>
            <Amenity AmenityID="6">Hair Dryer</Amenity>
            <Amenity AmenityID="8">Toiletries</Amenity>
            <Amenity AmenityID="11">Washing Machine</Amenity>
            <Amenity AmenityID="29">bidet</Amenity>
            <Amenity AmenityID="32">cupboard</Amenity>
            <Amenity AmenityID="33">vanity cupboard</Amenity>
            <Amenity AmenityID="37">toilet</Amenity>
            <Amenity AmenityID="52">bath with shower</Amenity>
            <Amenity AmenityID="78">chest of drawers</Amenity>
            ...
        </AmenitiesAvailableForRoom>
        ...
 </AmenitiesAvailableForRooms>
</Pull_ListAmenitiesAvailableForRooms_RS>
XML Path Data Type Type Description
Pull_ListAmenitiesAvailableForRooms_RS C Root element
Pull_ListAmenitiesAvailableForRooms_RS/Status String(100) M See ListStatuses
Pull_ListAmenitiesAvailableForRooms_RS/Status@ID Integer M See ListStatuses
Pull_ListAmenitiesAvailableForRooms_RS/ResponseID String(32) M Unique response ID
Pull_ListAmenitiesAvailableForRooms_RS/AmenitiesAvailableForRooms C A collection of amenities available for rooms
Pull_ListAmenitiesAvailableForRooms_RS/AmenitiesAvailableForRooms/AmenitiesAvailableForRoom C A collection of amenities available for a given room type
Pull_ListAmenitiesAvailableForRooms_RS/AmenitiesAvailableForRooms/AmenitiesAvailableForRoom@CompositionRoom String(100) M Description of a composition room, see ListCompositionRooms
Pull_ListAmenitiesAvailableForRooms_RS/AmenitiesAvailableForRooms/AmenitiesAvailableForRoom@CompositionRoom M Composition room ID, see ListCompositionRooms
Pull_ListAmenitiesAvailableForRooms_RS/AmenitiesAvailableForRooms/AmenitiesAvailableForRoom/Amenity String(200) M Amenity description, see ListAmenities
Pull_ListAmenitiesAvailableForRooms_RS/AmenitiesAvailableForRooms/AmenitiesAvailableForRoom/Amenity@AmenityID Integer Unique amenity ID, see ListAmenities

List image types

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.ImageType;

Pull_ListImageTypes_RQ request = new Pull_ListImageTypes_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListImageTypes_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListImageTypes_RS response = XmlTools.DeserializeObject<Pull_ListImageTypes_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of image types available for a property

Request

XML Request

<Pull_ListImageTypes_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListImageTypes_RQ>
XML Path Data Type Type Description
Pull_ListImageTypes_RQ C Root element
Pull_ListImageTypes_RQ/Authentication C, M Authentication details
Pull_ListImageTypes_RQ/Authentication/UserName String(50) M Username
Pull_ListImageTypes_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListImageTypes_RS>
    <Status ID="0">Success</Status>
    <ResponseID>c9b3c6ba5c4e4a18bfc825ba18688426</ResponseID>
    <ImageTypes>
        <ImageType ImageTypeID="1">MainImage</ImageType>
        <ImageType ImageTypeID="2">PropertyPlan</ImageType>
        <ImageType ImageTypeID="3">Interior</ImageType>
        <ImageType ImageTypeID="4">Exterior</ImageType>
        <ImageType ImageTypeID="5">Activities: Aerobics</ImageType>
        <ImageType ImageTypeID="6">Activities: Arcade</ImageType>
        <ImageType ImageTypeID="7">Activities: Archery</ImageType>
        <ImageType ImageTypeID="8">Activities: Basketball court</ImageType>
        <ImageType ImageTypeID="9">Activities: BBQ</ImageType>
        <ImageType ImageTypeID="10">Activities: Billiard</ImageType>
        <ImageType ImageTypeID="11">Activities: Boating</ImageType>
        <ImageType ImageTypeID="12">Activities: Bowling</ImageType>
        <ImageType ImageTypeID="13">Activities: Canoeing</ImageType>
        <ImageType ImageTypeID="14">Activities: Casino</ImageType>
        <ImageType ImageTypeID="15">Activities: Children activities</ImageType>
        <ImageType ImageTypeID="16">Activities: Cycling</ImageType>
        <ImageType ImageTypeID="17">Activities: Darts</ImageType>
        <ImageType ImageTypeID="18">Activities: Diving</ImageType>
        <ImageType ImageTypeID="19">Activities: Entertainment</ImageType>
        <ImageType ImageTypeID="20">Activities: Equipment storage</ImageType>
        <ImageType ImageTypeID="21">Activities: fishing</ImageType>
        <ImageType ImageTypeID="22">Activities: Fitness centre facilities</ImageType>
        <ImageType ImageTypeID="23">Activities: Fitness studio</ImageType>
        <ImageType ImageTypeID="24">Activities: Game room</ImageType>
        <ImageType ImageTypeID="25">Activities: Golf</ImageType>
        <ImageType ImageTypeID="26">Activities: Golf cart</ImageType>
        <ImageType ImageTypeID="27">Activities: Gym</ImageType>
        <ImageType ImageTypeID="28">Activities: Hiking</ImageType>
        <ImageType ImageTypeID="29">Activities: Horse riding</ImageType>
        <ImageType ImageTypeID="30">Activities: Hot spring bath</ImageType>
        <ImageType ImageTypeID="31">Activities: Hunting</ImageType>
        <ImageType ImageTypeID="32">Activities: Indoor golf driving range</ImageType>
        <ImageType ImageTypeID="33">Activities: Karaoke</ImageType>
        <ImageType ImageTypeID="34">Activities: Massage</ImageType>
        <ImageType ImageTypeID="35">Activities: Minigolf</ImageType>
        <ImageType ImageTypeID="36">Activities: Nightclub</ImageType>
        <ImageType ImageTypeID="37">Activities: Outdoor rock climbing</ImageType>
        <ImageType ImageTypeID="38">Activities: Pilates</ImageType>
        <ImageType ImageTypeID="39">Activities: Pro shop</ImageType>
        <ImageType ImageTypeID="40">Activities: Rock climbing wall indoor</ImageType>
        <ImageType ImageTypeID="41">Activities: Ropes course team building</ImageType>
        <ImageType ImageTypeID="42">Activities: Ski hill</ImageType>
        <ImageType ImageTypeID="43">Activities: Ski school</ImageType>
        <ImageType ImageTypeID="44">Activities: Ski sports</ImageType>
        <ImageType ImageTypeID="45">Activities: Skiing</ImageType>
        <ImageType ImageTypeID="46">Activities: Snorkeling</ImageType>
        <ImageType ImageTypeID="47">Activities: Snowboarding</ImageType>
        <ImageType ImageTypeID="48">Activities: Sports</ImageType>
        <ImageType ImageTypeID="49">Activities: Squash</ImageType>
        <ImageType ImageTypeID="50">Activities: Table tennis</ImageType>
        <ImageType ImageTypeID="51">Activities: Tennis court</ImageType>
        <ImageType ImageTypeID="52">Activities: Windsurfing</ImageType>
        <ImageType ImageTypeID="53">Activities: Yoga</ImageType>
        <ImageType ImageTypeID="54">Dining: Alcoholic drinks</ImageType>
        <ImageType ImageTypeID="55">Dining: American breakfast</ImageType>
        <ImageType ImageTypeID="56">Dining: Asian breakfast</ImageType>
        <ImageType ImageTypeID="57">Dining: Breakfast</ImageType>
        <ImageType ImageTypeID="58">Dining: Buffet breakfast</ImageType>
        <ImageType ImageTypeID="59">Dining: Coffee service</ImageType>
        <ImageType ImageTypeID="60">Dining: Continental breakfast</ImageType>
        <ImageType ImageTypeID="61">Dining: Couples dining</ImageType>
        <ImageType ImageTypeID="62">Dining: Delicatessen</ImageType>
        <ImageType ImageTypeID="63">Dining: Dining</ImageType>
        <ImageType ImageTypeID="64">Dining: Dinner</ImageType>
        <ImageType ImageTypeID="65">Dining: Drinks</ImageType>
        <ImageType ImageTypeID="66">Dining: English/Irish breakfast</ImageType>
        <ImageType ImageTypeID="67">Dining: Family dining</ImageType>
        <ImageType ImageTypeID="68">Dining: Food</ImageType>
        <ImageType ImageTypeID="69">Dining: Food and drinks</ImageType>
        <ImageType ImageTypeID="70">Dining: Food close up</ImageType>
        <ImageType ImageTypeID="71">Dining: Food court</ImageType>
        <ImageType ImageTypeID="72">Dining: Italian breakfast</ImageType>
        <ImageType ImageTypeID="73">Dining: Lunch</ImageType>
        <ImageType ImageTypeID="74">Dining: Meals</ImageType>
        <ImageType ImageTypeID="75">Dining: Non alcoholic drinks</ImageType>
        <ImageType ImageTypeID="76">Dining: Outdoor dining</ImageType>
        <ImageType ImageTypeID="77">Dining: Restaurant</ImageType>
        <ImageType ImageTypeID="78">Dining: Room service dining</ImageType>
        <ImageType ImageTypeID="79">Dining: Snack bar</ImageType>
        <ImageType ImageTypeID="80">Exterior: Airport shuttle</ImageType>
        <ImageType ImageTypeID="81">Exterior: Area and facilities</ImageType>
        <ImageType ImageTypeID="82">Exterior: Beach</ImageType>
        <ImageType ImageTypeID="83">Exterior: Beach ocean sea view</ImageType>
        <ImageType ImageTypeID="84">Exterior: Birds eye</ImageType>
        <ImageType ImageTypeID="85">Exterior: Children playground</ImageType>
        <ImageType ImageTypeID="86">Exterior: City shuttle</ImageType>
        <ImageType ImageTypeID="87">Exterior: City view</ImageType>
        <ImageType ImageTypeID="88">Exterior: Courtyard</ImageType>
        <ImageType ImageTypeID="89">Exterior: Detail</ImageType>
        <ImageType ImageTypeID="90">Exterior: Dock</ImageType>
        <ImageType ImageTypeID="91">Exterior: Entrance</ImageType>
        <ImageType ImageTypeID="92">Exterior: Fountain</ImageType>
        <ImageType ImageTypeID="93">Exterior: Garden</ImageType>
        <ImageType ImageTypeID="94">Exterior: Gated community</ImageType>
        <ImageType ImageTypeID="95">Exterior: Gazebo</ImageType>
        <ImageType ImageTypeID="96">Exterior: Lake</ImageType>
        <ImageType ImageTypeID="97">Exterior: Lake view</ImageType>
        <ImageType ImageTypeID="98">Exterior: Landmark</ImageType>
        <ImageType ImageTypeID="99">Exterior: Marina</ImageType>
        <ImageType ImageTypeID="100">Exterior: Mountain view</ImageType>
        <ImageType ImageTypeID="101">Exterior: On site shops</ImageType>
        <ImageType ImageTypeID="102">Exterior: Outdoor banquet area</ImageType>
        <ImageType ImageTypeID="103">Exterior: Outdoor wedding area</ImageType>
        <ImageType ImageTypeID="104">Exterior: Parking</ImageType>
        <ImageType ImageTypeID="105">Exterior: Patio</ImageType>
        <ImageType ImageTypeID="106">Exterior: Porch</ImageType>
        <ImageType ImageTypeID="107">Exterior: Property</ImageType>
        <ImageType ImageTypeID="108">Exterior: Property grounds</ImageType>
        <ImageType ImageTypeID="109">Exterior: River view</ImageType>
        <ImageType ImageTypeID="110">Exterior: Shopping area</ImageType>
        <ImageType ImageTypeID="111">Exterior: Street view</ImageType>
        <ImageType ImageTypeID="112">Exterior: Sundeck</ImageType>
        <ImageType ImageTypeID="113">Exterior: Supermakret grocery shop</ImageType>
        <ImageType ImageTypeID="114">Exterior: View from property</ImageType>
        <ImageType ImageTypeID="115">Exterior: View from room</ImageType>
        <ImageType ImageTypeID="116">Interior: ATM/Banking on site</ImageType>
        <ImageType ImageTypeID="117">Interior: Ballroom</ImageType>
        <ImageType ImageTypeID="118">Interior: Bar</ImageType>
        <ImageType ImageTypeID="119">Interior: Birthday party area</ImageType>
        <ImageType ImageTypeID="120">Interior: Business facilities</ImageType>
        <ImageType ImageTypeID="121">Interior: Cafe</ImageType>
        <ImageType ImageTypeID="122">Interior: Chapel</ImageType>
        <ImageType ImageTypeID="123">Interior: Check-in/out kiosk</ImageType>
        <ImageType ImageTypeID="124">Interior: Children playground</ImageType>
        <ImageType ImageTypeID="125">Interior: Childrens area</ImageType>
        <ImageType ImageTypeID="126">Interior: Concierge desk</ImageType>
        <ImageType ImageTypeID="127">Interior: Day care</ImageType>
        <ImageType ImageTypeID="128">Interior: Detail</ImageType>
        <ImageType ImageTypeID="129">Interior: Entrance</ImageType>
        <ImageType ImageTypeID="130">Interior: Fireplace</ImageType>
        <ImageType ImageTypeID="131">Interior: Gigt shop</ImageType>
        <ImageType ImageTypeID="132">Interior: Hallway</ImageType>
        <ImageType ImageTypeID="133">Interior: Indoor wedding</ImageType>
        <ImageType ImageTypeID="134">Interior: Laundry room</ImageType>
        <ImageType ImageTypeID="135">Interior: Library</ImageType>
        <ImageType ImageTypeID="136">Interior: Lobby</ImageType>
        <ImageType ImageTypeID="137">Interior: Lobby/Sitting area</ImageType>
        <ImageType ImageTypeID="138">Interior: Lounge</ImageType>
        <ImageType ImageTypeID="139">Interior: Meeting/Conference room</ImageType>
        <ImageType ImageTypeID="140">Interior: Patio</ImageType>
        <ImageType ImageTypeID="141">Interior: Property amenity</ImageType>
        <ImageType ImageTypeID="142">Interior: Reception</ImageType>
        <ImageType ImageTypeID="143">Interior: Reception hall</ImageType>
        <ImageType ImageTypeID="144">Interior: RV or truck parking</ImageType>
        <ImageType ImageTypeID="145">Interior: Sports bar</ImageType>
        <ImageType ImageTypeID="146">Interior: Staircase</ImageType>
        <ImageType ImageTypeID="147">Other: Animals</ImageType>
        <ImageType ImageTypeID="148">Other: Certificate award</ImageType>
        <ImageType ImageTypeID="149">Other: Location map</ImageType>
        <ImageType ImageTypeID="150">Other: Logo sign</ImageType>
        <ImageType ImageTypeID="151">Other: Other</ImageType>
        <ImageType ImageTypeID="152">Other: Pets</ImageType>
        <ImageType ImageTypeID="153">Pool: Aqua park</ImageType>
        <ImageType ImageTypeID="154">Pool: Childrens pool</ImageType>
        <ImageType ImageTypeID="155">Pool: Indoor pool</ImageType>
        <ImageType ImageTypeID="156">Pool: Indoor/Outdoor pool</ImageType>
        <ImageType ImageTypeID="157">Pool: Infinity pool</ImageType>
        <ImageType ImageTypeID="158">Pool: Lap pool</ImageType>
        <ImageType ImageTypeID="159">Pool: Natural pool</ImageType>
        <ImageType ImageTypeID="160">Pool: Outdoor pool</ImageType>
        <ImageType ImageTypeID="161">Pool: Pool view</ImageType>
        <ImageType ImageTypeID="162">Pool: Pool waterfall</ImageType>
        <ImageType ImageTypeID="163">Pool: Poolside bar</ImageType>
        <ImageType ImageTypeID="164">Pool: Rooftop pool</ImageType>
        <ImageType ImageTypeID="165">Pool: Swimming pool</ImageType>
        <ImageType ImageTypeID="166">Pool: Water park</ImageType>
        <ImageType ImageTypeID="167">Pool: Waterslide</ImageType>
        <ImageType ImageTypeID="168">Rooms: Balcony/Terrace</ImageType>
        <ImageType ImageTypeID="169">Rooms: Bathroom</ImageType>
        <ImageType ImageTypeID="170">Rooms: Bathroom amenities</ImageType>
        <ImageType ImageTypeID="171">Rooms: Bed</ImageType>
        <ImageType ImageTypeID="172">Rooms: Bedroom</ImageType>
        <ImageType ImageTypeID="173">Rooms: Bunk bed</ImageType>
        <ImageType ImageTypeID="174">Rooms: Business facilities</ImageType>
        <ImageType ImageTypeID="175">Rooms: Coffee/Tea facilities</ImageType>
        <ImageType ImageTypeID="176">Rooms: Communal kitchen</ImageType>
        <ImageType ImageTypeID="177">Rooms: Cot</ImageType>
        <ImageType ImageTypeID="178">Rooms: Deep soaking bathtub</ImageType>
        <ImageType ImageTypeID="179">Rooms: Dining area</ImageType>
        <ImageType ImageTypeID="180">Rooms: Hot tub</ImageType>
        <ImageType ImageTypeID="181">Rooms: Jetted tub</ImageType>
        <ImageType ImageTypeID="182">Rooms: Kitchen</ImageType>
        <ImageType ImageTypeID="183">Rooms: Kitchenette</ImageType>
        <ImageType ImageTypeID="184">Rooms: Living area</ImageType>
        <ImageType ImageTypeID="185">Rooms: Living room</ImageType>
        <ImageType ImageTypeID="186">Rooms: Microwave</ImageType>
        <ImageType ImageTypeID="187">Rooms: Minibar</ImageType>
        <ImageType ImageTypeID="188">Rooms: Mosquito nets</ImageType>
        <ImageType ImageTypeID="189">Rooms: Refrigerator</ImageType>
        <ImageType ImageTypeID="190">Rooms: Room</ImageType>
        <ImageType ImageTypeID="191">Rooms: Room changing table</ImageType>
        <ImageType ImageTypeID="192">Rooms: Safe</ImageType>
        <ImageType ImageTypeID="193">Rooms: Shower</ImageType>
        <ImageType ImageTypeID="194">Rooms: Sink</ImageType>
        <ImageType ImageTypeID="195">Rooms: Toilet</ImageType>
        <ImageType ImageTypeID="196">Rooms: TV and multimedia</ImageType>
        <ImageType ImageTypeID="197">Spa: Facial</ImageType>
        <ImageType ImageTypeID="198">Spa: Hair salon</ImageType>
        <ImageType ImageTypeID="199">Spa: Indoor spa tub</ImageType>
        <ImageType ImageTypeID="200">Spa: Nail salon</ImageType>
        <ImageType ImageTypeID="201">Spa: Outdoor spa tub</ImageType>
        <ImageType ImageTypeID="202">Spa: Reception</ImageType>
        <ImageType ImageTypeID="203">Spa: Sauna</ImageType>
        <ImageType ImageTypeID="204">Spa: Solarium</ImageType>
        <ImageType ImageTypeID="205">Spa: Spa treatment</ImageType>
        <ImageType ImageTypeID="206">Spa: Spa tub</ImageType>
        <ImageType ImageTypeID="207">Spa: Steam room</ImageType>
        <ImageType ImageTypeID="208">Spa: Treatment room</ImageType>
        <ImageType ImageTypeID="209">Spa: Turkish bath</ImageType>
        <ImageType ImageTypeID="210">Spa: Vichy shower</ImageType>
    </ImageTypes>
</Pull_ListImageTypes_RS>
XML Path Data Type Type Description
Pull_ListImageTypes_RS C Root element
Pull_ListImageTypes_RS/Status String(100) M See ListStatuses
Pull_ListImageTypes_RS/Status@ID Integer M See ListStatuses
Pull_ListImageTypes_RS/ResponseID String(32) M Unique response ID
Pull_ListImageTypes_RS/ImageTypes C, M A collection of image types
Pull_ListImageTypes_RS/ImageTypes/ImageType String(50) M Description of an image type
Pull_ListImageTypes_RS/ImageTypes/ImageType@ImageTypeID Integer M Unique image type ID

List payment methods

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PaymentMethod;

Pull_ListPaymentMethods_RQ request = new Pull_ListPaymentMethods_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListPaymentMethods_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListPaymentMethods_RS response = XmlTools.DeserializeObject<Pull_ListPaymentMethods_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of payment methods available for a property.

Request

XML Request

<Pull_ListPaymentMethods_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListPaymentMethods_RQ>
XML Path Data Type Type Description
Pull_ListPaymentMethods_RQ C Root element
Pull_ListPaymentMethods_RQ/Authentication C, M Authentication details
Pull_ListPaymentMethods_RQ/Authentication/UserName String(50) M Username
Pull_ListPaymentMethods_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListPaymentMethods_RS>
    <Status ID="0">Success</Status>
    <ResponseID>faa0a17760cf40a6a393acbccb4473de</ResponseID>
    <PaymentMethods>
        <PaymentMethod PaymentMethodID="1">Cash</PaymentMethod>
        <PaymentMethod PaymentMethodID="2">Bank transfer</PaymentMethod>
        <PaymentMethod PaymentMethodID="3">Credit card</PaymentMethod>
        <PaymentMethod PaymentMethodID="4">PayPal</PaymentMethod>
        <PaymentMethod PaymentMethodID="5">Other method</PaymentMethod>
    </PaymentMethods>
</Pull_ListPaymentMethods_RS>
XML Path Data Type Type Description
Pull_ListPaymentMethods_RS C Root element
Pull_ListPaymentMethods_RS/Status String(100) M See ListStatuses
Pull_ListPaymentMethods_RS/Status@ID Integer M See ListStatuses
Pull_ListPaymentMethods_RS/ResponseID String(32) M Unique response ID
Pull_ListPaymentMethods_RS/PaymentMethods C, M A collection of payment methods
Pull_ListPaymentMethods_RS/PaymentMethods/PaymentMethod String(100) M Description of a payment method
Pull_ListPaymentMethods_RS/PaymentMethods/PaymentMethod@PaymentMethodID Integer M Unique payment method ID

List reservation statuses

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Reservation;

Pull_ListReservationStatuses_RQ request = new Pull_ListReservationStatuses_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListReservationStatuses_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListReservationStatuses_RS response = XmlTools.DeserializeObject<Pull_ListReservationStatuses_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of reservation statuses available in Rentals United.

Some of the reservation statuses block, some of them do not block a property availability.

Request

XML Request

<Pull_ListReservationStatuses_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListReservationStatuses_RQ>
XML Path Data Type Type Description
Pull_ListReservationStatuses_RQ C Root element
Pull_ListReservationStatuses_RQ/Authentication C, M Authentication details
Pull_ListReservationStatuses_RQ/Authentication/UserName String(50) M Username
Pull_ListReservationStatuses_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListReservationStatuses_RS>
    <Status ID="0">Success</Status>
    <ResponseID>c3cc93f191ee498993f0ec9dcaf89e55</ResponseID>
    <ReservationStatuses>
        <ReservationStatus ReservationStatusID="1">Confirmed</ReservationStatus>
        <ReservationStatus ReservationStatusID="2">Canceled</ReservationStatus>
        <ReservationStatus ReservationStatusID="3">Modified</ReservationStatus>
    </ReservationStatuses>
</Pull_ListReservationStatuses_RS>
XML Path Data Type Type Description
Pull_ListReservationStatuses_RS C Root element
Pull_ListReservationStatuses_RS/Status String(100) M See ListStatuses
Pull_ListReservationStatuses_RS/Status@ID Integer M See ListStatuses
Pull_ListReservationStatuses_RS/ResponseID String(32) M Unique response ID
Pull_ListReservationStatuses_RS/ReservationStatuses C, M A collection of reservation statuses
Pull_ListReservationStatuses_RS/ReservationStatuses/ReservationStatus String(100) M Description of a reservation status
Pull_ListReservationStatuses_RS/ReservationStatuses/ReservationStatus@ReservationStatusID Integer M Unique reservation status ID

List deposit types

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.DepositType;

Pull_ListDepositTypes_RQ request = new Pull_ListDepositTypes_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListDepositTypes_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListDepositTypes_RS response = XmlTools.DeserializeObject<Pull_ListDepositTypes_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of deposit discriminator types. These types are used when specifying:

Request

XML Request

<Pull_ListDepositTypes_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListDepositTypes_RQ>
XML Path Data Type Type Description
Pull_ListDepositTypes_RQ C Root element
Pull_ListDepositTypes_RQ/Authentication C, M Authentication details
Pull_ListDepositTypes_RQ/Authentication/UserName String(50) M Username
Pull_ListDepositTypes_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListDepositTypes_RS>
    <Status ID="0">Success</Status>
    <ResponseID>4802b449d5014917a67dfd20dc5b7ac0</ResponseID>
    <DepositTypes>
        <DepositType DepositTypeID="1">No deposit</DepositType>
        <DepositType DepositTypeID="2">Percentage of total price (without cleaning)</DepositType>
        <DepositType DepositTypeID="3">Percentage of total price</DepositType>
        <DepositType DepositTypeID="4">Fixed amount per day</DepositType>
        <DepositType DepositTypeID="5">Flat amount per stay</DepositType>
    </DepositTypes>
</Pull_ListDepositTypes_RS>
XML Path Data Type Type Description
Pull_ListDepositTypes_RS C Root element
Pull_ListDepositTypes_RS/Status String(100) M See ListStatuses
Pull_ListDepositTypes_RS/Status@ID Integer M See ListStatuses
Pull_ListDepositTypes_RS/ResponseID String(32) M Unique response ID
Pull_ListDepositTypes_RS/DepositTypes C, M A collection of deposit types
Pull_ListDepositTypes_RS/DepositTypes/DepositType String(50) M Description of a deposit type
Pull_ListDepositTypes_RS/DepositTypes/DepositType@DepositTypeID Integer M Unique deposit type ID

List languages

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Language;

Pull_ListLanguages_RQ request = new Pull_ListLanguages_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListLanguages_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListLanguages_RS response = XmlTools.DeserializeObject<Pull_ListLanguages_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of languages supported by Rentals United.

Request

XML Request

<Pull_ListLanguages_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListLanguages_RQ>
XML Path Data Type Type Description
Pull_ListLanguages_RQ C Root element
Pull_ListLanguages_RQ/Authentication C, M Authentication details
Pull_ListLanguages_RQ/Authentication/UserName String(50) M Username
Pull_ListLanguages_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListLanguages_RS>
    <Status ID="0">Success</Status>
    <ResponseID>0f2ee36c70134f36bb9cf5e48c097256</ResponseID>
    <Languages>
        <Language LanguageID="1" LanguageCode="en">English</Language>
        <Language LanguageID="2" LanguageCode="de">German</Language>
        <Language LanguageID="3" LanguageCode="pl">Polish</Language>
        <Language LanguageID="4" LanguageCode="fr">French</Language>
        <Language LanguageID="5" LanguageCode="es">Spanish</Language>
        <Language LanguageID="6" LanguageCode="it">Italian</Language>
        <Language LanguageID="7" LanguageCode="sv">Swedish</Language>
        <Language LanguageID="8" LanguageCode="da">Danish</Language>
        <Language LanguageID="9" LanguageCode="pt">Portuguese</Language>
        <Language LanguageID="10" LanguageCode="cs">Czech</Language>
        <Language LanguageID="11" LanguageCode="nl">Dutch</Language>
        <Language LanguageID="12" LanguageCode="fi">Finnish</Language>
        <Language LanguageID="13" LanguageCode="ru">Russian</Language>
        <Language LanguageID="14" LanguageCode="lv">Latvian</Language>
        <Language LanguageID="15" LanguageCode="lt">Lithuanian</Language>
        <Language LanguageID="16" LanguageCode="ee">Estonian</Language>
        <Language LanguageID="17" LanguageCode="sk">Slovak</Language>
        <Language LanguageID="18" LanguageCode="hu">Hungarian</Language>
        <Language LanguageID="19" LanguageCode="jp">Japanese</Language>
        <Language LanguageID="22" LanguageCode="bg">Bulgarian</Language>
        <Language LanguageID="23" LanguageCode="tk">Turkish</Language>
        <Language LanguageID="24" LanguageCode="gr">Greek</Language>
        <Language LanguageID="25" LanguageCode="ro">Romanian</Language>
        <Language LanguageID="26" LanguageCode="zh">Chinese</Language>
        <Language LanguageID="27" LanguageCode="ca">Catalan</Language>
    </Languages>
</Pull_ListLanguages_RS>
XML Path Data Type Type Description
Pull_ListLanguages_RS C Root element
Pull_ListLanguages_RS/Status String(100) M See ListStatuses
Pull_ListLanguages_RS/Status@ID Integer M See ListStatuses
Pull_ListLanguages_RS/ResponseID String(32) M Unique response ID
Pull_ListLanguages_RS/Languages C, M A collection of languages
Pull_ListLanguages_RS/Languages/Language String(50) M Description of a language
Pull_ListLanguages_RS/Languages/Language@LanguageID Integer M Unique language ID
Pull_ListLanguages_RS/Languages/Language@LanguageCode String(2) M ISO 639-1 code that uniquely identifies a single language

List property external statuses

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyExternalStatus;

Pull_ListPropExtStatuses_RQ request = new Pull_ListPropExtStatuses_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListPropExtStatuses_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListPropExtStatuses_RS response = XmlTools.DeserializeObject<Pull_ListPropExtStatuses_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of property status on the Sales Channels.

If you are a PMS, you can pull a property status on connected Sales Channels and display it in your software to a client.

If you are a Sales Channel, you can push a property status to inform a property provider of a current property status on the Sales Channel.

Status description:

Request

XML Request

<Pull_ListPropExtStatuses_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListPropExtStatuses_RQ>
XML Path Data Type Type Description
Pull_ListPropExtStatuses_RQ C Root element
Pull_ListPropExtStatuses_RQ/Authentication C, M Authentication details
Pull_ListPropExtStatuses_RQ/Authentication/UserName String(50) M Username
Pull_ListPropExtStatuses_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListPropExtStatuses_RS>
    <Status ID="0">Success</Status>
    <ResponseID>7530c57d477943889d8d659b99a13223</ResponseID>
    <PropertyExternalStatuses>
        <Status ID="1">Online</Status>
        <Status ID="2">Offline</Status>
        <Status ID="3">Missing data</Status>
        <Status ID="4">Requested publishing</Status>
        <Status ID="5">Requested removal</Status>
        <Status ID="6">Disconnected</Status>
        <Status ID="7">Requested update</Status>
        <Status ID="8">Requested deactivation</Status>
    </PropertyExternalStatuses>
</Pull_ListPropExtStatuses_RS>
XML Path Data Type Type Description
Pull_ListPropExtStatuses_RS C Root element
Pull_ListPropExtStatuses_RS/Status String(100) M See ListStatuses
Pull_ListPropExtStatuses_RS/Status@ID Integer M See ListStatuses
Pull_ListPropExtStatuses_RS/ResponseID String(32) M Unique response ID
Pull_ListPropExtStatuses_RS/PropertyExternalStatuses C, M A collection of property external statuses
Pull_ListPropExtStatuses_RS/PropertyExternalStatuses/Status String(50) M Description of a property external status
Pull_ListPropExtStatuses_RS/PropertyExternalStatuses/Status@ID Integer M Unique property external status ID

List changeover types

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Changeover;

Pull_ListChangeoverTypes_RQ request = new Pull_ListChangeoverTypes_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListChangeoverTypes_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListChangeoverTypes_RS response = XmlTools.DeserializeObject<Pull_ListChangeoverTypes_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of available changeover day types.

Request

XML Request

<Pull_ListChangeoverTypes_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListChangeoverTypes_RQ>
XML Path Date Type Type Description
Pull_ListChangeoverTypes_RQ C Root element
Pull_ListChangeoverTypes_RQ/Authentication C, M Authentication details
Pull_ListChangeoverTypes_RQ/Authentication/UserName String(50) M Username
Pull_ListChangeoverTypes_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListChangeoverTypes_RS>
    <Status ID="0">Success</Status>
    <ResponseID>49d9e4099e0744c8b06da39c6a6dc53c</ResponseID>
    <ChangeoverTypes>
        <ChangeoverType ID="1">CheckIn</ChangeoverType>
        <ChangeoverType ID="2">CheckOut</ChangeoverType>
        <ChangeoverType ID="3">None</ChangeoverType>
        <ChangeoverType ID="4">Both</ChangeoverType>
    </ChangeoverTypes>
</Pull_ListChangeoverTypes_RS>
XML Path Date Type Type Description
Pull_ListChangeoverTypes_RS C Root element
Pull_ListChangeoverTypes_RS/Status String(100) C, M See ListStatuses
Pull_ListChangeoverTypes_RS/Status@ID Integer M See ListStatuses
Pull_ListChangeoverTypes_RS/ResponseID String(32) M Unique response ID
Pull_ListChangeoverTypes_RS/ChangeoverTypes M A collection of changeover types
Pull_ListChangeoverTypes_RS/ChangeoverTypes/ChangeoverType String(100) Description of a changeover type
Pull_ListChangeoverTypes_RS/ChangeoverTypes/ChangeoverType@ID Integer Unique changeover type ID

List additional fee kinds

This method is already deprecated. See ListAdditionalFeeTypes

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.AdditionalFees;

Pull_ListAdditionalFeeKinds_RQ request = new Pull_ListAdditionalFeeKinds_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListAdditionalFeeKinds_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListAdditionalFeeKinds_RS response = XmlTools.DeserializeObject<Pull_ListAdditionalFeeKinds_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of additional fee types (tax or an extra cost) so that you can properly classify extra fees.

Request

XML Request

<Pull_ListAdditionalFeeKinds_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListAdditionalFeeKinds_RQ>
XML Path Date Type Type Description
Pull_ListAdditionalFeeKinds_RQ C Root element
Pull_ListAdditionalFeeKinds_RQ/Authentication C, M Authentication details
Pull_ListAdditionalFeeKinds_RQ/Authentication/UserName String(50) M Username
Pull_ListAdditionalFeeKinds_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListAdditionalFeeKinds_RS>
    <Status ID="0">Success</Status>
    <ResponseID>729bd4deb274444ba3824510d8b4b94f</ResponseID>
    <AdditionalFeeKinds>
        <AdditionalFeeKindInfo ID="1">Tax - a kind representing generic tax value</AdditionalFeeKindInfo>
        <AdditionalFeeKindInfo ID="2">Fee - a kind representing generic fee</AdditionalFeeKindInfo>
    </AdditionalFeeKinds>
</Pull_ListAdditionalFeeKinds_RS>

XML Path Data Type Type Description
Pull_ListAdditionalFeeKinds_RS C Root element
Pull_ListAdditionalFeeKinds_RS/Status String(100) M See ListStatuses
Pull_ListAdditionalFeeKinds_RS/Status@ID Integer M See ListStatuses
Pull_ListAdditionalFeeKinds_RS/ResponseID String(32) M Unique response ID
Pull_ListAdditionalFeeKinds_RS/AdditionalFeeKinds C A collection of additional fee kinds
Pull_ListAdditionalFeeKinds_RS/AdditionalFeeKinds/AdditionalFeeKindInfo String(100) M Description of a fee kind
Pull_ListAdditionalFeeKinds_RS/AdditionalFeeKinds/AdditionalFeeKindInfo@ID Integer M Unique fee kind ID

List additional fee discriminators

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.AdditionalFees;

Pull_ListAdditionalFeeDiscriminators_RQ request = new Pull_ListAdditionalFeeDiscriminators_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListAdditionalFeeDiscriminators_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListAdditionalFeeDiscriminators_RS response = XmlTools.DeserializeObject<Pull_ListAdditionalFeeDiscriminators_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of extra fee discriminators. Full description of each extra fee discriminator is available in the XML response.

Request

XML Request

<Pull_ListAdditionalFeeDiscriminators_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListAdditionalFeeDiscriminators_RQ>
XML Path Date Type Type Description
Pull_ListAdditionalFeeDiscriminators_RQ C Root element
Pull_ListAdditionalFeeDiscriminators_RQ/Authentication C, M Authentication details
Pull_ListAdditionalFeeDiscriminators_RQ/Authentication/UserName String(50) M Username
Pull_ListAdditionalFeeDiscriminators_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListAdditionalFeeDiscriminators_RS>
    <Status ID="0">Success</Status>
    <ResponseID>fc3da4ae8fcc4bfdbb6075d2565d870e</ResponseID>
    <AdditionalFeeDiscriminators>
        <AdditionalFeeDiscriminatorInfo ID="1">FlatPerStay - a fixed value will be added once per whole stay. Value=10.05 means 10.05 EUR/USD or other currency will be added as additional fee.</AdditionalFeeDiscriminatorInfo>
        <AdditionalFeeDiscriminatorInfo ID="2">FixedPerDay - a fixed value will be added for each day of stay. Value=10.05 means 10.05 EUR/USD or other currency will be added as additional fee.</AdditionalFeeDiscriminatorInfo>
        <AdditionalFeeDiscriminatorInfo ID="3">IndependentPercentage - a percentage of total value will be added independently at the end of calculations. Value=0.0123 means 1.23% additional fee will be added.</AdditionalFeeDiscriminatorInfo>
        <AdditionalFeeDiscriminatorInfo ID="4">CumulativePercentage - a percentage of total value which will be added immediately and will take part in further calculation. Value=0.0123 means 1.23% additional fee will be added.</AdditionalFeeDiscriminatorInfo>
        <AdditionalFeeDiscriminatorInfo ID="5">FixedAmountPerPerson - a fixed value will be added for whole stay for each person.</AdditionalFeeDiscriminatorInfo>
        <AdditionalFeeDiscriminatorInfo ID="6">FixedAmountPerPersonPerDay - a fixed value will be added for each day of stay for each person.</AdditionalFeeDiscriminatorInfo>
        <AdditionalFeeDiscriminatorInfo ID="7">FixedAmountPerPersonPerWeek - a fixed value will be added for every week commenced, for each person.</AdditionalFeeDiscriminatorInfo>
        <AdditionalFeeDiscriminatorInfo ID="8">FixedAmountPerWeek - a fixed value will be added for every week commenced.</AdditionalFeeDiscriminatorInfo>
        <AdditionalFeeDiscriminatorInfo ID="9">VariableAmountByConsumption - the value of the fee depends on consumption.</AdditionalFeeDiscriminatorInfo>
        <AdditionalFeeDiscriminatorInfo ID="10">VariableAmountByUse - the value of the fee depends on use.</AdditionalFeeDiscriminatorInfo>
        <AdditionalFeeDiscriminatorInfo ID="11">FixedAmountPerSet - the value of the fee depends on number of sets.</AdditionalFeeDiscriminatorInfo>
        <AdditionalFeeDiscriminatorInfo ID="12">FixedAmountPerSetPerWeek - the value of the fee depends on number of sets, for every week commenced.</AdditionalFeeDiscriminatorInfo>
        <AdditionalFeeDiscriminatorInfo ID="13">IndependentPercentagePerDay - a percentage of total value for each day of stay will be added independently at the end of calculations.</AdditionalFeeDiscriminatorInfo>
        <AdditionalFeeDiscriminatorInfo ID="14">IndependentPercentagePerPerson - a percentage of total value for each person will be added independently at the end of calculations.</AdditionalFeeDiscriminatorInfo>
    </AdditionalFeeDiscriminators>
</Pull_ListAdditionalFeeDiscriminators_RS>
XML Path Data Type Type Description
Pull_ListAdditionalFeeDiscriminators_RS C Root element
Pull_ListAdditionalFeeDiscriminators_RS/Status String(100) M See ListStatuses
Pull_ListAdditionalFeeDiscriminators_RS/Status@ID Integer M See ListStatuses
Pull_ListAdditionalFeeDiscriminators_RS/ResponseID String(32) M Unique response ID
Pull_ListAdditionalFeeDiscriminators_RS/AdditionalFeeDiscriminators C A collection of additional fee discriminators
Pull_ListAdditionalFeeDiscriminators_RS/AdditionalFeeDiscriminators/AdditionalFeeDiscriminatorInfo String(200) M Description of a fee discriminator
Pull_ListAdditionalFeeDiscriminators_RS/AdditionalFeeDiscriminators/AdditionalFeeDiscriminatorInfo@ID Integer M Unique fee discriminator ID

List additional fee types

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.AdditionalFees;

Pull_ListAdditionalFeeTypes_RQ request = new Pull_ListAdditionalFeeTypes_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListAdditionalFeeTypes_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListAdditionalFeeTypes_RS response = XmlTools.DeserializeObject<Pull_ListAdditionalFeeTypes_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of all supported taxes and extra costs in Rentals United.

Request

XML Request

<Pull_ListAdditionalFeeTypes_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListAdditionalFeeTypes_RQ>
XML Path Date Type Type Description
Pull_ListAdditionalFeeTypes_RQ C Root element
Pull_ListAdditionalFeeTypes_RQ/Authentication C, M Authentication details
Pull_ListAdditionalFeeTypes_RQ/Authentication/UserName String(50) M Username
Pull_ListAdditionalFeeTypes_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListAdditionalFeeTypes_RS>
    <Status ID="0">Success</Status>
    <ResponseID>2291da59fce44efb87850f8b8d375328</ResponseID>
    <AdditionalFeeTypes>
        <AdditionalFeeTypeInfo ID="1">local tax</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="2">VAT</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="3">tourist tax</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="4">goods and services tax</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="5">city tax</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="6">Towels fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="7">Electricity fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="8">Bed linen fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="9">Gas fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="10">Oil fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="11">Wood fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="12">Water usage fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="13">Transfer fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="14">Linen package fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="15">Heating fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="16">Air conditioning fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="17">Kitchen linen fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="18">Housekeeping fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="19">Airport shuttle fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="20">Shuttle boat fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="21">Sea plane fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="22">Ski pass</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="23">Wristband fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="24">Visa support fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="25">Water park fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="26">Club card fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="27">Conservation fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="28">Credit card fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="29">Pet fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="30">Internet fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="0">unknown</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="31">Parking fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="32">Insurance</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="33">Service fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="34">Resort fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="35">Booking fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="36">Tourism fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="37">Destination fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="38">Extra bed fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="39">Environment fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="40">Children extra fee</AdditionalFeeTypeInfo>
        <AdditionalFeeTypeInfo ID="41">Cleaning fee</AdditionalFeeTypeInfo>
    </AdditionalFeeTypes>
</Pull_ListAdditionalFeeTypes_RS>
XML Path Data Type Type Description
Pull_ListAdditionalFeeTypes_RS C Root element
Pull_ListAdditionalFeeTypes_RS/Status String(100) M See ListStatuses
Pull_ListAdditionalFeeTypes_RS/Status@ID Integer M See ListStatuses
Pull_ListAdditionalFeeTypes_RS/ResponseID String(32) M Unique response ID
Pull_ListAdditionalFeeTypes_RS/AdditionalFeeTypes C A collection of additional fee types
Pull_ListAdditionalFeeTypes_RS/AdditionalFeeTypes/AdditionalFeeTypeInfo String(200) M Description of a fee type
Pull_ListAdditionalFeeTypes_RS/AdditionalFeeTypes/AdditionalFeeTypeInfo@ID Integer M Unique fee type ID

List cancellation types

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Reservation;

Pull_CancellationTypes_RQ request = new Pull_CancellationTypes_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_CancellationTypes_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_CancellationTypes_RS response = XmlTools.DeserializeObject<Pull_CancellationTypes_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of supported cancellation types. A confirmed reservation can be cancelled either by a guest or refused by a property provider.

Request

XML Request

<Pull_CancellationTypes_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_CancellationTypes_RQ>
XML Path Data Type Type Description
Pull_CancellationTypes_RQ C Root element
Pull_CancellationTypes_RQ/Authentication C, M Authentication details
Pull_CancellationTypes_RQ/Authentication/UserName String(50) M Username
Pull_CancellationTypes_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_CancellationTypes_RS>
    <Status ID="0">Success</Status>
    <ResponseID>367bec28bb3c4bc78ad63189079fd796</ResponseID>
    <CancellationTypes>
        <CancellationType Id="1">Owner</CancellationType>
        <CancellationType Id="2">Guest</CancellationType>
    </CancellationTypes>
</Pull_CancellationTypes_RS>
XML Path Data Type Type Description
Pull_CancellationTypes_RS C Root element
Pull_CancellationTypes_RS/Status String(100) M See ListStatuses
Pull_CancellationTypes_RS/Status@ID Integer M See ListStatuses
Pull_CancellationTypes_RS/ResponseID String(32) M Unique response ID
Pull_CancellationTypes_RS/CancellationTypes C, M A collection of cancellation types
Pull_CancellationTypes_RS/CancellationTypes/CancellationType C Description of a cancellation type
Pull_CancellationTypes_RS/CancellationTypes/PCancellationType/@ID Integer Unique cancellation type ID

List quote modes

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Reservation;

Pull_QuoteModes_RQ request = new Pull_QuoteModes_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_QuoteModes_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_QuoteModes_RS response = XmlTools.DeserializeObject<Pull_QuoteModes_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method is designed for Sales Channels.

This method returns a list of available modes that can be used when inserting a new reservation to Rentals United.

Request

XML Request

<Pull_QuoteModes_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_QuoteModes_RQ>
XML Path Data Type Type Description
Pull_QuoteModes_RQ C Root element
Pull_QuoteModes_RQ/Authentication C, M Authentication details
Pull_QuoteModes_RQ/Authentication/UserName String(50) M Username
Pull_QuoteModes_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_QuoteModes_RS>
    <Status ID="0">Success</Status>
    <ResponseID>03da7a6347364eea9fbf2416d0b0fa08</ResponseID>
    <QuoteModes>
        <QuoteMode Id="0">DoNotIgnore</QuoteMode>
        <QuoteMode Id="1">IgnorePMS</QuoteMode>
        <QuoteMode Id="2">IgnorePMSAndRU</QuoteMode>
    </QuoteModes>
</Pull_QuoteModes_RS>
XML Path Data Type Type Description
Pull_QuoteModes_RS C Root element
Pull_QuoteModes_RS/Status String(100) M See ListStatuses
Pull_QuoteModes_RS/Status@ID Integer M See ListStatuses
Pull_QuoteModes_RS/ResponseID String(32) M Unique response ID
Pull_QuoteModes_RS/QuoteModes C, M A collection of cancellation types
Pull_QuoteModes_RS/QuoteModes/CancellationType C Description of a quote mode
Pull_QuoteModes_RS/QuoteModes/QuoteModes/@ID Integer Unique quote mode ID

Pull methods - Static property data

API methods described in this section allow you to pull a property and a property provider information from Rentals United.

List properties

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Property;

Pull_ListProp_RQ request = new Pull_ListProp_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    LocationID = 3509,
    IncludeNLA = false
};

string xmlBody = XmlTools.SerializeObject<Pull_ListProp_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListProp_RS response = XmlTools.DeserializeObject<Pull_ListProp_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of properties in a given location. Use IncludeNLA to identify archived (no longer available) properties.

Request

XML Request

<Pull_ListProp_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
 <LocationID>3509</LocationID>
 <IncludeNLA>false</IncludeNLA>
</Pull_ListProp_RQ>
XML Path Data Type Type Description
Pull_ListProp_RQ C Root element
Pull_ListProp_RQ/Authentication C, M Authentication details
Pull_ListProp_RQ/Authentication/UserName String(50) M Username
Pull_ListProp_RQ/Authentication/Password String(50) M Password
Pull_ListProp_RQ/LocationID Integer M See ListLocations
Pull_ListProp_RQ/IncludeNLA Boolean O False/0 will filter out no longer available properties from the XML Response. Default is True/1.

Response

XML Response


<Pull_ListProp_RS>
    <Status ID="0">Success</Status>
    <ResponseID>320b40cb8d6f434cb0c6d4bd2799974f</ResponseID>
    <Properties>
        <Property>
            <PUID BuildingID="-1">273641</PUID>
            <ID BuildingID="-1">2209989</ID>
            <Name>One Bedroom Apartment</Name>
            <OwnerID>553968</OwnerID>
            <DetailedLocationID TypeID="4">25591</DetailedLocationID>
            <LastMod NLA="false">2019-04-26 06:53:45</LastMod>
            <DateCreated>2019-03-05</DateCreated>
        </Property>
    </Properties>
</Pull_ListProp_RS>
XML Path Data Type Type Description
Pull_ListProp_RS C Root element
Pull_ListProp_RS/Status String(100) M See ListStatuses
Pull_ListProp_RS/Status@ID Integer M See ListStatuses
Pull_ListProp_RS/ResponseID String(32) M Unique response ID
Pull_ListProp_RS/Properties C, M A collection of properties in the location specified in the XML Request
Pull_ListProp_RS/Properties/Property C A single property
Pull_ListProp_RS/Properties/Property/PUID String(200) O Unique property ID in the property provider's system
Pull_ListProp_RS/Properties/Property/PUID@BuildingID Integer O Unique building ID in the property provider's system
Pull_ListProp_RS/Properties/Property/PUID@BuildingName String(50) O Building name in the provider's system
Pull_ListProp_RS/Properties/Property/ID Integer Unique property ID
Pull_ListProp_RS/Properties/Property/ID@BuildingID Integer O Building ID
Pull_ListProp_RS/Properties/Property/ID@BuildingName String(100) O Building name
Pull_ListProp_RS/Properties/Property/Name String(300) M Property name
Pull_ListProp_RS/Properties/Property/OwnerID Integer M Owner ID, See GetOwnerDetails
Pull_ListProp_RS/Properties/Property/DetailedLocationID Integer M The most detailed location. See GetLocationDetails
Pull_ListProp_RS/Properties/Property/DetailedLocationID@TypeID Integer M Locatiion type ID, see ListLocationTypes
Pull_ListProp_RS/Properties/Property/LastMod String M Last modification date of property static details (format YYYY-MM-DD HHMM-SS)
Pull_ListProp_RS/Properties/Property/LastMod@NLA Boolean M True/1 means that the property is no longer available, NLA properties are automatically removed from the XML feed 1 week after they have been deactivated by the property provider
Pull_ListProp_RS/Properties/Property/DateCreated String(10) M Property create date (YYYY-MM-DD format)

List owner's properties

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Property;

Pull_ListOwnerProp_RQ request = new Pull_ListOwnerProp_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    OwnerID = 1,
    IncludeNLA = false
};

string xmlBody = XmlTools.SerializeObject<Pull_ListOwnerProp_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListOwnerProp_RS response = XmlTools.DeserializeObject<Pull_ListOwnerProp_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of properties that belong to a specified owner when you use OwnerId parameter. However, if you supply Username parameter instead, response will contain properties of all owners underlying this very Username. Using Username parameter can help you to reduce the number of calls performed. Use IncludeNLA to identify archived (no longer available) properties. It's also worth mentioning that not active properties available to you are still listed in response.

Request

XML Request

<Pull_ListOwnerProp_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
 <OwnerID>553968</OwnerID>
 <IncludeNLA>false</IncludeNLA>
</Pull_ListOwnerProp_RQ>
XML Path Data Type Type Description
Pull_ListOwnerProp_RQ C Root element
Pull_ListOwnerProp_RQ/Authentication C, M Authentication details
Pull_ListOwnerProp_RQ/Authentication/UserName String(50) M Username
Pull_ListOwnerProp_RQ/Authentication/Password String(50) M Password
Pull_ListOwnerProp_RQ/OwnerID Integer O See ListAllOwners
Pull_ListOwnerProp_RQ/Username String(50) O It's possible to find one common username for ownerIds in ListAllOwners. It happens when user distributes properties between owners.
Pull_ListOwnerProp_RQ/IncludeNLA Boolean O If False/0, no longer available properties will be filtered out from the XML Response. Default is True/1

Response

XML Response

<Pull_ListOwnerProp_RS>
    <Status ID="0">Success</Status>
    <ResponseID>1713ee87464547f8aa9a120af0f02d5d</ResponseID>
    <Properties>
        <Property>
            <PUID BuildingID="-1">273641</PUID>
            <ID BuildingID="-1">2209989</ID>
            <Name>One Bedroom Apartment</Name>
            <OwnerID>553968</OwnerID>
            <DetailedLocationID TypeID="4">25591</DetailedLocationID>
            <LastMod NLA="false">2019-04-26 06:53:45</LastMod>
            <DateCreated>2019-03-05</DateCreated>
        </Property>
    </Properties>
</Pull_ListOwnerProp_RS>
XML Path Data Type Type Description
Pull_ListOwnerProp_RS C Root element
Pull_ListOwnerProp_RS/Status String(100) M See ListStatuses
Pull_ListOwnerProp_RS/Status@ID Integer M See ListStatuses
Pull_ListOwnerProp_RS/ResponseID String(32) M Unique response ID
Pull_ListOwnerProp_RS/Properties C, M A collection of owner's properties
Pull_ListOwnerProp_RS/Properties/Property C Single property
Pull_ListOwnerProp_RS/Properties/Property/PUID String(50) M Unique property ID in the property provider's system
Pull_ListOwnerProp_RS/Properties/Property/PUID@BuildingID Integer M Unique building ID in the property provider's system
Pull_ListOwnerProp_RS/Properties/Property/ID Integer M Unique property ID
Pull_ListOwnerProp_RS/Properties/Property/ID@BuildingID Integer O Unique building ID
Pull_ListOwnerProp_RS/Properties/Property/ID@BuildingName String(50) O Building name
Pull_ListOwnerProp_RS/Properties/Property/Name String(150) M Property name
Pull_ListOwnerProp_RS/Properties/Property/OwnerID Integer M Owner ID, See GetOwnerDetails
Pull_ListOwnerProp_RS/Properties/Property/DetailedLocationID Integer M The most detailed location ID. See GetLocationDetails
Pull_ListOwnerProp_RS/Properties/Property/DetailedLocationID@TypeID Integer M Location type ID, See ListLocationTypes
Pull_ListOwnerProp_RS/Properties/Property/LastMod String M Last modification date of property static details (format YYYY-MM-DD HHMM-SS)
Pull_ListOwnerProp_RS/Properties/Property/LastMod@NLA Boolean M True/1 means that the property is no longer available, NLA properties are automatically removed from the XML feed 1 week after they have been deactivated by the property provider
Pull_ListOwnerProp_RS/Properties/Property/DateCreated String(10) M Property create date (YYYY-MM-DD format)

List properties by creation date

using System;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Property;

Pull_ListPropByCreationDate_RQ request = new Pull_ListPropByCreationDate_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    CreationFrom = new DateTime(2013, 08, 17),
    CreationTo = new DateTime(2013, 08, 27),
    IncludeNLA = false
};

string xmlBody = XmlTools.SerializeObject<Pull_ListPropByCreationDate_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListPropByCreationDate_RS response = XmlTools.DeserializeObject<Pull_ListPropByCreationDate_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of properties that have been created in Rentals United in a given date range.

Use IncludeNLA to identify archived (no longer available) properties.

Request

XML Request

<Pull_ListPropByCreationDate_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
 <CreationFrom>2019-03-01</CreationFrom>
 <CreationTo>2021-01-01</CreationTo>
 <IncludeNLA>false</IncludeNLA>
</Pull_ListPropByCreationDate_RQ>
XML Path Data Type Type Description
Pull_ListPropByCreationDate_RQ C Root element
Pull_ListPropByCreationDate_RQ/Authentication C, M Authentication details
Pull_ListPropByCreationDate_RQ/Authentication/UserName String(50) M Username
Pull_ListPropByCreationDate_RQ/Authentication/Password String(50) M Password
Pull_ListPropByCreationDate_RQ/CreationFrom String(10) M Property creation date from (YYYY-MM-DD format)
Pull_ListPropByCreationDate_RQ/CreationTo String(10) M Property creation date to (YYYY-MM-DD format)
Pull_ListPropByCreationDate_RQ/IncludeNLA Boolean O If False/0, no longer available properties will be filtered out from XML Response. Default is True/1

Response

XML Response

<Pull_ListPropByCreationDate_RS>
    <Status ID="0">Success</Status>
    <ResponseID>2900670d93404b0ea93664e18e5675ca</ResponseID>
    <Properties>
        <Property>
            <ID BuildingID="-1">2209989</ID>
            <Name>One Bedroom Apartment</Name>
            <OwnerID>553968</OwnerID>
            <DetailedLocationID TypeID="-1">25591</DetailedLocationID>
            <LastMod NLA="false">2019-04-26 06:53:45</LastMod>
            <DateCreated>2019-03-05 08:38:42</DateCreated>
        </Property>
    </Properties>
</Pull_ListPropByCreationDate_RS>
XML Path Data Type Type Description
Pull_ListPropByCreationDate_RS C Root element
Pull_ListPropByCreationDate_RS/Status String(100) M See ListStatuses
Pull_ListPropByCreationDate_RS/Status@ID Integer M See ListStatuses
Pull_ListPropByCreationDate_RS/ResponseID String(32) M Unique response ID
Pull_ListPropByCreationDate_RS/Properties C, M A collection of properties created in the specified date range
Pull_ListPropByCreationDate_RS/Properties/Property C Single property
Pull_ListPropByCreationDate_RS/Properties/Property/PUID String(50) M Unique property ID in the property provider's system
Pull_ListPropByCreationDate_RS/Properties/Property/PUID@BuildingID Integer M Unique building ID in the property provider's system
Pull_ListPropByCreationDate_RS/Properties/Property/ID Integer Unique property ID
Pull_ListPropByCreationDate_RS/Properties/Property/ID@BuildingID Integer O Unique building ID
Pull_ListPropByCreationDate_RS/Properties/Property/ID@BuildingName String(50) O Building name
Pull_ListPropByCreationDate_RS/Properties/Property/Name String(150) M Property name
Pull_ListPropByCreationDate_RS/Properties/Property/OwnerID Integer M Owner ID. See GetOwnerDetails
Pull_ListPropByCreationDate_RS/Properties/Property/DetailedLocationID Integer M The most detailed location. See GetLocationDetails
Pull_ListPropByCreationDate_RS/Properties/Property/DetailedLocationID@TypeID Integer M Location type ID, See ListLocationTypes
Pull_ListPropByCreationDate_RS/Properties/Property/LastMod String M Last modification date of property static details (format YYYY-MM-DD HHMM-SS)
Pull_ListPropByCreationDate_RS/Properties/Property/LastMod@NLA Boolean M True/1 means that the property is no longer available, NLA properties are automatically removed from the XML feed 1 week after they have been deactivated by the property provider
Pull_ListPropByCreationDate_RS/Properties/Property/DateCreated String(10) M Property create date (YYYY-MM-DD format)

List specific property

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Property;

Pull_ListSpecProp_RQ request = new Pull_ListSpecProp_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    PropertyID = 1
};

string xmlBody = XmlTools.SerializeObject<Pull_ListSpecProp_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListSpecProp_RS response = XmlTools.DeserializeObject<Pull_ListSpecProp_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a property's static details.

If you are a Sales Channel you will retrieve full property information and create a listing in your system.

Request

XML Request

<Pull_ListSpecProp_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
 <PropertyID>2209989</PropertyID>
</Pull_ListSpecProp_RQ>
XML Path Data Type Type Description
Pull_ListSpecProp_RQ C Root element
Pull_ListSpecProp_RQ/Authentication C, M Authentication details
Pull_ListSpecProp_RQ/Authentication/UserName String(50) M Username
Pull_ListSpecProp_RQ/Authentication/Password String(50) M Password
Pull_ListSpecProp_RQ/PropertyID Integer C Property ID

Response

XML Response (amenities not assigned to a specific room)

<Pull_ListSpecProp_RS>
    <Status ID="0">Success</Status>
    <ResponseID>a61501281f7d4b63999b65ba3dcb2b96</ResponseID>
    <Property Currency="EUR">
        <PUID BuildingID="-1">273641</PUID>
        <ID BuildingID="-1" BuildingName="">2209989</ID>
        <Name>One Bedroom Apartment</Name>
        <OwnerID>553968</OwnerID>
        <DetailedLocationID TypeID="4">25591</DetailedLocationID>
        <LastMod NLA="false">2019-04-26 06:53:45</LastMod>
        <DateCreated>2019-03-05</DateCreated>
        <UserID>553968</UserID>
        <CleaningPrice>20.0000</CleaningPrice>
        <Space>47</Space>
        <StandardGuests>4</StandardGuests>
        <CanSleepMax>4</CanSleepMax>
        <PropertyTypeID>2</PropertyTypeID>
        <ObjectTypeID>3</ObjectTypeID>
        <NoOfUnits>1</NoOfUnits>
        <Floor>0</Floor>
        <Street>Palmowa 15</Street>
        <ZipCode>05</ZipCode>
        <LicenseNumber />
        <LicenceInfo>
            <FrenchLicenceInfo />
        </LicenceInfo>
        <Coordinates>
            <Latitude>52.217453</Latitude>
            <Longitude>21.139456</Longitude>
        </Coordinates>
        <ArrivalInstructions>
            <Landlord>John Smith</Landlord>
            <Email>john@example.com</Email>
            <Phone>+1 111 111 111</Phone>
            <DaysBeforeArrival>0</DaysBeforeArrival>
            <PickupService />
            <HowToArrive />
        </ArrivalInstructions>
        <CheckInOut>
            <CheckInFrom>13:00</CheckInFrom>
            <CheckInTo>18:00</CheckInTo>
            <CheckOutUntil>12:00</CheckOutUntil>
            <Place>at_the_apartment</Place>
            <LateArrivalFees />
            <EarlyDepartureFees />
        </CheckInOut>
        <Deposit DepositTypeID="1">0.00</Deposit>
        <SecurityDeposit DepositTypeID="5">200.00</SecurityDeposit>
        <IsActive>true</IsActive>
        <IsArchived>false</IsArchived>
        <Distances />
        <CompositionRooms>
            <CompositionRoomID Count="1">257</CompositionRoomID>
            <CompositionRoomID Count="1">249</CompositionRoomID>
        </CompositionRooms>
        <Amenities>
            <Amenity Count="1">595</Amenity>
            <Amenity Count="1">702</Amenity>
            <Amenity Count="1">802</Amenity>
            <Amenity Count="1">930</Amenity>
            <Amenity Count="1">101</Amenity>
            <Amenity Count="1">187</Amenity>
        </Amenities>
        <Images>
            <Image ImageTypeID="1" ImageReferenceID="1">https://a0.muscache.com/im/pictures/2762835/690c16be_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3" ImageReferenceID="2">https://a0.muscache.com/im/pictures/2762748/fe106e44_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3" ImageReferenceID="3">https://a0.muscache.com/im/pictures/2762913/330bc8fc_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762824/efde5102_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762742/8db449ba_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762709/d5475c1f_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762927/dbcef7be_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762876/924c76ce_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762732/11549cb5_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762859/47299148_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762790/1ed28e01_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762903/876416ab_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762768/dc034096_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580441799567.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580519143138.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580532424324.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580535861847.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580539611850.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580554299473.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580559455559.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580563830468.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580568830701.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580575549208.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580582111732.jpg</Image>
        </Images>
        <ImageCaptions>
            <ImageCaption LanguageID="1", ImageReferenceID="1">
                This is the main image
            </ImageCaption>
            <ImageCaption LanguageID="1", ImageReferenceID="2">
                This is image showcasing X
            </ImageCaption>
            <ImageCaption LanguageID="1", ImageReferenceID="3">
                This is image showcasing Y
            </ImageCaption>
        </ImageCaptions>
        <PaymentMethods>
            <PaymentMethod PaymentMethodID="3">
                <![CDATA[]]>
            </PaymentMethod>
        </PaymentMethods>
        <CancellationPolicies>
            <CancellationPolicy ID="0" ValidFrom="1" ValidTo="6">100.00</CancellationPolicy>
            <CancellationPolicy ID="0" ValidFrom="7" ValidTo="999">50.00</CancellationPolicy>
        </CancellationPolicies>
        <Descriptions>
            <Description LanguageID="1">
                <Text>
                    <![CDATA[One bedroom apartment for rent in green area of Warsaw - Wawer  district for Euro 2012. 
The apartment is located in newly built block of flats on the ground level with 40 sqm private garden.

The apartment is 46 sqm, 23 sqm living room with kitchenette, 13 sqm bedroom with big closet and a bedroom with toilet.

The estate is fenced with private parking place in the price. In the neighborhood there is a lot of green area, bus stop, grocery. All the amenities in the apartment are new, the apartment is newly renovated with all the comforts.

This is a great place to stay for Euro 2012 championship. The apartment is on the right side of the river, 8km from the football stadium. It is easy to get to the city center and the stadium by either car or bus (bust station 100m from the building). 
You can also watch football matches with your friends on the barbeque party in the garden.
]]>
                </Text>
            </Description>
        </Descriptions>
        <AdditionalFees />
    </Property>
</Pull_ListSpecProp_RS>

XML Response (amenities assigned to a specific room)

<Pull_ListSpecProp_RS>
    <Status ID="0">Success</Status>
    <ResponseID>a61501281f7d4b63999b65ba3dcb2b96</ResponseID>
    <Property Currency="EUR">
        <PUID BuildingID="-1">273641</PUID>
        <ID BuildingID="-1" BuildingName="">2209989</ID>
        <Name>One Bedroom Apartment</Name>
        <OwnerID>553968</OwnerID>
        <DetailedLocationID TypeID="4">25591</DetailedLocationID>
        <LastMod NLA="false">2019-04-26 06:53:45</LastMod>
        <DateCreated>2019-03-05</DateCreated>
        <UserID>553968</UserID>
        <CleaningPrice>20.0000</CleaningPrice>
        <Space>47</Space>
        <StandardGuests>4</StandardGuests>
        <CanSleepMax>4</CanSleepMax>
        <PropertyTypeID>2</PropertyTypeID>
        <ObjectTypeID>3</ObjectTypeID>
        <NoOfUnits>1</NoOfUnits>
        <Floor>0</Floor>
        <Street>Palmowa 15</Street>
        <ZipCode>05</ZipCode>
        <LicenseNumber />
        <LicenceInfo>
            <FrenchLicenceInfo />
        </LicenceInfo>
        <Coordinates>
            <Latitude>52.217453</Latitude>
            <Longitude>21.139456</Longitude>
        </Coordinates>
        <ArrivalInstructions>
            <Landlord>John Smith</Landlord>
            <Email>john@example.com</Email>
            <Phone>+1 111 111 111</Phone>
            <DaysBeforeArrival>0</DaysBeforeArrival>
            <PickupService />
            <HowToArrive />
        </ArrivalInstructions>
        <CheckInOut>
            <CheckInFrom>13:00</CheckInFrom>
            <CheckInTo>18:00</CheckInTo>
            <CheckOutUntil>12:00</CheckOutUntil>
            <Place>at_the_apartment</Place>
            <LateArrivalFees />
            <EarlyDepartureFees />
        </CheckInOut>
        <Deposit DepositTypeID="1">0.00</Deposit>
        <SecurityDeposit DepositTypeID="5">200.00</SecurityDeposit>
        <IsActive>true</IsActive>
        <IsArchived>false</IsArchived>
        <Distances />
        <CompositionRoomsAmenities>
            <CompositionRoomAmenities CompositionRoomID="257">
                <Amenities>
                    <Amenity Count="1">61</Amenity>
                </Amenities>
            </CompositionRoomAmenities>
            <CompositionRoomAmenities CompositionRoomID="249">
                <Amenities>
                    <Amenity Count="1">200</Amenity>
                </Amenities>
            </CompositionRoomAmenities>
        </CompositionRoomsAmenities>
        <Amenities>
            <Amenity Count="1">595</Amenity>
            <Amenity Count="1">702</Amenity>
            <Amenity Count="1">802</Amenity>
            <Amenity Count="1">930</Amenity>
            <Amenity Count="1">101</Amenity>
            <Amenity Count="1">187</Amenity>
        </Amenities>
        <Images>
            <Image ImageTypeID="1" ImageReferenceID="1">https://a0.muscache.com/im/pictures/2762835/690c16be_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3" ImageReferenceID="2">https://a0.muscache.com/im/pictures/2762748/fe106e44_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3" ImageReferenceID="3">https://a0.muscache.com/im/pictures/2762913/330bc8fc_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762824/efde5102_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762742/8db449ba_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762709/d5475c1f_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762927/dbcef7be_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762876/924c76ce_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762732/11549cb5_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762859/47299148_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762790/1ed28e01_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762903/876416ab_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://a0.muscache.com/im/pictures/2762768/dc034096_original.jpg?aki_policy=x_large</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580441799567.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580519143138.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580532424324.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580535861847.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580539611850.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580554299473.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580559455559.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580563830468.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580568830701.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580575549208.jpg</Image>
            <Image ImageTypeID="3">https://dwe6atvmvow8k.cloudfront.net/ru/553968/2209989/636918580582111732.jpg</Image>
        </Images>
        <ImageCaptions>
            <ImageCaption LanguageID="1", ImageReferenceID="1">
                This is the main image
            </ImageCaption>
            <ImageCaption LanguageID="1", ImageReferenceID="2">
                This is image showcasing X
            </ImageCaption>
            <ImageCaption LanguageID="1", ImageReferenceID="3">
                This is image showcasing Y
            </ImageCaption>
        </ImageCaptions>
        <PaymentMethods>
            <PaymentMethod PaymentMethodID="3">
                <![CDATA[]]>
            </PaymentMethod>
        </PaymentMethods>
        <CancellationPolicies>
            <CancellationPolicy ID="0" ValidFrom="1" ValidTo="6">100.00</CancellationPolicy>
            <CancellationPolicy ID="0" ValidFrom="7" ValidTo="999">50.00</CancellationPolicy>
        </CancellationPolicies>
        <Descriptions>
            <Description LanguageID="1">
                <Text>
                    <![CDATA[One bedroom apartment for rent in green area of Warsaw - Wawer  district for Euro 2012. 
The apartment is located in newly built block of flats on the ground level with 40 sqm private garden.

The apartment is 46 sqm, 23 sqm living room with kitchenette, 13 sqm bedroom with big closet and a bedroom with toilet.

The estate is fenced with private parking place in the price. In the neighborhood there is a lot of green area, bus stop, grocery. All the amenities in the apartment are new, the apartment is newly renovated with all the comforts.

This is a great place to stay for Euro 2012 championship. The apartment is on the right side of the river, 8km from the football stadium. It is easy to get to the city center and the stadium by either car or bus (bust station 100m from the building). 
You can also watch football matches with your friends on the barbeque party in the garden.
]]>
                </Text>
            </Description>
        </Descriptions>
        <AdditionalFees />
    </Property>
</Pull_ListSpecProp_RS>
XML Path Data Type Type Description
Pull_ListSpecProp_RS C Root element
Pull_ListSpecProp_RS/Status String(100) M See ListStatuses
Pull_ListSpecProp_RS/Status@ID Integer M See ListStatuses
Pull_ListSpecProp_RS/ResponseID String(32) M Unique response ID
Pull_ListSpecProp_RS/Property C, M Single property
Pull_ListSpecProp_RS/Property@Currency String(3) C, M Property rates currency
Pull_ListSpecProp_RS/Properties/Property/PUID String(50) M Unique property ID in the property provider's system
Pull_ListSpecProp_RS/Properties/Property/PUID@BuildingID Integer M Unique building ID in the property provider's system
Pull_ListSpecProp_RS/Property/ID Integer M Unique property ID
Pull_ListSpecProp_RS/Property/ID@BuildingID Integer O Unique building ID
Pull_ListSpecProp_RS/Property/ID@BuildingName String(50) O Building name
Pull_ListSpecProp_RS/Property/Name String(150) M Property name
Pull_ListSpecProp_RS/Property/OwnerID Integer M Owner ID. See GetOwnerDetails
Pull_ListSpecProp_RS/Property/Property/DetailedLocationID Integer M The most detailed location. See GetLocationDetails
Pull_ListSpecProp_RS/Property/Property/DetailedLocationID@TypeID Integer M Location type ID, See ListLocationTypes
Pull_ListSpecProp_RS/Property/Property/LastMod String M Last modification date of property static details (format YYYY-MM-DD HHMM-SS)
Pull_ListSpecProp_RS/Property/LastMod@NLA Boolean M True/1 means that the property is no longer available, NLA properties are automatically removed from the XML feed 1 week after they have been deactivated by the property provider
Pull_ListSpecProp_RS/Property/DateCreated String M Property create date (YYYY-MM-DD format)
Pull_ListSpecProp_RS/Property/IsActive Boolean M Indicates whether the property is active, See Property status
Pull_ListSpecProp_RS/Property/IsArchived Boolean M Indicates whether the property is archived, See Property status
Pull_ListSpecProp_RS/Property/CleaningPrice Decimal(19,2) M Property cleaning price.
Pull_ListSpecProp_RS/Property/Space Integer M Living space in square meters
Pull_ListSpecProp_RS/Property/StandardGuests Integer M Number of guests included in the price
Pull_ListSpecProp_RS/Property/CanSleepMax Integer M Maximum number of guests
Pull_ListSpecProp_RS/Property/PropertyTypeID Integer M See ListPropertyTypes
Pull_ListSpecProp_RS/Property/ObjectTypeID Integer M See ListOTAPropertyTypes
Pull_ListSpecProp_RS/Property/NoOfUnits Integer O Number of units in the multi unit property
Pull_ListSpecProp_RS/Property/Floor Integer M Floor on which a property is located
Pull_ListSpecProp_RS/Property/Street String(100) M Property address (street name, building/flat number)
Pull_ListSpecProp_RS/Property/ZipCode String(15) M Property zip code
Pull_ListSpecProp_RS/Property/Coordinates C Property's geographical coordinates
Pull_ListSpecProp_RS/Property/Coordinates/Latitude String(50) M Geographic latitude
Pull_ListSpecProp_RS/Property/Coordinates/Longitude String(50) M Geographic longitude
Pull_ListSpecProp_RS/Property/Distances C, O A collection of distances to city attractions/points of interest
Pull_ListSpecProp_RS/Property/Distances/Distance C, O Details of distance
Pull_ListSpecProp_RS/Property/Distances/DestinationID Integer M See ListDestinations
Pull_ListSpecProp_RS/Property/Distances/DistanceUnitID Integer M See ListDistanceUnits
Pull_ListSpecProp_RS/Property/Distances/DistanceValue Decimal(5,2) M Value of distance in distance unit
Pull_ListSpecProp_RS/Property/CompositionRooms C, O A collection of rooms
Pull_ListSpecProp_RS/Property/CompositionRooms/CompositionRoomID Integer M See ListCompositionRooms
Pull_ListSpecProp_RS/Property/CompositionRoomID@Count Integer M The amount of each room type in the property
Pull_ListSpecProp_RS/Property/CompositionRoomsAmenities C, O A collection of rooms with amenities, this element contains information about the amenities available in a given room type, some general amenities (e.g. parking or wireless internet connection) will be defined in the Pull_ListSpecProp_RS/Property/Amenities element
Pull_ListSpecProp_RS/Property/CompositionRoomsAmenities/CompositionRoomAmenities C, M A single room
Pull_ListSpecProp_RS/Property/CompositionRoomsAmenities/CompositionRoomAmenities@CompositionRoomID Integer M See ListCompositionRooms
Pull_ListSpecProp_RS/Property/CompositionRoomsAmenities/CompositionRoomAmenities/Amenities C, O A collection of amenities available in a given room type
Pull_ListSpecProp_RS/Property/CompositionRoomsAmenities/CompositionRoomAmenities/Amenity Integer M See ListAmenitiesAvailableForRooms
Pull_ListSpecProp_RS/Property/CompositionRoomsAmenities/CompositionRoomAmenities/Amenity@Count Integer M The amount of each amenity
Pull_ListSpecProp_RS/Property/Amenities C, O A collection of apartment amenities
Pull_ListSpecProp_RS/Property/Amenities/AmenityID Integer M See ListAmenities
Pull_ListSpecProp_RS/Property/Amenities/AmenityID@Count Integer M The amount of each amenity
Pull_ListSpecProp_RS/Property/Images C, O A collection of property images
Pull_ListSpecProp_RS/Property/Images/Image String(300) M Image url
Pull_ListSpecProp_RS/Property/Images/Image@ImageTypeID Integer M Image type. See ListImageTypes
Pull_ListSpecProp_RS/Property/Images/Image@ImageReferenceID String O ID to reference Captions to Image
Pull_ListSpecProp_RS/Property/ImageCaptions O A collection of image captions
Pull_ListSpecProp_RS/Property/ImageCaptions/ImageCaption String(255) M Image caption description
Pull_ListSpecProp_RS/Property/ImageCaptions/ImageCaption@LanguageID Integer M Language of the description see ListLanguages
Pull_ListSpecProp_RS/Property/ImageCaptions/ImageCaption@ImageReferenceID String M ID referencing property image to which assign caption
Pull_ListSpecProp_RS/Property/ArrivalInstructions C, O Property arrival instructions
Pull_ListSpecProp_RS/Property/ArrivalInstructions/Landlord String(20) M Name of the person which Guests will contact before arrival
Pull_ListSpecProp_RS/Property/ArrivalInstructions/Email String(30) M Contact email address
Pull_ListSpecProp_RS/Property/ArrivalInstructions/Phone String(20) M Contact prhone number (with the country code)
Pull_ListSpecProp_RS/Property/ArrivalInstructions/DaysBeforeArrival Integer M The amount of days before arriving in which the guest should contact the landlord
Pull_ListSpecProp_RS/Property/ArrivalInstructions/HowToArrive C, M Instructions of how to arrive
Pull_ListSpecProp_RS/Property/ArrivalInstructions/HowToArrive/Text String O Text that describes how to arrive to the property. Value returned as CDATA
Pull_ListSpecProp_RS/Property/ArrivalInstructions/HowToArrive/Text@LanguageID Integer M Language ID, See Pull_ListLanguages_RQ
Pull_ListSpecProp_RS/Property/ArrivalInstructions/PickupService C, M Pickup service information
Pull_ListSpecProp_RS/Property/ArrivalInstructions/PickupService/Text String O Text that describes the pickup service. Value returned as CDATA
Pull_ListSpecProp_RS/Property/ArrivalInstructions/PickupService/Text@LanguageID Integer M Language ID, See Pull_ListLanguages_RQ
Pull_ListSpecProp_RS/Property/CheckInOut C, M Check in, check out details
Pull_ListSpecProp_RS/Property/CheckInOut/CheckInFrom String(5) M Accepted check in time – from (HH:MM format, 24h format)
Pull_ListSpecProp_RS/Property/CheckInOut/CheckInTo String(5) M Accepted check in time – to (HH:MM format, 24h format)
Pull_ListSpecProp_RS/Property/CheckInOut/CheckOutUntil String(5) M The latest check out time. (HH:MM format, 24h format)
Pull_ListSpecProp_RS/Property/CheckInOut/Place String(30) M The location where the check in takes place
Pull_ListSpecProp_RS/Property/CheckInOut/LateArrivalFees C, O A collection of fees for late arrivals by arrival time (separable ranges)
Pull_ListSpecProp_RS/Property/CheckInOut/LateArrivalFees/LateArrivalFee Decimal(19,2) M Fee for a late arrival
Pull_ListSpecProp_RS/Property/CheckInOut/LateArrivalFees/LateArrivalFee@From String(5) M Start hour of the late arrival range (HH:MM format, 24h format)
Pull_ListSpecProp_RS/Property/CheckInOut/LateArrivalFees/LateArrivalFee@To String(5) M End hour of the late arrival range (HH:MM format, 24h format)
Pull_ListSpecProp_RS/Property/CheckInOut/EarlyDepartureFees C, O A collection of fees for early departures by arrival times (separable ranges)
Pull_ListSpecProp_RS/Property/CheckInOut/EarlyDepartureFees/EarlyDepartureFee Decimal(19,2) M Fee for an early departure
Pull_ListSpecProp_RS/Property/CheckInOut/EarlyDepartureFees/EarlyDepartureFee@From String(5) M Start hour of an early departure range (HH:MM format, 24h format)
Pull_ListSpecProp_RS/Property/CheckInOut/EarlyDepartureFees/EarlyDepartureFee@To String(5) M End hour of an early departure range (HH:MM format, 24h format)
Pull_ListSpecProp_RS/Property/PaymentMethods C, M A collection of acceptable payment methods
Pull_ListSpecProp_RS/Property/PaymentMethods/PaymentMethod String(500) M Payment method details, i.e. Bank account. Value returned as CDATA
Pull_ListSpecProp_RS/Property/PaymentMethods/PaymentMethod@PaymentMethodID Integer M Payment method. See ListPaymentMethods
Pull_ListSpecProp_RS/Property/Deposit Decimal(19,2) M Deposit amount depending on deposit type
Pull_ListSpecProp_RS/Property/Deposit@DepositTypeID Integer M Deposit type ID. See ListDepositTypes
Pull_ListSpecProp_RS/Property/CancellationPolicies C, M A collection of cancellation policies
Pull_ListSpecProp_RS/Property/CancellationPolicies/CancellationPolicy Decimal(19,2) M Percentage of total price, attributes ValidFrom, ValidTo represent the number of days to arrival between which the policy is valid
Pull_ListSpecProp_RS/Property/CancellationPolicies/CancellationPolicy@ValidFrom Integer M Start of the range when the cancellation policy is valid
Pull_ListSpecProp_RS/Property/CancellationPolicies/CancellationPolicy@ValidTo Integer M End of the range when the cancellation policy is valid
Pull_ListSpecProp_RS/Property/CancellationPoliciesText C, O A collection of cancellation policies as text
Pull_ListSpecProp_RS/Property/CancellationPoliciesText/CancellationPolicyText C, M A cancellation policy
Pull_ListSpecProp_RS/Property/CancellationPoliciesText/CancellationPolicyText@LanguageID Integer M Language ID, See Pull_ListLanguages_RQ
Pull_ListSpecProp_RS/Property/CancellationPoliciesText/CancellationPolicyText/Text String(300) M A cancellation policy description
Pull_ListSpecProp_RS/Property/Descriptions C, M A collection of descriptions
Pull_ListSpecProp_RS/Property/Descriptions/Description C, M Property description
Pull_ListSpecProp_RS/Property/Descriptions/Description@LanguageID Integer M Language ID, See ListLanguages
Pull_ListSpecProp_RS/Property/Descriptions/Description/Text String(3000) M Description in the selected language. Value returned in CDATA
Pull_ListSpecProp_RS/Property/Descriptions/Description/Image String(300) M The url of the image that contains the property description ("description as an image")
Pull_ListSpecProp_RS/Property/SecurityDeposit Decimal(8,2) M Refundable security deposit amount depending on deposit type
Pull_ListSpecProp_RS/Property/SecurityDeposit@DepositTypeID Integer M Deposit type ID. See ListDepositTypes
Pull_ListSpecProp_RS/Property/AdditionalFees C, O A collection of additional fees. See VR price calculation logic
Pull_ListSpecProp_RS/Property/AdditionalFees/AdditionalFee/Value Decimal(10,4) M The value of the additional fee.
Pull_ListSpecProp_RS/Property/AdditionalFees/AdditionalFee@KindID Integer M Additional fee kind. See ListAdditionalFeeKinds. DEPRECATED and left only for backwards compatibility
Pull_ListSpecProp_RS/Property/AdditionalFees/AdditionalFee@FeeTaxType Integer M Type of the tax/fee. See ListAdditionalFeeTypes
Pull_ListSpecProp_RS/Property/AdditionalFees/AdditionalFee@DiscriminatorID Integer M How the fee should be calculated (e.g. per night, per person, etc.) See ListAdditionalFeeDiscriminators
Pull_ListSpecProp_RS/Property/AdditionalFees/AdditionalFee@CollectTime Integer O When the fee should be collected (1 - upon booking, 2 - upon arrival). If not specified, default value is set to: 1- upon booking.
Pull_ListSpecProp_RS/Property/AdditionalFees/AdditionalFee@Optional Boolean M Is the fee obligatory or optional.
Pull_ListSpecProp_RS/Property/AdditionalFees/AdditionalFee@Name String(100) O Additional note for presentation purpose only
Pull_ListSpecProp_RS/Property/AdditionalFees/AdditionalFee@Order Integer M Additional fee order. The order is important in case when the fees/taxes are cumulative.
Pull_ListSpecProp_RS/Property/DateCreated String(10) M Property create date (YYYY-MM-DD format)
Pull_ListSpecProp_RS/Property/LicenseNumber String(50) O Property’s license number. OBSOLETE, please use Pull_ListSpecProp_RS/Property/LicenceInfo/LicenceNumber
Pull_ListSpecProp_RS/Property/LicenceInfo O Information about various legislation issues, registration and tourist licence; might be required for some sales channels
Pull_ListSpecProp_RS/Property/LicenceInfo/LicenceNumber String(50) O Licence number issued by appropriate local authorities
Pull_ListSpecProp_RS/Property/LicenceInfo/IssueDate Date O Date the licence was issued
Pull_ListSpecProp_RS/Property/LicenceInfo/ExpirationDate Date O Date the licence is valid to
Pull_ListSpecProp_RS/Property/LicenceInfo/IsExempt Boolean O Date the licence is valid to
Pull_ListSpecProp_RS/Property/LicenceInfo/IsVATRegistered Boolean O Is the property not obliged to have any licence under the local law. Pass “true” to let us know you did not skip LicenceNumber field, but you really don’t have it.
Pull_ListSpecProp_RS/Property/LicenceInfo/ExemptionReason String O Reason the property does not need the license. Use if it’s any of the reasons below: AustraliaTasmaniaHomeSharing, AustraliaTasmaniaLandUse, AustraliaTasmaniaTraditionalHospitality, CanadaVancouverLicensedHotelOrBb, CanadaVancouverEventSpace, CanadaVancouverLocationExempt, JapanHotelsAndInnsAct, JapanEconomicZoningAct, JapanEventMinpakuStay, PortugalListingIsNotAFullBuilding, PortugalListingHasARegisteredUrbanLeaseContract, SpainAndalusiaListingTypeNotIncluded, SpainAndalusiaNotATouristAccomodation, SpainCataloniaListingNotFullBuilding, SpainCataloniaListingIsSharedRoom, SpainCataloniaOtherExemptionReason, USABostonHotelMotel, USABostonBedBreakfastLodging, USABostonInstitutionalBusiness, USABostonHospitals, USASantaMonicaLicensedHotelOrBb
Pull_ListSpecProp_RS/Property/LicenceInfo/IsManagedByOwner Boolean O Is the rental managed by its owner – information required e.g. by Catalonian and Portuguese law.
Pull_ListSpecProp_RS/Property/LicenceInfo/IsManagedByPrivatePerson Boolean O Is the rental managed by a private person or a company.
Pull_ListSpecProp_RS/Property/LicenceInfo/BrazilianLicenceInfo C, O The registration information required by Brazilian authorities
Pull_ListSpecProp_RS/Property/LicenceInfo/BrazilianLicenceInfo/CityHallInfoId String O The 8-digit ID for the city hall which issued the CNPJ or CPF number.
Pull_ListSpecProp_RS/Property/LicenceInfo/JapaneseLicenceInfo C, O Licencing data required by Japanese law. Please contact us for details
Pull_ListSpecProp_RS/Property/LicenceInfo/FrenchLicenceInfo O Data required because of the new law in France effective from January 2019. Skip it for properties located outside France. Please check validity of the provided data in UI.
Pull_ListSpecProp_RS/Property/LicenceInfo/FrenchLicenceInfo/IsRegisteredAtTradeCommercialRegister Boolean M Is registered as a professional at the trade commercial register (Registre du Commerce et des Sociétés)
Pull_ListSpecProp_RS/Property/LicenceInfo/FrenchLicenceInfo/PropertyTypeForTaxPurposes String O Type of property in terms of French law to determine proper City Tax Category. Needed in some regions of France. Possible values: FurnishedTourism, TouristHotel, OutdoorAccommodations, HolidayVillage, TouristResidence, Bnb, CarsiteParkingLot, Marinas, Palaces
Pull_ListSpecProp_RS/Property/LicenceInfo/FrenchLicenceInfo/DeclaresRevenuesAsProfessionalForDirectTaxPurposes Boolean M Does the owner declare revenues as professional for direct tax purposes (see article 155 IV du CGI)
Pull_ListSpecProp_RS/Property/LicenceInfo/FrenchLicenceInfo/TypeOfResidence Integer M Type of residence according to the French law. Possible values: 1-3, 1 – Primary, 2 – Secondary, 3 - Other
Pull_ListSpecProp_RS/Property/LicenceInfo/FrenchLicenceInfo/CityTaxCategory Integer M You only need to specify it if all three out of DeclaresRevenuesAsProfessionalForDirectTaxPurposes, IsRegisteredAtTradeCommercialRegister and IsVATRegistered are "false". Possible values: 11-19; 11 - palaces; 12 - 5 star tourist hotels, 5 star tourist residences, 5 star furnished tourism; 13 - 4 star tourist hotels, 4 star tourist residences, 4 star furnished tourist accommodation; 14 - 3 star tourist hotels, 3 star tourist residences, 3 star furnished tourist accommodation; 15 - 2-star tourist hotels, 2-star tourist residences, 2-star furnished holiday homes, 4 and 5-star holiday villages; 16 - 1-star tourist hotels, 1-star tourist residences, 1-star furnished holiday homes, 1,2 and 3-star holiday villages, bed and breakfasts, RV parks and tourist parking lots for each 24 hours; 17 - Campgrounds and caravan parks classified in 3,4 and 5 stars; 18 - Campsites and caravan parks classified in 1 and 2 stars, marinas; 19 - Accommodations awaiting classification or without classification
Pull_ListSpecProp_RS/Property/LicenceInfo/TasmanianLicenceInfo O Data required because of the law in Tasmania. Skip it for properties located outside Tasmania.
Pull_ListSpecProp_RS/Property/LicenceInfo/TasmanianLicenceInfo/TasmanianLicenceInfoTypeOfResidence String(50) O "Primary" or "NonPrimary"
Pull_ListSpecProp_RS/Property/PreparationTimeBeforeArrival Integer O Number of nights blocked for preparation time before arrival
Pull_ListSpecProp_RS/Property/NumberOfStars Integer O Star rating of the property (1-5)

List buildings

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Building;

Pull_ListBuildings_RQ request = new Pull_ListBuildings_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListBuildings_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListBuildings_RS response = XmlTools.DeserializeObject<Pull_ListBuildings_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of buildings with properties assigned.

Request

XML Request

<Pull_ListBuildings_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListBuildings_RQ>
XML Path Data Type Type Description
Pull_ListBuildings_RQ C Root element
Pull_ListBuildings_RQ/Authentication C, M Authentication details
Pull_ListBuildings_RQ/Authentication/UserName String(50) M Username
Pull_ListBuildings_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListBuildings_RS>
    <Status ID="0">Success</Status>
    <ResponseID>1da026c48d3b4f1295b1d51d32bfe424</ResponseID>
    <Buildings>
        <Building BuildingID="11231" BuildingName="Palamowa 15F">
            <PropertyID>2544642</PropertyID>
        </Building>
    </Buildings>
</Pull_ListBuildings_RS>
XML Path Data Type Type Description
Pull_ListBuildings_RS C Root element
Pull_ListBuildings_RS/Status String(100) M See ListStatuses
Pull_ListBuildings_RS/Status@ID Integer M See ListStatuses
Pull_ListBuildings_RS/ResponseID String(32) M Unique response ID
Pull_ListBuildings_RS/Buildings C A collection of buildings
Pull_ListBuildings_RS/Buildings/Building O A single building
Pull_ListBuildings_RS/Buildings/Building@BuildingID Integer M Unique building ID
Pull_ListBuildings_RS/Buildings/Building@BuildingName String(50) M Building name
Pull_ListBuildings_RS/Buildings/Building/Properties/PropertyID Integer O A collection of property IDs assigned located in the building

List all owners

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Owner;

Pull_ListAllOwners_RQ request = new Pull_ListAllOwners_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListAllOwners_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListAllOwners_RS response = XmlTools.DeserializeObject<Pull_ListAllOwners_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of property owners available on your account. Owner represents contact information for a property.

Request

XML Request

<Pull_ListAllOwners_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_ListAllOwners_RQ>
XML Path Data Type Type Description
Pull_ListAllOwners_RQ C Root element
Pull_ListAllOwners_RQ/Authentication C, M Authentication details
Pull_ListAllOwners_RQ/Authentication/UserName String(50) M Username
Pull_ListAllOwners_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_ListAllOwners_RS>
    <Status ID="0">Success</Status>
    <ResponseID>b8057c27e2a84447b6d94fa60a2a533f</ResponseID>
    <Owners>
        <Owner OwnerID="553968">
            <FirstName>John</FirstName>
            <SurName>Smith</SurName>
            <Email>john.smith@domain.com</Email>
            <Phone>+48 22 000 00 00</Phone>
              <User>
                <UserName>john.smith@domain.com</UserName>
              </User>
            <UserAccountId>2012</UserAccountId>
        </Owner>
    </Owners>
</Pull_ListAllOwners_RS>
XML Path Data Type Type Description
Pull_ListAllOwners_RS C Root element
Pull_ListAllOwners_RS/Status String(100) M See ListStatuses
Pull_ListAllOwners_RS/Status@ID Integer M See ListStatuses
Pull_ListAllOwners_RS/ResponseID String(32) M Unique response ID
Pull_ListAllOwners_RS/Owners C, O A collection of owners
Pull_ListAllOwners_RS/Owners/Owner C, O Single owner
Pull_ListAllOwners_RS/Owners/Owner@OwnerID Integer M Unique owner ID
Pull_ListAllOwners_RS/Owners/Owner/FirstName String(20) M Owner's first name
Pull_ListAllOwners_RS/Owners/Owner/SurName String(30) M Owner's surname
Pull_ListAllOwners_RS/Owners/Owner/Email String(100) M Owner's email address
Pull_ListAllOwners_RS/Owners/Owner/Phone String (20) M Owner's phone number (with the country code)
Pull_ListAllOwners_RS/Owners/Owner/User C, O User details
Pull_ListAllOwners_RS/Owners/Owner/User/UserName String(100) M Owner's Rentals United username

Get owner details

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Owner;

Pull_GetOwnerDetails_RQ request = new Pull_GetOwnerDetails_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    OwnerID = 1
};

string xmlBody = XmlTools.SerializeObject<Pull_GetOwnerDetails_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_GetOwnerDetails_RS response = XmlTools.DeserializeObject<Pull_GetOwnerDetails_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns detailed contact information of a specific property owner.

Request

XML Request

<Pull_GetOwnerDetails_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
 <OwnerID>553968</OwnerID>
</Pull_GetOwnerDetails_RQ>
XML Path Data Type Type Description
Pull_GetOwnerDetails_RQ C Root element
Pull_GetOwnerDetails_RQ/Authentication C, M Authentication details
Pull_GetOwnerDetails_RQ/Authentication/UserName String(50) M Username
Pull_GetOwnerDetails_RQ/Authentication/Password String(50) M Password
Pull_GetOwnerDetails_RQ/OwnerID Integer M Unique owner ID

Response

XML Response

<Pull_GetOwnerDetails_RS>
    <Status ID="0">Success</Status>
    <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
    <Owner OwnerID="553968">
        <FirstName>John</FirstName>
        <SurName>Smith</SurName>
        <ScreenName>John S.</ScreenName>
        <Email>john.smith@domain.com</Email>
        <Phone>+48 22 000 00 00</Phone>
        <User>
          <UserName>john.smith@domain.com</UserName>
        </User>
        <UserAccountId>2012</UserAccountId>
    </Owner>
</Pull_GetOwnerDetails_RS>
XML Path Data Type Type Description
Pull_GetOwnerDetails_RS C Root element
Pull_GetOwnerDetails_RS/Status String(100) M See ListStatuses
Pull_GetOwnerDetails_RS/Status@ID Integer M See ListStatuses
Pull_GetOwnerDetails_RS/ResponseID String(32) M Unique response ID
Pull_GetOwnerDetails_RS/Owner C, O The details of the owner
Pull_GetOwnerDetails_RS/Owner@OwnerID Integer M Unique owner ID
Pull_GetOwnerDetails_RS/Owner/FirstName String(20) M Owner's first name
Pull_GetOwnerDetails_RS/Owner/SurName String(30) M Owner's surname
Pull_GetOwnerDetails_RS/Owner/CompanyName String (100) M Owner's company name.
Pull_GetOwnerDetails_RS/Owner/ScreenName String (100) O Owner's screen name
Pull_GetOwnerDetails_RS/Owner/Email String(100) M Owner's email address
Pull_GetOwnerDetails_RS/Owner/Phone String (20) M Owner's phone number (with the country code)
Pull_GetOwnerDetails_RS/Owner/User C, O User details
Pull_GetOwnerDetails_RS/Owner/UserName String(100) M Owner's Rentals United username
Pull_GetOwnerDetails_RS/Owner/UserAccountID ?? ?? ??

List owner agents

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Owner;

Pull_GetAgents_RQ request = new Pull_GetAgents_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_GetAgents_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_GetAgents_RS response = XmlTools.DeserializeObject<Pull_GetAgents_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of all available Sales Channels.

If you are a PMS, use this method to identify a reservation creator within reservations/leads retrieval API methods.

Request

XML Request

<Pull_GetAgents_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
</Pull_GetAgents_RQ>
XML Path Data Type Type Description
Pull_GetAgents_RQ C Root element
Pull_GetAgents_RQ/Authentication C, M Authentication details
Pull_GetAgents_RQ/Authentication/UserName String(50) M Username
Pull_GetAgents_RQ/Authentication/Password String(50) M Password

Response

XML Response

<Pull_GetAgents_RS>
    <Status ID="0">Success</Status>
    <ResponseID>5304842c268f4f318528c9f97bc2c264</ResponseID>
    <Owner OwnerID="553968">
          <FirstName>John</FirstName>
          <SurName>Smith</SurName>
          <Email> john.smith@domain.com </Email>
          <Phone>+48 22 000 00 00</Phone>
            <User>
              <UserName>john.smith@domain.com</UserName>
            </User>
        <UserAccountId>2012</UserAccountId>
    </Owner>
    <Agents>
        <Agent>
            <AgentID>420853</AgentID>
            <UserName>ha@ha.ha</UserName>
            <CompanyName>HomeAway</CompanyName>
            <FirstName>HomeAway</FirstName>
            <SurName>HomeAway</SurName>
            <Emial>ha@ha.ha</Emial>
            <Email>ha@ha.ha</Email>
            <Telephone>+</Telephone>
        </Agent>
        <Agent>
            <AgentID>421327</AgentID>
            <UserName>bookingcom@rentalsunited.com</UserName>
            <CompanyName>Booking.com</CompanyName>
            <FirstName>Booking.com</FirstName>
            <SurName />
            <Emial>customer.service@booking.com</Emial>
            <Email>customer.service@booking.com</Email>
            <Telephone />
        </Agent>
        <Agent>
            <AgentID>421402</AgentID>
            <UserName>expedia@rentalsunited.com</UserName>
            <CompanyName>Expedia, Inc. </CompanyName>
            <FirstName>Expedia</FirstName>
            <SurName />
            <Emial />
            <Email />
            <Telephone />
        </Agent>
        <Agent>
            <AgentID>421423</AgentID>
            <UserName>agoda@rentalsunited.com</UserName>
            <CompanyName>Agoda Company Pte. Ltd</CompanyName>
            <FirstName>Agoda</FirstName>
            <SurName />
            <Emial />
            <Email />
            <Telephone />
        </Agent>
        <Agent>
            <AgentID>423608</AgentID>
            <UserName>jason@travelstaytion.com</UserName>
            <CompanyName>Staytion LTD</CompanyName>
            <FirstName>TravelStaytion</FirstName>
            <SurName>.com</SurName>
            <Emial>partners@travelstaytion.com</Emial>
            <Email>partners@travelstaytion.com</Email>
            <Telephone>+</Telephone>
        </Agent>
        <Agent>
            <AgentID>423784</AgentID>
            <UserName>hello@misterbnb.com</UserName>
            <CompanyName>misterb&amp;b</CompanyName>
            <FirstName>mister</FirstName>
            <SurName>b&amp;b</SurName>
            <Emial>rentalsunited@misterbandb.com</Emial>
            <Email>rentalsunited@misterbandb.com</Email>
            <Telephone>+33 6 20 91 41 47</Telephone>
        </Agent>
        <Agent>
            <AgentID>424037</AgentID>
            <UserName>rentalsunited@tripvillas.com</UserName>
            <CompanyName>Tripvillas India Pvt. Ltd.</CompanyName>
            <FirstName>Tripvillas</FirstName>
            <SurName>unknown</SurName>
            <Emial>rentalsunited@tripvillas.com</Emial>
            <Email>rentalsunited@tripvillas.com</Email>
            <Telephone />
        </Agent>
        <Agent>
            <AgentID>425566</AgentID>
            <UserName>taraneh.najafi@holidu.com</UserName>
            <CompanyName />
            <FirstName>Taraneh</FirstName>
            <SurName>Najafi</SurName>
            <Emial>taraneh.najafi@holidu.com</Emial>
            <Email>taraneh.najafi@holidu.com</Email>
            <Telephone />
        </Agent>
        <Agent>
            <AgentID>426592</AgentID>
            <UserName>airbnb@rentalsunited.com</UserName>
            <CompanyName>Airbnb</CompanyName>
            <FirstName>Air</FirstName>
            <SurName>Bnb</SurName>
            <Emial>log@rentalsunited.com</Emial>
            <Email>log@rentalsunited.com</Email>
            <Telephone>+1</Telephone>
        </Agent>
        <Agent>
            <AgentID>426699</AgentID>
            <UserName>ctrip@rentalsunited.com</UserName>
            <CompanyName>Ctrip</CompanyName>
            <FirstName>Ctrip</FirstName>
            <SurName>Ctrip</SurName>
            <Emial>ctrip@rentalsunited.com</Emial>
            <Email>ctrip@rentalsunited.com</Email>
            <Telephone>+</Telephone>
        </Agent>
        <Agent>
            <AgentID>556556</AgentID>
            <UserName>info@altovita.com</UserName>
            <CompanyName>Altovita</CompanyName>
            <FirstName>Karolina</FirstName>
            <SurName>Saviova</SurName>
            <Emial>info@altovita.com</Emial>
            <Email>info@altovita.com</Email>
            <Telephone>+420 727 876 152</Telephone>
        </Agent>
        ...
    </Agents>
</Pull_GetAgents_RS>

XML Path Data Type Type Description
Pull_GetAgents_RS C Root element
Pull_GetAgents_RS/Status String(100) M See ListStatuses
Pull_GetAgents_RS/Status@ID Integer M See ListStatuses
Pull_GetAgents_RS/ResponseID String(32) M Unique response ID
Pull_GetAgents_RS/Owner C, O The details of the owner
Pull_GetAgents_RS/Owner@OwnerID Integer M Unique owner ID
Pull_GetAgents_RS/Owner/FirstName String(20) M Owner's first name
Pull_GetAgents_RS/Owner/SurName String(30) M Owner's surname
Pull_GetAgents_RS/Owner/CompanyName String (100) M Owner's company name.
Pull_GetAgents_RS/Owner/ScreenName String (100) O Owner's screen name
Pull_GetAgents_RS/Owner/Email String(100) M Owner's email address
Pull_GetAgents_RS/Owner/Phone String (20) M Owner's phone number (with the country code)
Pull_GetAgents_RS/Owner/User C, O User details
Pull_GetAgents_RS/Owner/UserName String(100) M Owner's Rentals United username
Pull_GetAgents_RS/Owner/UserAccountID ?? ?? ??
Pull_GetAgents_RS/Agents C, O Collection of agents
Pull_GetAgents_RS/Agents/Agent/AgentID Integer M Agent's unique ID
Pull_GetAgents_RS/Agents/Agent/UserName String(50) M The agent's Rentals United username
Pull_GetAgents_RS/Agents/Agent/CompanyName String(100) M Name of the agent's company.
Pull_GetAgents_RS/Agents/Agent/FirstName String(20) M The agent's contnact person name.
Pull_GetAgents_RS/Agents/Agent/SurName String(30) M The agent's contact person surname.
Pull_GetAgents_RS/Agents/Agent/Email String(100) M The agent's email address
Pull_GetAgents_RS/Agents/Agent/Telephone String(20) M The agent's phone number

List property external listing

using System.Collections.Generic;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyExternalListing;

Pull_GetPropertyExternalListing_RQ request = new Pull_GetPropertyExternalListing_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    Properties = new List<int>() {
        0,
        1
    }
};

string xmlBody = XmlTools.SerializeObject<Pull_GetPropertyExternalListing_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_GetPropertyExternalListing_RS response = XmlTools.DeserializeObject<Pull_GetPropertyExternalListing_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a list of properties and their status on the connected Sales Channels.

Request

XML Request

<Pull_GetPropertyExternalListing_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
 <Properties>
   <PropertyID>0</PropertyID>
   <PropertyID>1</PropertyID>
 </Properties>
</Pull_GetPropertyExternalListing_RQ>
XML Path Data Type Type Description
Pull_GetPropertyExternalListing_RQ C Root element
Pull_GetPropertyExternalListing_RQ/Authentication C, M Authentication details
Pull_GetPropertyExternalListing_RQ/Authentication/UserName String(50) M Username
Pull_GetPropertyExternalListing_RQ/Authentication/Password String(50) M Password
Pull_GetPropertyExternalListing_RQ/Properties C A collection of properties
Pull_GetPropertyExternalListing_RQ/Properties/PropertyID Integer M Unique property ID

Response

XML Response

<Pull_GetPropertyExternalListing_RS>
 <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
 <Properties>
   <Property ID="0">
     <ExternalListing>
       <Url>http://someAgency.com/apartment0</Url>
       <Status>2</Status>
       <Description>Property cannot be listed, living space is missing</Description>
     </ExternalListing>
     <ExternalListing>
       <Url>http://someAgency.com/apartment1</Url>
       <Status>1</Status>
       <Description>We need more photos</Description>
     </ExternalListing>
   </Property>
   <Property ID="1">
     <ExternalListing>
       <Url>http://someAgency.com/apartment2</Url>
       <Status>1</Status>
       <Description>Some description</Description>
     </ExternalListing>
   </Property>
 </Properties>
 <Notifs />
</Pull_GetPropertyExternalListing_RS>
XML Path Data Type Type Description
Pull_GetPropertyExternalListing_RS C Root element
Pull_GetPropertyExternalListing_RS/Status String(100) M See ListStatuses
Pull_GetPropertyExternalListing_RS/Status@ID Integer M See ListStatuses
Pull_GetLocationDetails_RS/ResponseID String(32) M Unique response ID
Pull_GetLocationDetails_RS/Properties C A collection of properties
Pull_GetPropertyExternalListing_RS/Properties/Property O A single property
Pull_GetPropertyExternalListing_RS/Properties/Property@ID Integer M Unique property ID
Pull_GetPropertyExternalListing_RS/Properties/Property/ExternalListing C A collection of property listings
Pull_GetPropertyExternalListing_RS/Properties/Property/ExternalListing/Url String(300) M Url to an external service
Pull_GetPropertyExternalListing_RS/Properties/Property/ExternalListing/Status Integer M External listing status, See ListPropertyExternalStatuses
Pull_GetPropertyExternalListing_RS/Properties/Property/ExternalListing/Description String(500) M Additional information from the Sales Channel/Agent
Pull_GetPropertyExternalListing_RS/Notifs C, O A collection of notifications
Pull_GetPropertyExternalListing_RS/Notif String(100) M A detailed information about the problem

Pull methods - Availability and prices

This section describes API methods that allow you to pull dynamic property data like availability calendar, minimum stays, rates, discounts

List properties blocks

using System;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyBlock;

Pull_ListPropertiesBlocks_RQ request = new Pull_ListPropertiesBlocks_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    LocationID = 500,
    DateFrom = new DateTime(2014, 1, 4),
    DateTo = new DateTime(2014, 1, 9),
    IncludeNLA = false
};

string xmlBody = XmlTools.SerializeObject<Pull_ListPropertiesBlocks_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListPropertiesBlocks_RS response = XmlTools.DeserializeObject<Pull_ListPropertiesBlocks_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns blocked (unavailable) periods in properties' availability calendars. For multiunit type properties, availability is blocked when 0 units are available.

Request

<Pull_ListPropertiesBlocks_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
  <LocationID>500</LocationID>
  <DateFrom>2014-01-04</DateFrom>
  <DateTo>2014-01-09</DateTo>
  <IncludeNLA>false</IncludeNLA>
</Pull_ListPropertiesBlocks_RQ>
XML Path Data Type Type Description
Pull_ListPropertiesBlocks_RQ C Root element
Pull_ListPropertiesBlocks_RQ/Authentication C, M Authentication details
Pull_ListPropertiesBlocks_RQ/Authentication/UserName String(50) M Username
Pull_ListPropertiesBlocks_RQ/Authentication/Password String(50) M Password
Pull_ListPropertiesBlocks_RQ/LocationID Integer M Location ID of LocationTypeID="4". See ListLocations
Pull_ListPropertiesBlocks_RQ/DateFrom String(10) M Start of the range(YYYY-MM-DD format)
Pull_ListPropertiesBlocks_RQ/DateTo String(10) M End of the range (blocks starting on this date will not be returned)(YYYY-MM-DD format)
Pull_ListPropertiesBlocks_RQ/IncludeNLA Boolean O False/0 will filter out no longer available properties from the XML Response. Default is True/1.

Response

<Pull_ListPropertiesBlocks_RS>
  <Status ID="0">Success</Status>
  <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
  <Properties>
      <PropertyBlock PropertyID="1">
          <Block>
              <DateFrom>2012-03-02</DateFrom>
              <DateTo>2012-03-09</DateTo>
          </Block>
          <Block>
              <DateFrom>2012-03-20</DateFrom>
              <DateTo>2012-03-30</DateTo>
          </Block>
      </PropertyBlock>
      <PropertyBlock PropertyID="2">
          <Block>
              <DateFrom>2012-03-05</DateFrom>
              <DateTo>2012-03-08</DateTo>
          </Block>
          <Block>
              <DateFrom>2012-03-12</DateFrom>
              <DateTo>2012-03-18</DateTo>
          </Block>
      </PropertyBlock>
  </Properties>
</Pull_ListPropertiesBlocks_RS>
XML Path Data Type Type Description
Pull_ListPropertiesBlocks_RS C Root element
Pull_ListPropertiesBlocks_RS/Status String(100) M See ListStatuses
Pull_ListPropertiesBlocks_RS/Status@ID Integer M See ListStatuses
Pull_ListPropertiesBlocks_RS/ResponseID String(32) M Unique response ID
Pull_ListPropertiesBlocks_RS/Properties C A collection of properties
Pull_ListPropertiesBlocks_RS/Properties/PropertyBlock C, O Single property
Pull_ListPropertiesBlocks_RS/Properties/PropertyBlock@PropertyID Integer M Unique property ID
Pull_ListPropertiesBlocks_RS/Properties/PropertyBlock/Block C, M Single block
Pull_ListPropertiesBlocks_RS/Properties/PropertyBlock/Block/DateFrom String(10) M Start of the block(YYYY-MM-DD format)
Pull_ListPropertiesBlocks_RS/Properties/PropertyBlock/Block/DateTo String(10) M End of the block(YYYY-MM-DD format)

List property availability calendar

using System;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyAvailabilityCalendar;

Pull_ListPropertyAvailabilityCalendar_RQ request = new Pull_ListPropertyAvailabilityCalendar_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    PropertyID = 1,
    DateFrom = new DateTime(2014, 1, 4),
    DateTo = new DateTime(2014, 1, 9)
};

string xmlBody = XmlTools.SerializeObject<Pull_ListPropertyAvailabilityCalendar_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListPropertyAvailabilityCalendar_RS response = XmlTools.DeserializeObject<Pull_ListPropertyAvailabilityCalendar_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns night-by-night calendar including number of available units, minimum stay and changeover day settings.

Request

<Pull_ListPropertyAvailabilityCalendar_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
  <PropertyID>1</PropertyID>
  <DateFrom>2014-01-04</DateFrom>
  <DateTo>2014-01-09</DateTo>
</Pull_ListPropertyAvailabilityCalendar_RQ>
XML Path Data Type Type Description
Pull_ListPropertyAvailabilityCalendar_RQ C Root element
Pull_ListPropertyAvailabilityCalendar_RQ/Authentication C, M Authentication details
Pull_ListPropertyAvailabilityCalendar_RQ/Authentication/UserName String(50) M Username
Pull_ListPropertyAvailabilityCalendar_RQ/Authentication/Password String(50) M Password
Pull_ListPropertyAvailabilityCalendar_RQ/PropertyID Integer M Unique property ID
Pull_ListPropertyAvailabilityCalendar_RQ/DateFrom String(10) M Start of the range(YYYY-MM-DD format)
Pull_ListPropertyAvailabilityCalendar_RQ/DateTo String(10) M End of the range (the last date to be included in the response)(YYYY-MM-DD format)

Response

<Pull_ListPropertyAvailabilityCalendar_RS>
    <Status ID="0">Success</Status>
    <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
    <PropertyCalendar PropertyID="1">
        <CalDay Date="2012-03-01">
            <IsBlocked>true</IsBlocked>
            <MinStay>2</MinStay>
            <Changeover>1</Changeover>
        </CalDay>
        <CalDay Date="2012-03-02">
            <IsBlocked>false</IsBlocked>
            <MinStay>3</MinStay>
            <Changeover>1</Changeover>
        </CalDay>
        <CalDay Date="2012-03-04">
            <IsBlocked>false</IsBlocked>
            <Changeover>4</Changeover>
        </CalDay>
        <CalDay Date="2012-03-05">
            <IsBlocked>false</IsBlocked>
            <Changeover>4</Changeover>
        </CalDay>
        <CalDay Date="2012-04-01">
            <IsBlocked>false</IsBlocked>
            <Changeover>3</Changeover>
        </CalDay>
    </PropertyCalendar>
</Pull_ListPropertyAvailabilityCalendar_RS>
XML Path Data Type Type Description
Pull_ListPropertyAvailabilityCalendar_RS C Root element
Pull_ListPropertyAvailabilityCalendar_RS/Status String(100) M See ListStatuses
Pull_ListPropertyAvailabilityCalendar_RS/Status@ID Integer M See ListStatuses
Pull_ListPropertyAvailabilityCalendar_RS/ResponseID String(32) M Unique response ID
Pull_ListPropertyAvailabilityCalendar_RS/PropertyCalendar C, O Single property
Pull_ListPropertyAvailabilityCalendar_RS/PropertyCalendar@PropertyID Integer M Unique property ID
Pull_ListPropertyAvailabilityCalendar_RS/PropertyCalendar/CalDay C Represents a single day
Pull_ListPropertyAvailabilityCalendar_RS/PropertyCalendar/CalDay@Date String(10) M Date(YYYY-MM-DD format)
Pull_ListPropertyAvailabilityCalendar_RS/PropertyCalendar/CalDay@Units Integer M Number of units available
Pull_ListPropertyAvailabilityCalendar_RS/PropertyCalendar/CalDay@Reservations Integer M Number of confirmed reservations
Pull_ListPropertyAvailabilityCalendar_RS/PropertyCalendar/CalDay/IsBlocked Boolean M Returns whether the property is unavailable for that day. If True/1, the property is not available.
Pull_ListPropertyAvailabilityCalendar_RS/PropertyCalendar/CalDay/MinStay Integer O Minimum length of stay for that day
Pull_ListPropertyAvailabilityCalendar_RS/PropertyCalendar/CalDay/Changeover Integer M Changeover for that day

List property min stay

using System;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyMinStay;

Pull_ListPropertyMinStay_RQ request = new Pull_ListPropertyMinStay_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    PropertyID = 1,
    DateFrom = new DateTime(2014, 1, 4),
    DateTo = new DateTime(2014, 1, 9)
};

string xmlBody = XmlTools.SerializeObject<Pull_ListPropertyMinStay_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListPropertyMinStay_RS response = XmlTools.DeserializeObject<Pull_ListPropertyMinStay_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns properties' minimum stay settings in a date periods manner.

Request

<Pull_ListPropertyMinStay_RQ>
    <Authentication>
        <UserName>[UserName]</UserName>
        <Password>[Password]</Password>
    </Authentication>
    <PropertyID>1</PropertyID>
    <DateFrom>2014-01-04</DateFrom>
    <DateTo>2014-01-09</DateTo>
</Pull_ListPropertyMinStay_RQ>
XML Path Data Type Type Description
Pull_ListPropertyMinStay_RQ C Root element
Pull_ListPropertyMinStay_RQ/Authentication C, M Authentication details
Pull_ListPropertyMinStay_RQ/Authentication/UserName String(50) M Username
Pull_ListPropertyMinStay_RQ/Authentication/Password String(50) M Password
Pull_ListPropertyMinStay_RQ/PropertyID Integer M Unique property ID
Pull_ListPropertyMinStay_RQ/DateFrom String(10) M Start of the range(YYYY-MM-DD format)
Pull_ListPropertyMinStay_RQ/DateTo String(10) M End of the range(YYYY-MM-DD format)

Response

<Pull_ListPropertyMinStay_RS>
    <Status ID="0">Success</Status>
    <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
    <PropertyMinStay PropertyID="1">
        <MinStay DateFrom="2012-03-04" DateTo="2012-03-20">2</MinStay>
        <MinStay DateFrom="2012-03-22" DateTo="2012-03-28">3</MinStay>
    </PropertyMinStay>
</Pull_ListPropertyMinStay_RS>
XML Path Data Type Type Description
Pull_ListPropertyMinStay_RS C Root element
Pull_ListPropertyMinStay_RS/Status String(100) M See ListStatuses
Pull_ListPropertyMinStay_RS/Status@ID Integer M See ListStatuses
Pull_ListPropertyMinStay_RS/ResponseID String(32) M Unique response ID
Pull_ListPropertyMinStay_RS/PropertyMinStay C, O Single property
Pull_ListPropertyMinStay_RS/PropertyMinStay@PropertyID Integer M Unique property ID
Pull_ListPropertyMinStay_RS/PropertyMinStay/MinStay Integer O Any stay between the selected dates has to be at least X nights long
Pull_ListPropertyMinStay_RS/PropertyMinStay/MinStay@DateFrom String(10) M Start of the date range(YYYY-MM-DD format)
Pull_ListPropertyMinStay_RS/PropertyMinStay/MinStay@DateTo String(10) M End of the date range(YYYY-MM-DD format)

List property prices

using System;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyPrice;

Pull_ListPropertyPrices_RQ request = new Pull_ListPropertyPrices_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    PropertyID = 1,
    DateFrom = new DateTime(2014, 1, 4),
    DateTo = new DateTime(2014, 1, 9),
    // new field!
    PricingModelMode = 1  // 0 - standard pricing (daily/los), 1 - full stay pricing, 2 - LOS or FSP
                          // default value - 0
};

string xmlBody = XmlTools.SerializeObject<Pull_ListPropertyPrices_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListPropertyPrices_RS response = XmlTools.DeserializeObject<Pull_ListPropertyPrices_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns seasonal rates configuration for a property. Additional fees and discounts are covered separately and are not included in this API method.

Request

<Pull_ListPropertyPrices_RQ>
    <Authentication>
        <UserName>[UserName]</UserName>
        <Password>[Password]</Password>
    </Authentication>
    <PropertyID>1</PropertyID>
    <DateFrom>2014-01-04</DateFrom>
    <DateTo>2014-01-09</DateTo>
    <!-- new field! -->
    <PricingModelMode>1</PricingModelMode> <!-- 0 - standard pricing (daily/los), 1 - full stay pricing, 2 - LOS or FSP -->
                                         <!-- default value - 0 -->
</Pull_ListPropertyPrices_RQ>
XML Path Data Type Type Description
Pull_ListPropertyPrices_RQ C Root element
Pull_ListPropertyPrices_RQ/Authentication C, M Authentication details
Pull_ListPropertyPrices_RQ/Authentication/UserName String(50) M Username
Pull_ListPropertyPrices_RQ/Authentication/Password String(50) M Password
Pull_ListPropertyPrices_RQ/PropertyID Integer M Unique property ID. All prices for the property will be returned for the specified date ranges
Pull_ListPropertyPrices_RQ/DateFrom String(10) M Start of the date range(YYYY-MM-DD format)
Pull_ListPropertyPrices_RQ/DateTo String(10) M End of the date range(YYYY-MM-DD format)
Pull_ListPropertyPrices_RQ/PricingModelMode Integer O Specifies in what pricing model prices will be returned in response. Possible values: 0 - Standard pricing (daily/los pricing), 1 - Full Stay Pricing, 2 - Pricing model set by PutPrices request

Responses

Depending on the PricingModelMode chosen, one of the following responses will be sent:

Example 1 (standard pricing)

<Pull_ListPropertyPrices_RS>
    <Status ID="0">Success</Status>
    <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
    <Prices PropertyID="1">
        <Season DateFrom="2012-03-01" DateTo="2012-03-08">
            <Price>100.00</Price>
            <Extra>10.00</Extra>
        </Season>
        <Season DateFrom="2012-03-09" DateTo="2012-04-01">
            <Price>120.00</Price>
            <Extra>10.00</Extra>
            <LOSS>
                <LOS Nights="5">
                    <Price>100.00</Price>
                </LOS>
                <LOS Nights="10">
                    <Price>80.00</Price>
                    <LOSPS>
                        <LOSP NrOfGuests="5">
                            <Price>150.00</Price>
                        </LOSP>
                        <LOSP NrOfGuests="6">
                            <Price>175.00</Price>
                        </LOSP>
                    </LOSPS>
                </LOS>
            </LOSS>
            <EGPS>
                <EGP ExtraGuests="1">
                    <Price>25.00</Price>
                </EGP>
                <EGP ExtraGuests="2">
                    <Price>50.00</Price>
                </EGP>
            </EGPS>
        </Season>
    </Prices>
</Pull_ListPropertyPrices_RS>
XML Path Data Type Type Description
Pull_ListPropertyPrices_RS C Root element
Pull_ListPropertyPrices_RS/Status String(100) M See ListStatuses
Pull_ListPropertyPrices_RS/Status@ID Integer M See ListStatuses
Pull_ListPropertyPrices_RS/ResponseID String(32) M Unique response ID
Pull_ListPropertyPrices_RS/Prices C, M A collection of the prices for the property
Pull_ListPropertyPrices_RS/Prices@PropertyID Integer M Unique property ID
Pull_ListPropertyPrices_RS/Prices/Season C, O Information about the price for the specified dates and number of guests
Pull_ListPropertyPrices_RS/Prices/Season@DateFrom String(10) M Start of the date range when the price is valid(YYYY-MM-DD format)
Pull_ListPropertyPrices_RS/Prices/Season@DateTo String(10) M End of the date range when the price is valid (YYYY-MM-DD format)
Pull_ListPropertyPrices_RS/Prices/Season/Price Decimal (19,2) M Price for the standard number of guests defined for that property
Pull_ListPropertyPrices_RS/Prices/Season/Extra Decimal (19,2) O Extra fee for each guest above the standard numberof guests
Pull_ListPropertyPrices_RS/Prices/Season/LOSS C, O A collection of nightly price settings depending on the length of stay
Pull_ListPropertyPrices_RS/Prices/Season/LOSS/LOS C, O Single nightly price
Pull_ListPropertyPrices_RS/Prices/Season/LOSS/LOS@Nights Integer M Number of nights for which the price applies
Pull_ListPropertyPrices_RS/Prices/Season/LOSS/LOS/Price Decimal (19,2) M Nightly price value for the specified length of stay
Pull_ListPropertyPrices_RS/Prices/Season/LOSS/LOS/LOSPS C, O A collection of nightly price settings depending on the number of guests
Pull_ListPropertyPrices_RS/Prices/Season/LOSS/LOS/LOSPS/LOSP C, M Single nightly price depending on the number of guests
Pull_ListPropertyPrices_RS/Prices/Season/LOSS/LOS/LOSPS/LOSP@NrOfGuests Integer M Number of guests
Pull_ListPropertyPrices_RS/Prices/Season/LOSS/LOS/LOSPS/LOSP/Price Decimal (19,2) M Nightly price
Pull_ListPropertyPrices_RS/Prices/Season/EGPS C, O A collection of extra guests price settings depending on the number of extra guests
Pull_ListPropertyPrices_RS/Prices/Season/EGPS/EGP C, O Single extra guest price
Pull_ListPropertyPrices_RS/Prices/Season/EGPS/EGP@ExtraGuests Integer M Number of extra guests for which the price applies
Pull_ListPropertyPrices_RS/Prices/Season/EGPS/EGP/Price Decimal (19,2) M Single extra guest price value for the specified number of extra guests

Example 2 (Full Stay Pricing)

<Pull_ListPropertyPrices_RS>
  <Status ID="0">Success</Status>
  <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
  <Prices PropertyID="1">
    <FSPSeasons>
      <FSPSeason Date="2020-01-01" DefaultPrice="200">
        <FSPRows>
          <FSPRow NrOfGuests="2">
            <Prices>
              <Price NrOfNights="1">123</Price>
              <Price NrOfNights="2">200</Price>
            </Prices>
          </FSPRow>
          <FSPRow NrOfGuests="3">
            <Prices>
              <Price NrOfNights="1">123</Price>
              <Price NrOfNights="2">200</Price>
            </Prices>
          </FSPRow>
        </FSPRows>
      </FSPSeason>
      <FSPSeason Date="2020-01-02" DefaultPrice="300">
        <FSPRows>
          <FSPRow NrOfGuests="3">
            <Prices>
              <Price NrOfNights="1">123</Price>
              <Price NrOfNights="2">200</Price>
            </Prices>
          </FSPRow>
        </FSPRows>
      </FSPSeason>
    </FSPSeasons>
  </Prices>
</Pull_ListPropertyPrices_RS>
XML Path Data Type Type Description
Pull_ListPropertyPrices_RS C Root element
Pull_ListPropertyPrices_RS/Status String(100) M See ListStatuses
Pull_ListPropertyPrices_RS/Status@ID Integer M See ListStatuses
Pull_ListPropertyPrices_RS/ResponseID String(32) M Unique response ID
Pull_ListPropertyPrices_RS/Prices C, M A collection of the prices for the property
Pull_ListPropertyPrices_RS/Prices@PropertyID Integer M Unique property ID
Pull_ListPropertyPrices_RS/FSPSeasons C, O A collection of one-day seasons
Pull_ListPropertyPrices_RS/FSPSeasons/FSPSeason C Information about prices for specified date with default price
Pull_ListPropertyPrices_RS/FSPSeasons/FSPSeason@Date String(10) M Date in format YYYY-MM-DD for which season prices are applied
Pull_ListPropertyPrices_RS/FSPSeasons/FSPSeason@DefaultPrice Decimal (19,2) M Default daily price (for Sales Channels that do not support FSP prices) - inserted with PutPrices request or generated by Rentals United
Pull_ListPropertyPrices_RS/FSPSeasons/FSPSeason/FSPRows C, M A collection of nightly price settings
Pull_ListPropertyPrices_RS/FSPSeasons/FSPSeason/FSPRows/FSPRow C, M Container for nightly prices
Pull_ListPropertyPrices_RS/FSPSeasons/FSPSeason/FSPRows/FSPRow@NrOfGuests Integer M Number of guests for which collection of prices applies
Pull_ListPropertyPrices_RS/FSPSeasons/FSPSeason/FSPRows/FSPRow/Prices C, M Collection of nightly prices depending on the number of guests
Pull_ListPropertyPrices_RS/FSPSeasons/FSPSeason/FSPRows/FSPRow/Prices/Price Decimal(19, 2) M Single nightly price for specified on the number of nights and guests
Pull_ListPropertyPrices_RS/FSPSeasons/FSPSeason/FSPRows/FSPRow/Prices/Price@NrOfNights Integer M Number of nights for which the price applies

Get property avb price

using System;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyAvbPrice;

Pull_GetPropertyAvbPrice_RQ request = new Pull_GetPropertyAvbPrice_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    PropertyID = 1,
    DateFrom = new DateTime(2014, 1, 4),
    DateTo = new DateTime(2014, 1, 9)
};

string xmlBody = XmlTools.SerializeObject<Pull_GetPropertyAvbPrice_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_GetPropertyAvbPrice_RS response = XmlTools.DeserializeObject<Pull_GetPropertyAvbPrice_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns a final price calculation for a given stay. You will receive an empty response when the property is either not available or there are no seasonal rates set. In both cases a reservation cannot be created.

Request

<Pull_GetPropertyAvbPrice_RQ>
    <Authentication>
        <UserName>[UserName]</UserName>
        <Password>[Password]</Password>
    </Authentication>
    <PropertyID>1</PropertyID>
    <DateFrom>2014-01-04</DateFrom>
    <DateTo>2014-01-09</DateTo>
</Pull_GetPropertyAvbPrice_RQ>
XML Path Data Type Type Description
Pull_GetPropertyAvbPrice_RQ C Root element
Pull_GetPropertyAvbPrice_RQ/Authentication C, M Authentication details
Pull_GetPropertyAvbPrice_RQ/Authentication/UserName String(50) M Username
Pull_GetPropertyAvbPrice_RQ/Authentication/Password String(50) M Password
Pull_GetPropertyAvbPrice_RQ/PropertyID Integer M Unique property ID
Pull_GetPropertyAvbPrice_RQ/DateFrom String(10) M Arrival date(YYYY-MM-DD format)
Pull_GetPropertyAvbPrice_RQ/DateTo String(10) M Departure date(YYYY-MM-DD format)
Pull_GetPropertyAvbPrice_RQ/NOP Integer O Number of guests. If it's provided the response will include the price details for the specified number of guests only

Response

Example 1 (property is available in the specified dates)

<Pull_GetPropertyAvbPrice_RS>
  <Status ID="0">Success</Status>
  <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
  <PropertyPrices PropertyID="1">
    <PropertyPrice NOP="3" Cleaning="10.00" ExtraPersonPrice="0.00" Deposit="15.00" SecurityDeposit="15.00">
      100.00
    </PropertyPrice>
    <PropertyPrice NOP="4" Cleaning="10.00" ExtraPersonPrice="15.00" Deposit="16.50" SecurityDeposit="16.50">
      110.00
    </PropertyPrice>
    <PropertyPrice NOP="5" Cleaning="10.00" ExtraPersonPrice="40.00" Deposit="18.00" SecurityDeposit="18.00">
      120.00
    </PropertyPrice>
  </PropertyPrices>
</Pull_GetPropertyAvbPrice_RS>

Example 2 (property is not available in the specified dates)

<Pull_GetPropertyAvbPrice_RS>
    <Status ID="1">Property is not available for the specified dates</Status>
</Pull_GetPropertyAvbPrice_RS>
XML Path Data Type Type Description
Pull_GetPropertyAvbPrice_RS C Root element
Pull_GetPropertyAvbPrice_RS/Status String(100) M See ListStatuses
Pull_GetPropertyAvbPrice_RS/Status@ID Integer M See ListStatuses
Pull_GetPropertyAvbPrice_RS/ResponseID String(32) M Unique response ID
Pull_GetPropertyAvbPrice_RS/PropertyPrices C, O A collection of the final property prices depending on the number of guests
Pull_GetPropertyAvbPrice_RS/PropertyPrices@PropertyID Integer M Unique property ID
Pull_GetPropertyAvbPrice_RS/PropertyPrices/PropertyPrice Decimal (19,2) M Final property price depending on the number of guests
Pull_GetPropertyAvbPrice_RS/PropertyPrices/PropertyPrice@NOP Integer M Number of guest for which the price is valid
Pull_GetPropertyAvbPrice_RS/PropertyPrices/PropertyPrice@Cleaning Decimal (19,2) M Cleaning fee (included in PropertyPrice)
Pull_GetPropertyAvbPrice_RS/PropertyPrices/PropertyPrice@ExtraPersonPrice Decimal (19,2) M Extra person fee (included in PropertyPrice)
Pull_GetPropertyAvbPrice_RS/PropertyPrices/PropertyPrice@Deposit Decimal (19,2) M The required deposit
Pull_GetPropertyAvbPrice_RS/PropertyPrices/PropertyPrice@SecurityDeposit Decimal (19,2) M Refundable security deposit paid by the client directly to the property owner upon arrival

List property discounts

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyDiscount;

Pull_ListPropertyDiscounts_RQ request = new Pull_ListPropertyDiscounts_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    PropertyID = 1
};

string xmlBody = XmlTools.SerializeObject<Pull_ListPropertyDiscounts_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListPropertyDiscounts_RS response = XmlTools.DeserializeObject<Pull_ListPropertyDiscounts_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns length of stay and last-minute discounts settings.

Request

<Pull_ListPropertyDiscounts_RQ>
    <Authentication>
        <UserName>[UserName]</UserName>
        <Password>[Password]</Password>
    </Authentication>
    <PropertyID>1</PropertyID>
</Pull_ListPropertyDiscounts_RQ>
XML Path Data Type Type Description
Pull_ListPropertyDiscounts_RQ C Root element
Pull_ListPropertyDiscounts_RQ/Authentication C, M Authentication details
Pull_ListPropertyDiscounts_RQ/Authentication/UserName String(50) M Username
Pull_ListPropertyDiscounts_RQ/Authentication/Password String(50) M Password
Pull_ListPropertyDiscounts_RQ/PropertyID Integer M Unique property ID

Response

<Pull_ListPropertyDiscounts_RS>
  <Status ID="0">Success</Status>
  <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
  <Discounts PropertyID="1">
    <LongStays>
      <LongStay DateFrom="2012-03-01" DateTo="2012-06-01" Bigger="2" Smaller="20">
        10
      </LongStay>
      <LongStay DateFrom="2012-06-02" DateTo="2012-09-01" Bigger="2" Smaller="20">
        20
      </LongStay>
    </LongStays>
    <LastMinutes>
      <LastMinute DateFrom="2012-03-01" DateTo="2012-06-01" DaysToArrivalFrom="2" DaysToArrivalTo="5">
        10
      </LastMinute>
      <LastMinute DateFrom="2012-06-02" DateTo="2012-08-01" DaysToArrivalFrom="0" DaysToArrivalTo="1">
        10
      </LastMinute>
    </LastMinutes>
  </Discounts>
</Pull_ListPropertyDiscounts_RS>
XML Path Data Type Type Description
Pull_ListPropertyDiscounts_RS C Root element
Pull_ListPropertyDiscounts_RS/Status String(100) M See ListStatuses
Pull_ListPropertyDiscounts_RS/Status@ID Integer M See ListStatuses
Pull_ListPropertyDiscounts_RS/ResponseID String(32) M Unique response ID
Pull_ListPropertyDiscounts_RS/Discounts C, O A collection of long stay discounts
Pull_ListPropertyDiscounts_RS/Discounts@PropertyID C, M Unique property ID
Pull_ListPropertyDiscounts_RS/Discounts/LongStays C, O Long stay discounts value, percentage of the final price
Pull_ListPropertyDiscounts_RS/Discounts/LongStays/LongStay Integer C, O Discount details
Pull_ListPropertyDiscounts_RS/Discounts/LongStays/LongStay@DateFrom String M Start of the date range(YYYY-MM-DD format)
Pull_ListPropertyDiscounts_RS/Discounts/LongStays/LongStay@DateTo String M End of the date range(YYYY-MM-DD format)
Pull_ListPropertyDiscounts_RS/Discounts/LongStays/LongStay@Bigger Integer M Minimum length of stay in order to get the discount
Pull_ListPropertyDiscounts_RS/Discounts/LongStays/LongStay@Smaller Integer M Maximum length of stay in order to get the discount
Pull_ListPropertyDiscounts_RS/Discounts/LastMinutes C, O Last-minute discounts
Pull_ListPropertyDiscounts_RS/Discounts/LastMinutes/LastMinute Integer C, O Last-minute discount, percentage of final price
Pull_ListPropertyDiscounts_RS/Discounts/LastMinutes/LastMinute@DateFrom String M Start of the date range(YYYY-MM-DD format)
Pull_ListPropertyDiscounts_RS/Discounts/LastMinutes/LastMinute@DateTo String M End of the date range(YYYY-MM-DD format)
Pull_ListPropertyDiscounts_RS/Discounts/LastMinutes/LastMinute@DaysToArrivalFrom Integer M Minimum number of days away from the arrival date when the discount is valid
Pull_ListPropertyDiscounts_RS/Discounts/LastMinutes/LastMinute@DaysToArrivalTo Integer M Maximum number of days away the arrival date when the discount is valid

Get Changeover Days

using System;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Changeover;

Pull_GetChangeoverDays_RQ request = new Pull_GetChangeoverDays_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    PropertyID = 1,
    StartDate = new DateTime(2014, 10, 10),
    EndDate = new DateTime(2014, 10, 20)
};

string xmlBody = XmlTools.SerializeObject<Pull_GetChangeoverDays_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_GetChangeoverDays_RS response = XmlTools.DeserializeObject<Pull_GetChangeoverDays_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns changeover days setup for a given property in a given time frame.

The XML response node Changeover returns a string composed of one digit for each day.

Request

<Pull_GetChangeoverDays_RQ>
    <Authentication>
        <UserName>[UserName]</UserName>
        <Password>[Password]</Password>
    </Authentication>
    <PropertyID>1</PropertyID>
    <StartDate>2014-10-10</StartDate>
    <EndDate>2014-10-20</EndDate>
</Pull_GetChangeoverDays_RQ>
XML Path Data Type Type Description
Pull_GetChangeoverDays_RQ C Root element
Pull_GetChangeoverDays_RQ/Authentication C, M Authentication details
Pull_GetChangeoverDays_RQ/Authentication/UserName String(50) M Username
Pull_GetChangeoverDays_RQ/Authentication/Password String(50) M Password
Pull_GetChangeoverDays_RQ/PropertyID Integer M Unique property ID
Pull_GetChangeoverDays_RQ/StartDate String(10) M Start date of the date range (YYYY-MM-DD format)
Pull_GetChangeoverDays_RQ/EndDate String(10) M End date of the date range (YYYY-MM-DD format)

Response

<Pull_GetChangeoverDays_RS>
    <Status ID="0">Success</Status>
    <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
    <Changeover>11122233344</Changeover>
</Pull_GetChangeoverDays_RS>
XML Path Data Type Type Description
Pull_GetChangeoverDays_RS C Root element
Pull_GetChangeoverDays_RS/Status String(100) M See ListStatuses
Pull_GetChangeoverDays_RS/Status@ID Integer M See ListStatuses
Pull_GetChangeoverDays_RS/ResponseID String(32) M Unique response ID
Pull_GetChangeoverDays_RS/Changeover String M A sequence of strings representing the changeover policy in the specified dates

Delta methods

These methods have been created in order to provide you with information on last change within property data in Rentals United. There are four types of changes * Static property data * Pricing * Availability * Images * Description

Use these methods to quickly identify latest changes in Rentals United platform to save resources on your side.

List property change log

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.ChangeLog;

Pull_ListPropertyChangeLog_RQ request = new Pull_ListPropertyChangeLog_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    PropertyID = 1
};

string xmlBody = XmlTools.SerializeObject<Pull_ListPropertyChangeLog_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListPropertyChangeLog_RS response = XmlTools.DeserializeObject<Pull_ListPropertyChangeLog_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method provides the exact date and time (UTC) of the last change for each data type for an individual property.

Request

<Pull_ListPropertyChangeLog_RQ>
    <Authentication>
        <UserName>[UserName]</UserName>
        <Password>[Password]</Password>
    </Authentication>
    <PropertyID>1</PropertyID>
</Pull_ListPropertyChangeLog_RQ>
XML Path Data Type Type Description
Pull_ListPropertyChangeLog_RQ C Root element
Pull_ListPropertyChangeLog_RQ/Authentication C, M Authentication details
Pull_ListPropertyChangeLog_RQ/Authentication/UserName String(50) M Username
Pull_ListPropertyChangeLog_RQ/Authentication/Password String(50) M Password
Pull_ListPropertyChangeLog_RQ/PropertyID Integer M Unique property ID

Response

<Pull_ListPropertyChangeLog_RS>
    <Status ID="0">Success</Status>
    <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
    <ChangeLog PropertyID="1" NLA="false" IsActive="true">
        <StaticData>2013-05-07 12:10:00</StaticData>
        <Pricing>2013-05-07 22:13:20</Pricing>
        <Availability>2013-04-07 02:20:00</Availability>
        <Image>2013-02-22 14:40:00</Image>
        <Description>2013-03-01 10:02:20</Description>
    </ChangeLog>
</Pull_ListPropertyChangeLog_RS>
XML Path Data Type Type Description
Pull_ListPropertyChangeLog_RS C Root element
Pull_ListPropertyChangeLog_RS/Status String(100) M See ListStatuses
Pull_ListPropertyChangeLog_RS/Status@ID Integer M See ListStatuses
Pull_ListPropertyChangeLog_RS/ResponseID String(32) M Unique response ID
Pull_ListPropertyChangeLog_RS/ChangeLog C, O Element is empty when an error occurres
Pull_ListPropertyChangeLog_RS/ChangeLog@PropertyID Integer M Unique property ID
Pull_ListPropertyChangeLog_RS/ChangeLog@NLA Boolean M Indicates whether the property is archived
Pull_ListPropertyChangeLog_RS/ChangeLog@IsActive Boolean M Indicates whether the property is active
Pull_ListPropertyChangeLog_RS/ChangeLog/StaticData String M Last modification of the property's data (living space, address, coordinates, amenities, composition, etc.)(YYYY-MM-DD HH:MM:SS format – 24h format)
Pull_ListPropertyChangeLog_RS/ChangeLog/Pricing String M Last modification of the property's price (base price, seasonal price, discounts)(YYYY-MM-DD HH:MM:SS format – 24h format)
Pull_ListPropertyChangeLog_RS/ChangeLog/Availability String M Last modification of the property's availability (YYYY-MM-DD HH:MM:SS format – 24h format)
Pull_ListPropertyChangeLog_RS/ChangeLog/Image String M Last modification of the property's images (YYYY-MM-DD HH:MM:SS format – 24h format)
Pull_ListPropertyChangeLog_RS/ChangeLog/Description String M Last modification of the property's description (YYYY-MM-DD HH:MM:SS format – 24h format)

List properties change log

using System.Collections.Generic;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.ChangeLog;

Pull_ListPropertiesChangeLog_RQ request = new Pull_ListPropertiesChangeLog_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    PropertyIDs = new List<int>() { 1, 2 }
};

string xmlBody = XmlTools.SerializeObject<Pull_ListPropertiesChangeLog_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListPropertiesChangeLog_RS response = XmlTools.DeserializeObject<Pull_ListPropertiesChangeLog_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method provides the exact date and time (UTC) of the last change for each data type for multiple properties.

Request

<Pull_ListPropertiesChangeLog_RQ>
    <Authentication>
        <UserName>[UserName]</UserName>
        <Password>[Password]</Password>
    </Authentication>
    <PropertyIDs>
    <PropertyID>1</PropertyID>
    <PropertyID>2</PropertyID>
  </PropertyIDs>
</Pull_ListPropertiesChangeLog_RQ>
XML Path Data Type Type Description
Pull_ListPropertiesChangeLog_RQ C Root element
Pull_ListPropertiesChangeLog_RQ/Authentication C, M Authentication details
Pull_ListPropertiesChangeLog_RQ/Authentication/UserName String(50) M Username
Pull_ListPropertiesChangeLog_RQ/Authentication/Password String(50) M Password
Pull_ListPropertiesChangeLog_RQ/PropertyIDs C, O Omit this element if you want to receive data for all properties
Pull_ListPropertiesChangeLog_RQ/PropertyIDs/PropertyID Integer M Unique property ID

Response

<Pull_ListPropertiesChangeLog_RS>
    <Status ID="0">Success</Status>
    <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
    <ChangeLogs>
        <ChangeLog PropertyID="1" NLA="true" IsActive="false">
            <StaticData>2013-02-14 09:28:13</StaticData>
            <Pricing>2013-02-27 07:15:29</Pricing>
            <Availability>2013-03-21 14:10:55</Availability>
            <Image>2013-03-12 09:09:23</Image>
            <Description>2012-04-27 00:00:00</Description>
        </ChangeLog>
        <ChangeLog PropertyID="2" NLA="false" IsActive="false">
            <StaticData>2013-12-23 19:07:32</StaticData>
            <Pricing>2013-12-24 06:36:19</Pricing>
            <Availability>2014-01-09 20:18:08</Availability>
            <Image>2013-10-28 16:12:56</Image>
            <Description>2013-04-29 08:20:51</Description>
        </ChangeLog>
    </ChangeLogs>
</Pull_ListPropertiesChangeLog_RS>
XML Path Data Type Type Description
Pull_ListPropertiesChangeLog_RS C Root element
Pull_ListPropertiesChangeLog_RS/Status String(100) M See ListStatuses
Pull_ListPropertiesChangeLog_RS/Status@ID Integer M See ListStatuses
Pull_ListPropertiesChangeLog_RS/ResponseID String(32) M Unique response ID
Pull_ListPropertiesChangeLog_RS/ChangeLogs C, O Element is empty when an error occurres
Pull_ListPropertiesChangeLog_RS/ChangeLogs/ChangeLog C Contains information about a single property's changelog
Pull_ListPropertiesChangeLog_RS/ChangeLogs/ChangeLog@PropertyID Integer M Unique property ID
Pull_ListPropertiesChangeLog_RS/ChangeLogs/ChangeLog@NLA Boolean M Indicates whether the property is archived
Pull_ListPropertiesChangeLog_RS/ChangeLogs/ChangeLog@IsActive Boolean M Indicates whether the property is active
Pull_ListPropertiesChangeLog_RS/ChangeLogs/ChangeLog/StaticData String M Last modification of the property's data (living space, address, coordinates, amenities, composition, etc.)(YYYY-MM-DD HH:MM:SS format – 24h format)
Pull_ListPropertiesChangeLog_RS/ChangeLogs/ChangeLog/Pricing String M Last modification of the property's price (base price, seasonal price, discounts)(YYYY-MM-DD HH:MM:SS format – 24h format)
Pull_ListPropertiesChangeLog_RS/ChangeLogs/ChangeLog/Availability String M Last modification of the property's availability (YYYY-MM-DD HH:MM:SS format – 24h format)
Pull_ListPropertiesChangeLog_RS/ChangeLogs/ChangeLog/Image String M Last modification of the property's images (YYYY-MM-DD HH:MM:SS format – 24h format)
Pull_ListPropertiesChangeLog_RS/ChangeLogs/ChangeLog/Description String M Last modification of the property's description (YYYY-MM-DD HH:MM:SS format – 24h format)

List property price changes

using System;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.ChangeLog;

Pull_ListPropertyPriceChanges_RQ request = new Pull_ListPropertyPriceChanges_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    PropertyID = 1,
    Since = new DateTime(2013, 10, 16, 12, 0, 0)
};

string xmlBody = XmlTools.SerializeObject<Pull_ListPropertyPriceChanges_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListPropertyPriceChanges_RS response = XmlTools.DeserializeObject<Pull_ListPropertyPriceChanges_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns the dates for which price in Rentals United has changed since a timestamp provided in the request.

Request

<Pull_ListPropertyPriceChanges_RQ>
    <Authentication>
        <UserName>[UserName]</UserName>
        <Password>[Password]</Password>
    </Authentication>
    <PropertyID>1</PropertyID>
    <Since>2013-10-16 12:00:00</Since>
</Pull_ListPropertyPriceChanges_RQ>
XML Path Data Type Type Description
Pull_ListPropertyPriceChanges_RQ C Root element
Pull_ListPropertyPriceChanges_RQ/Authentication C, M Authentication details
Pull_ListPropertyPriceChanges_RQ/Authentication/UserName String(50) M Username
Pull_ListPropertyPriceChanges_RQ/Authentication/Password String(50) M Password
Pull_ListPropertyPriceChanges_RQ/PropertyID Integer M Unique property ID. All prices for the property will be returned for the specified range of dates
Pull_ListPropertyPriceChanges_RQ/Since String M Date since which the changes are to be returned (YYYY-MM-DD HH:MM:SS format – 24h format)

Response

<Pull_ListPropertyPriceChanges_RS>
    <Status ID="0">Success</Status>
    <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
    <PriceChanges>
        <Day>2013-05-22</Day>
        <Day>2013-06-02</Day>
        <Day>2013-06-03</Day>
        <Day>2013-06-04</Day>
    </ChangeLog>
</Pull_ListPropertyPriceChanges_RS>
XML Path Data Type Type Description
Pull_ListPropertyPriceChanges_RS C Root element
Pull_ListPropertyPriceChanges_RS/Status String(100) M See ListStatuses
Pull_ListPropertyPriceChanges_RS/Status@ID Integer M See ListStatuses
Pull_ListPropertyPriceChanges_RS/ResponseID String(32) M Unique response ID
Pull_ListPropertyPriceChanges_RS/PriceChanges C Element is empty when when there are no changes to show
Pull_ListPropertyPriceChanges_RS/PriceChanges/Day String M A single day when a change occurred(YYYY-MM-DD HH:MM:SS format)

List property availability changes

using System;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.ChangeLog;

Pull_ListPropertyAvbChanges_RQ request = new Pull_ListPropertyAvbChanges_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    PropertyID = 1,
    Since = new DateTime(2013, 10, 16, 12, 0, 0)
};

string xmlBody = XmlTools.SerializeObject<Pull_ListPropertyAvbChanges_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Pull_ListPropertyAvbChanges_RS response = XmlTools.DeserializeObject<Pull_ListPropertyAvbChanges_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method returns the dates for which availability in Rentals United has changed since a timestamp provided in the request.

Request

<Pull_ListPropertyAvbChanges_RQ>
    <Authentication>
        <UserName>[UserName]</UserName>
        <Password>[Password]</Password>
    </Authentication>
    <PropertyID>1</PropertyID>
    <Since>2013-10-16 12:00:00</Since>
</Pull_ListPropertyAvbChanges_RQ>
XML Path Data Type Type Description
Pull_ListPropertyAvbChanges_RQ C Root element
Pull_ListPropertyAvbChanges_RQ/Authentication C, M Authentication details
Pull_ListPropertyAvbChanges_RQ/Authentication/UserName String(50) M Username
Pull_ListPropertyAvbChanges_RQ/Authentication/Password String(50) M Password
Pull_ListPropertyAvbChanges_RQ/PropertyID Integer M Unique property ID
Pull_ListPropertyAvbChanges_RQ/Since String M Date since which the changes are to be returned (YYYY-MM-DD HH:MM:SS format – 24h format)

Response

<Pull_ListPropertyAvbChanges_RS>
    <Status ID="0">Success</Status>
    <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
    <AvbChanges>
        <Day>2013-05-22</Day>
        <Day>2013-06-02</Day>
        <Day>2013-06-03</Day>
        <Day>2013-06-04</Day>
    </AvbChangeLog>
</Pull_ListPropertyAvbChanges_RS>
XML Path Data Type Type Description
Pull_ListPropertyAvbChanges_RS C Root element
Pull_ListPropertyAvbChanges_RS/Status String(100) M See ListStatuses
Pull_ListPropertyAvbChanges_RS/Status@ID Integer M See ListStatuses
Pull_ListPropertyAvbChanges_RS/ResponseID String(32) M Unique response ID
Pull_ListPropertyAvbChanges_RS/PriceChanges C Element is empty when when there are no changes to show
Pull_ListPropertyAvbChanges_RS/PriceChanges/Day String M A single day when a change occurred (YYYY-MM-DD HH:MM:SS format)

Push methods - Static property data

Push Rentals United API methods are designed to create a property in Rentals United system.

Put building

This method inserts a single building into the Rentals United system.

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Building;

Push_PutBuilding_RQ request = new Push_PutBuilding_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    BuildingName = "Building 1"
};

string xmlBody = XmlTools.SerializeObject<Push_PutBuilding_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutBuilding_RS response = XmlTools.DeserializeObject<Push_PutBuilding_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Request

<Push_PutBuilding_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
 <BuildingName>Building 1</BuildingName>
</Push_PutBuilding_RQ>
XML Path Data Type Type Description
Push_PutBuilding_RQ C Root element
Push_PutBuilding_RQ/Authentication C, M Authentication details
Push_PutBuilding_RQ/Authentication/UserName String(50) M Username
Push_PutBuilding_RQ/Authentication/Password String(50) M Password
Push_PutBuilding_RQ/BuildingName String(20) M Name of the building

Response

<Push_PutBuilding_RS>
 <Status ID="0">Success</Status>
 <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
 <BuildingID> 1</BuildingID>
</Push_PutBuilding_RS>
XML Path Data Type Type Description
Push_PutBuilding_RS C Root element
Push_PutBuilding_RS/Status String(100) M See ListStatuses
Push_PutBuilding_RS/Status@ID Integer M See ListStatuses
Push_PutBuilding_RS/ResponseID String(32) M Unique response ID
Push_PutBuilding_RS/BuildingID Integer O Building's unique ID

Put owner

This method inserts a single owner into Rentals United.

Each owner represents a property contact information i.e. arrival instructions to a property.

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Owner;

Push_PutOwner_RQ request = new Push_PutOwner_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    Owner = new OwnerInfo() 
    {
        FirstName = "John",
        LastName = "Smith",
        Email = "john.smith@domain.com",
        Phone = "+48 22 000 00 00"
    }
};

string xmlBody = XmlTools.SerializeObject<Push_PutOwner_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutOwner_RS response = XmlTools.DeserializeObject<Push_PutOwner_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Request

<Push_PutOwner_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
  <Owner>
    <FirstName>John</FirstName>
    <SurName>Smith</SurName>
    <Email>john.smith@domain.com</Email>
    <Phone>+48 22 000 00 00</Phone>
  </Owner>
</Push_PutOwner_RQ>
XML Path Data Type Type Description
Push_PutOwner_RQ C Root element
Push_PutOwner_RQ/Authentication C, M Authentication details
Push_PutOwner_RQ/Authentication/UserName String(50) M Username
Push_PutOwner_RQ/Authentication/Password String(50) M Password
Push_PutOwner_RQ/Owner C Owner's details
Push_PutOwner_RQ/Owner@OwnerID Integer O ID of the owner. This is only required when updating the owner's information. Can only be changed by the Agent who created the owner.
Push_PutOwner_RQ/Owner/FirstName String(20) M Owner's first name
Push_PutOwner_RQ/Owner/SurName String(30) M Owner's surname
Push_PutOwner_RQ/Owner/Email String(100) M Owner's email address
Push_PutOwner_RQ/Owner/Phone String(20) M Owner's phone number with the country code

Response

<Push_PutOwner_RS>
  <Status ID="0">Success</Status>
  <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
  <OwnerID>1 </OwnerID>
</Push_PutOwner_RS>
XML Path Data Type Type Description
Push_PutOwner_RS C Root element
Push_PutOwner_RS/Status String(100) M See ListStatuses
Push_PutOwner_RS/Status@ID Integer M See ListStatuses
Push_PutOwner_RS/ResponseID String(32) M Unique response ID
Push_PutOwner_RS/OwnerID Integer M Unique property ID owner

Put property

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Property;
using WS.XMLLayer.WebMethods.AdditionalFees;
using System.Collections.Generic;

Push_PutProperty_RQ request = new Push_PutProperty_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    Property = new PropertyDetailedInfo()
    {
        Name = "Apartment 1",
        OwnerID = 1,
        // DetailedLocationID
        IsActive = true,
        IsArchived = false,
        CleaningPrice = 10.00M,
        Space = 45,
        StandardGuests = 3,
        CanSleepMax = 5,
        PropertyTypeID = 1,
        Floor = 1,
        Street = "Street 1",
        ZipCode = "00-001",
        Coordinates = new CoordinatesInfo()
        {
            Longitude = "40.21334234",
            Latitude = "42.123123"
        },
        Distances = new DistanceInfo[]
        {
            new DistanceInfo()
            {
                DestinationID = 1,
                DistanceUnitID = 1,
                DistanceValue = 10
            }
        },
        Amenities = new AmenityInfo[]
        {
            new AmenityInfo() { AmenityID = 1, Count = 2 },
            new AmenityInfo() { AmenityID = 2 }
        },
        Images = new ImageInfo[]
        {
            new ImageInfo() { ImageTypeID = 1, Image = "http://www.domain.com/1.jpg" }
        },
        ArrivalInstructions = new ArrivalInstructionsInfo()
        {
            Landlord = "John Smith",
            Email = "john.smith@domain.com",
            Phone = "+48 22 000 00 00",
            DaysBeforeArrival = 2,
            HowToArrive = new List<ArriveDescriptionInfo>()
            {
                new ArriveDescriptionInfo()
                {
                    LanguageID = 1,
                    Description = "Information about how to arrive in English"
                },
                new ArriveDescriptionInfo()
                {
                    LanguageID = 2,
                    Description = "Information about how to arrive in German"
                }
            },
            PickupService = new List<ArriveDescriptionInfo>()
            {
                new ArriveDescriptionInfo()
                {
                    LanguageID = 1,
                    Description = "Information about pickup service in English"
                }
            },
        },
        CheckInOut = new CheckInOutInfo()
        {
            CheckInFrom = "10:00",
            CheckInTo = "13:00",
            CheckOutUntil = "09:00",
            Place = "apartment",
            LateArrivalFees = new List<LateArrivalFeeInfo>()
            {
                new LateArrivalFeeInfo()
                {
                    From = "13:00",
                    To = "20:00",
                    Fee = 10.00M
                },
                new LateArrivalFeeInfo()
                {
                    From = "20:00",
                    To = "01:00",
                    Fee = 30.00M
                }
            },
            EarlyDepartureFees = new List<EarlyDepartureFeeInfo>()
            {
                new EarlyDepartureFeeInfo()
                {
                    From = "03:00",
                    To = "05:00",
                    Fee = 30.00M
                },
                new EarlyDepartureFeeInfo()
                {
                    From = "05:00",
                    To = "13:00",
                    Fee = 25.00M
                }
            }
        },
        PaymentMethods = new PaymentMethodInfo[]
        {
            new PaymentMethodInfo() { PaymentMethodID = 1, PaymentMethod = "Account number: 000000000000000" },
            new PaymentMethodInfo() { PaymentMethodID = 2, PaymentMethod = "Visa/MasterCard" }
        },
        Deposit = new DepositInfo() { DepositTypeID = 3, Deposit = 15.00M },
        CancellationPolicies = new CancellationPolicyInfo[]
        {
            new CancellationPolicyInfo()
            {
                ValidFrom = 0,
                ValidTo = 3,
                CancellationPolicy = 100M
            },
            new CancellationPolicyInfo()
            {
                ValidFrom = 4,
                ValidTo = 10,
                CancellationPolicy = 50M
            }
        },
        Descriptions = new DescriptionInfo[]
        {
            new DescriptionInfo()
            {
                LanguageID = 1,
                Text = "Description in English."
            },
            new DescriptionInfo()
            {
                LanguageID = 2,
                Image = "http://YourServer/GermanDescription.jpg"
            },
            new DescriptionInfo()
            {
                LanguageID = 3,
                Image = "http://YourServer/PolishDescription.jpg"
            }
        },
        SecurityDeposit = new DepositInfo() { DepositTypeID = 5, Deposit = 85.00M },
        AdditionalFees = new AdditionalFeeInfo[]
        {  
            new AdditionalFeeInfo()
            {
                FeeTaxType = 1,
                DiscriminatorID = 1,
                Order = 0,
                Value = 50.05M
            },
            new AdditionalFeeInfo()
            {
                FeeTaxType = 6,
                DiscriminatorID = 3,
                Order = 1,
                Value = 0.1255M
            }
        },
        LicenceInfo = new LicenceInfo() { LicenceNumber = "Licence_Number" }
    }
};

string xmlBody = XmlTools.SerializeObject<Push_PutProperty_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutProperty_RS response = XmlTools.DeserializeObject<Push_PutProperty_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

This method has been designed to create and update a property in Rentals United. Update mode is triggered when Push_PutProperty_RQ/Property/ID is provided in the XML request.

Elements marked with M are mandatory for property creation. They may be skipped in update XML requests if they are marked with X. Elements marked with O are optional for property creation and update. If they are not sent, no changes will be made in Rentals United. If they are sent as empty nodes, data will be erased from Rentals United.

Request

Example 1: Put a new property, without detailed amenities data

<Push_PutProperty_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
 <Property>
   <PUID BuildingID="-1">1</PUID>
   <Name>Apartment 1</Name>
   <OwnerID>1</OwnerID>
   <DetailedLocationID TypeID="4">1</DetailedLocationID>
   <IsActive>true</IsActive>
   <IsArchived>false</IsArchived>
   <CleaningPrice>10.00</CleaningPrice>
   <Space>45</Space>
   <StandardGuests>3</StandardGuests>
   <CanSleepMax>5</CanSleepMax>
   <PropertyTypeID>1</PropertyTypeID>
   <Floor>1</Floor>
   <Street>Street 1</Street>
   <ZipCode>00-001</ZipCode>
   <Coordinates>
     <Longitude>40.21334234</Longitude>
     <Latitude>42.123123</Latitude>
   </Coordinates>
   <Distances>
     <Distance>
       <DestinationID>1</DestinationID>
       <DistanceUnitID>1</DistanceUnitID>
       <DistanceValue>10</DistanceValue>
     </Distance>
   </Distances> 
   <Amenities>
     <Amenity Count="2">1</Amenity>
     <Amenity>2</Amenity>
   </Amenities>
   <Images>
     <Image ImageTypeID="1">http://www.domain.com/1.jpg</Image>
   </Images>
   <ArrivalInstructions>
     <Landlord>John Smith</Landlord>
     <Email>john.smith@domain.com</Email>
     <Phone>+48 22 000 00 00</Phone>
     <DaysBeforeArrival>2</DaysBeforeArrival>
     <HowToArrive>
       <Text LanguageID="1">Information about how to arrive in English</Text>
       <Text LanguageID="2">Information about how to arrive in German</Text>
     </HowToArrive>
     <PickupService>
       <Text LanguageID="1">Information about pickup service in English</Text>
     </PickupService>
   </ArrivalInstructions>
   <CheckInOut>
     <CheckInFrom>10:00</CheckInFrom>
     <CheckInTo>13:00</CheckInTo>
     <CheckOutUntil>09:00</CheckOutUntil>
     <Place>apartment</Place>
     <LateArrivalFees>
       <LateArrivalFee From="13:00" To="20:00">10.00</LateArrivalFee>
       <LateArrivalFee From="20:00" To="01:00">30.00</LateArrivalFee>
     </LateArrivalFees>
     <EarlyDepartureFees>
       <EarlyDepartureFee From="03:00" To="05:00">30.00</EarlyDepartureFee>
       <EarlyDepartureFee From="05:00" To="13:00">25.00</EarlyDepartureFee>
     </EarlyDepartureFees>
   </CheckInOut>
   <PaymentMethods>
     <PaymentMethod PaymentMethodID="1">Account number: 000000000000000</PaymentMethod>
     <PaymentMethod PaymentMethodID="2" >Visa/MasterCard</PaymentMethod>
   </PaymentMethods>
   <Deposit DepositTypeID="3">15.00</Deposit>
   <CancellationPolicies>
     <CancellationPolicy ValidFrom="0" ValidTo="3">100</CancellationPolicy>
     <CancellationPolicy ValidFrom="4" ValidTo="10">50</CancellationPolicy>
   </CancellationPolicies>
   <Descriptions>
     <Description LanguageID="1">
       <Text>Description in English.</Text>
     </Description>
     <Description LanguageID="2">
       <Image>http://YourServer/GermanDescription.jpg</Image>
     </Description>
     <Description LanguageID="3">
       <Text>Description in Polish</Text>
       <Image>http://YourServer/PolishDescription.jpg</Image>
     </Description>
   </Descriptions>
   <SecurityDeposit DepositTypeID="5">85.00</SecurityDeposit>
   <AdditionalFees>
     <AdditionalFee FeeTaxType="1" DiscriminatorID="1" Order="0">
       <Value>50.05</Value>
     </AdditionalFee>
     <AdditionalFee FeeTaxType="1" DiscriminatorID="4" Order="1">
       <Value>0.1255</Value>
     <!-- This will represent a value of 12.55% -->
     </AdditionalFee>
   </AdditionalFees>
   <LicenceInfo>
     <LicenceNumber>Licence_Number</LicenceNumber>
   </LicenceInfo>
 </Property>
</Push_PutProperty_RQ>

Example 2: Update a previously uploaded property, with detailed amenity data

<Push_PutProperty_RQ>
 <Authentication>
   <UserName>[UserName]</UserName>
   <Password>[Password]</Password>
 </Authentication>
 <Property>
   <ID>1</ID>
   <PUID BuildingID="1">apt1</PUID>
   <Name>Apartment 1</Name>
   <OwnerID>1</OwnerID>
   <DetailedLocationID TypeID="1">1</DetailedLocationID>
   <IsActive>true</IsActive>
   <CleaningPrice>10.00</CleaningPrice>
   <Space>45</Space>
   <StandardGuests>3</StandardGuests>
   <CanSleepMax>5</CanSleepMax>
   <PropertyTypeID>1</PropertyTypeID>
   <Floor>1</Floor>
   <Street>Street 1</Street>
   <ZipCode>00-001</ZipCode>
   <Coordinates>
     <Longitude>40.21334234</Longitude>
     <Latitude>42.123123</Latitude>
   </Coordinates>
   <Distances>
     <Distance>
       <DestinationID>1</DestinationID>
       <DistanceUnitID>1</DistanceUnitID>
       <DistanceValue>10</DistanceValue>
     </Distance>
   </Distances>
   <CompositionRoomsAmenities>
     <CompositionRoomAmenities CompositionRoomID="1">
       <Amenities>
         <Amenity Count="1">1</Amenity>
       </Amenities>
     </CompositionRoomAmenities>
     <CompositionRoomAmenities CompositionRoomID="2">
       <Amenities>
         <Amenity Count="1">1</Amenity>
       </Amenities>
     </CompositionRoomAmenities>
   </CompositionRoomsAmenities>
   <Amenities>
     <Amenity>2</Amenity>
   </Amenities>
   <Images>
     <Image ImageTypeID="1">http://www.domain.com/1.jpg</Image>
   </Images>
   <ArrivalInstructions>
     <Landlord>John Smith</Landlord>
     <Email>john.smith@domain.com</Email>
     <Phone>+48 22 000 00 00</Phone>
     <DaysBeforeArrival>2</DaysBeforeArrival>
     <HowToArrive>
       <Text LanguageID="1">Information about how to arrive in English</Text>
       <Text LanguageID="2">Information about how to arrive in German</Text>
     </HowToArrive>
     <PickupService>
       <Text LanguageID="1">Information about pickup service in English</Text>
     </PickupService>
   </ArrivalInstructions>
   <CheckInOut>
   <CheckInFrom>10:00</CheckInFrom>
   <CheckInTo>13:00</CheckInTo>
   <CheckOutUntil>09:00</CheckOutUntil>
   <Place>apartment</Place>
   <LateArrivalFees>
     <LateArrivalee From="13:00" To="20:00">10.00</LateArrivalee>
     <LateArrivalee From="20:00" To="01:00">30.00</LateArrivalee>
   </LateArrivalFees>
   </CheckInOut>
   <PaymentMethods>
     <PaymentMethod PaymentMethodID="1">Account number: 000000000000000</PaymentMethod>
     <PaymentMethod PaymentMethodID="2" >Visa/MasterCard</PaymentMethod>
   </PaymentMethods>
   <Deposit DepositTypeID="3">15.00</Deposit>
   <CancellationPolicies>
     <CancellationPolicy ValidFrom="0" ValidTo="3">100</CancellationPolicy>
     <CancellationPolicy ValidFrom="4" ValidTo="10">50</CancellationPolicy>
   </CancellationPolicies>
   <Descriptions>
     <Description LanguageID="1">
       <Text>Description in English.</Text>
     </Description>
     <Description LanguageID="2">
       <Image>http://YourServer/GermanDescription.jpg</Image>
     </Description>
     <Description LanguageID="3">
       <Text>Description in Polish</Text>
       <Image>http://YourServer/PolishDescription.jpg</Image>
     </Description>
   </Descriptions>
   <SecurityDeposit DepositTypeID="5">85.00</SecurityDeposit>
   <AdditionalFees>
     <AdditionalFee FeeTaxType="1" DiscriminatorID="1" Order="0">
       <Value>50.05</Value>
     </AdditionalFee>
     <AdditionalFee FeeTaxType="3" DiscriminatorID="4" Order="1">
       <Value>0.1255</Value>
       <!-- This will represent a value of 12.55% -->
     </AdditionalFee>
   </AdditionalFees>
   <LicenceInfo>
     <LicenceNumber>Licence_Number</LicenceNumber>
   </LicenceInfo>
 </Property>
</Push_PutProperty_RQ>

XML Path Data Type Type Description
Push_PutProperty_RQ Integer C Root element
Push_PutProperty_RQ/Authentication C, M Authentication details
Push_PutProperty_RQ/Authentication/UserName String(50) M Username
Push_PutProperty_RQ/Authentication/Password String(50) M Password
Push_PutProperty_RQ/Property C Single property
Push_PutProperty_RQ/Property/ID Integer O Unique property ID, use this element if you want to update an already uploaded property
Push_PutProperty_RQ/Property/PUID String(200) O Unique property ID in the uploader system
Push_PutProperty_RQ/Property/PUID@BuildingID Integer O Unique building ID that houses the property, define -1 when you do not need to assign the property to a building
Push_PutProperty_RQ/Property/Name String(300) M, X Property name. Use CDATA if the name contains special characters
Push_PutProperty_RQ/Property/OwnerID Integer M The property owner's ID. See PutOwner
Push_PutProperty_RQ/Properties/Property/DetailedLocationID Integer M, X The most detailed location. See ListLocations. DetailedLocationID should be provided with at least city precision
Push_PutProperty_RQ/Property/IsActive Boolean M Use this element if you want to activate (True/1) or deactivate (False/0) the property in the RU system. IsActive and IsArchived cannot be simultaneously set to true
Push_PutProperty_RQ/Property/IsArchived Boolean M Use this element if you want to archive (True/1) or restore (False/0) the property in RU system. IsActive and IsArchived cannot be simultaneously set to true
Push_PutProperty_RQ/Property/CleaningPrice Decimal (19,2) M, X Property cleaning price, always added to the final price of the booking
Push_PutProperty_RQ/Property/Space Integer M, X Living space in square meters
Push_PutProperty_RQ/Property/StandardGuests Integer M, X Number of guest included in the base price
Push_PutProperty_RQ/Property/CanSleepMax Integer M, X Maximum number of guests
Push_PutProperty_RQ/Property/PropertyTypeID Integer M, X See ListPropertyTypes method
Push_PutProperty_RQ/Property/ObjectTypeID Integer M, X See ListOTAPropertyTypes method
Push_PutProperty_RQ/Property/Floor Integer M, X Apartment floor
Push_PutProperty_RQ/Property/Street String(300) M, X Property's street details (street name, building/flat number)
Push_PutProperty_RQ/Property/ZipCode String(30) M, X Property's zip code
Push_PutProperty_RQ/Property/Coordinates C, X Property's geographical coordinates
Push_PutProperty_RQ/Property/Coordinates/Latitude String(50) M Geographic latitude
Push_PutProperty_RQ/Property/Coordinates/Longitude String(50) M Geographic longitude
Push_PutProperty_RQ/Property/Distances C, O, X A collection of distances to main city attractions/points of interest
Push_PutProperty_RQ/Property/Distances/Distance C Distance details
Push_PutProperty_RQ/Property/Distances/DestinationID Integer M See ListDestinations
Push_PutProperty_RQ/Property/Distances/DistanceUnitID Integer M See ListDistanceUnits
Push_PutProperty_RQ/Property/Distances/DistanceValue Decimal (5,2) M Value of distance in distance units
Push_PutProperty_RQ/Property/CompositionRoomsAmenities C, O, X A collection of rooms with amenities, the amenities will be assigned to the specified room. Any general amenities (e.g. parking or wireless internet connection) should be defined in Push_PutProperty_RQ/Property/Amenities element
Push_PutProperty_RQ/Property/CompositionRoomsAmenities/CompositionRoomAmenities C, M A single room
Push_PutProperty_RQ/Property/CompositionRoomsAmenities/CompositionRoomAmenities@CompositionRoomID Integer M See ListCompositionRooms
Push_PutProperty_RQ/Property/CompositionRoomsAmenities/CompositionRoomAmenities/Amenities C, O A collection of amenities available in the specified room
Push_PutProperty_RQ/Property/CompositionRoomsAmenities/CompositionRoomAmenities/Amenity Integer M See ListAmenitiesAvailableForRooms
Push_PutProperty_RQ/Property/CompositionRoomsAmenities/CompositionRoomAmenities/Amenity@Count Integer M Number of each amenity
Push_PutProperty_RQ/Property/Amenities C, O, X A collection of apartment amenities
Push_PutProperty_RQ/Property/Amenities/AmenityID Integer M See ListAmenities
Push_PutProperty_RQ/Property/Amenities/AmenityID@Count Integer M Amount of each amenity
Push_PutProperty_RQ/Property/Images C, O, X A collection of property images
Push_PutProperty_RQ/Property/Images/Image String(300) M Image url
Push_PutProperty_RQ/Property/Images/Image@ImageTypeID Integer M Image type. See ListImageTypes
Pull_PutProperty_RQ/Property/Images/Image@ImageReferenceID String O ID to reference Captions to Image
Pull_PutProperty_RQ/Property/ImageCaptions O A collection of image captions
Pull_PutProperty_RQ/Property/ImageCaptions/ImageCaption String(255) M Image caption description
Pull_PutProperty_RQ/Property/ImageCaptions/ImageCaption@LanguageID Integer M Language of the description see ListLanguages
Pull_PutProperty_RQ/Property/ImageCaptions/ImageCaption@ImageReferenceID String M ID referencing property image to which assign caption
Push_PutProperty_RQ/Property/ArrivalInstructions C, M, X Property arrival instructions
Push_PutProperty_RQ/Property/ArrivalInstructions/Landlord String(100) M, X Name of the property's landlord
Push_PutProperty_RQ/Property/ArrivalInstructions/Email String(100) M, X Landlord's email address
Push_PutProperty_RQ/Property/ArrivalInstructions/Phone String(100) M, X Landlord's phone number (with the country code)
Push_PutProperty_RQ/Property/ArrivalInstructions/DaysBeforeArrival Integer M, X The amount of days before arriving in which the guest should contact the landlord
Push_PutProperty_RQ/Property/ArrivalInstructions/HowToArrive C, M, X Instructions how to arrive
Push_PutProperty_RQ/Property/ArrivalInstructions/HowToArrive/Text String(40000) O Text that describe how to arrive to the property. Use CDATA if text contains special characters.
Push_PutProperty_RQ/Property/ArrivalInstructions/HowToArrive/Text@LanguageID Integer M Code that identifies the language of the description
Push_PutProperty_RQ/Property/ArrivalInstructions/PickupService C, M, X
Push_PutProperty_RQ/Property/ArrivalInstructions/PickupService/Text String(40000) O Text that describes the pickup service. Value returned as CDATA
Push_PutProperty_RQ/Property/ArrivalInstructions/PickupService/Text@LanguageID Integer M Code that identifies the language of the description
Push_PutProperty_RQ/Property/CheckInOut C, M, X Check in, check out details
Push_PutProperty_RQ/Property/CheckInOut/CheckInFrom String(5) M, X Accepted check in time – from (HH:MM format, 24h format)
Push_PutProperty_RQ/Property/CheckInOut/CheckInTo String(5) M, X Accepted check in time – to (HH:MM format, 24h format)
Push_PutProperty_RQ/Property/CheckInOut/CheckOutUntil String(5) M, X The latest check out time (HH:MM format, 24h format)
Push_PutProperty_RQ/Property/CheckInOut/Place String(100) M, X The location where the Place check in takes place
Push_PutProperty_RQ/Property/CheckInOut/LateArrivalFees C, O, X A collection of fees for late arrivals by arrival time (separable ranges)
Push_PutProperty_RQ/Property/CheckInOut/LateArrivalFees/Fee Decimal (19,2) M Fee for a late arrival
Push_PutProperty_RQ/Property/CheckInOut/LateArrivalFees/Fee@From String(5) M Start hour of a range (HH:MM format, 24h format)
Push_PutProperty_RQ/Property/CheckInOut/LateArrivalFees/Fee@To String(5) M End hour of a range (HH:MM format, 24h format)
Push_PutProperty_RQ/Property/CheckInOut/EarlyDepartureFees C, O, X A collection of fees for early departures by arrival times (separable ranges)
Push_PutProperty_RQ/Property/CheckInOut/EarlyDepartureFees/Fee Decimal (19,2) M Fee for an early departure
Push_PutProperty_RQ/Property/CheckInOut/EarlyDepartureFees/Fee@From String(5) M Start hour of a range (HH:MM format, 24h format)
Push_PutProperty_RQ/Property/CheckInOut/EarlyDepartureFees/Fee@To String(5) M End hour of a range (HH:MM format, 24h format)
Push_PutProperty_RQ/Property/PaymentMethods C, M A collection of acceptable payment methods
Push_PutProperty_RQ/Property/PaymentMethods/PaymentMethod String(1000) M, X Payment method details, i.e. Bank account. Use CDATA if the text contains special characters.
Push_PutProperty_RQ/Property/PaymentMethods/PaymentMethod@PaymentMethodID Integer M Payment method. See ListPaymentMethods
Push_PutProperty_RQ/Property/Deposit Decimal (19,2) M Deposit amount depending on the deposit type
Push_PutProperty_RQ/Property/Deposit@DepositTypeID Integer M Deposit type. See ListDepositTypes
Push_PutProperty_RQ/Property/CancellationPolicies C, M, X A collection of cancellation policies
Push_PutProperty_RQ/Property/CancellationPolicies/CancellationPolicy Decimal (19,2) M Percentage of total price. The ValidFrom, ValidTo attributes represent the number of days left to the guests' arrival between which the policy is valid
Push_PutProperty_RQ/Property/CancellationPolicies/CancellationPolicy@ValidFrom Integer M Start of the range when the policy is valid
Push_PutProperty_RQ/Property/CancellationPolicies/CancellationPolicy@ValidTo Integer M End of the range when the policy is valid
Push_PutProperty_RQ/Property/CancellationPoliciesText C, O, X A collection of cancellation policies as text
Push_PutProperty_RQ/Property/CancellationPoliciesText/CancellationPolicyText C, M Property cancellationPolicyText
Push_PutProperty_RQ/Property/CancellationPoliciesText/CancellationPolicyText@LanguageID Integer M Code that identifies the language of the cancellation policy text
Push_PutProperty_RQ/Property/CancellationPoliciesText/CancellationPolicyText/Text String(40000) M Text that describes the cancellation policy
Push_PutProperty_RQ/Property/CancellationPoliciesText/CancellationPolicyText/Image String(600) O Image that descibes the cancellation policy
Push_PutProperty_RQ/Property/Descriptions C, M, X A collection of descriptions
Push_PutProperty_RQ/Property/Descriptions/Description C, M Property description
Push_PutProperty_RQ/Property/Descriptions/Description@LanguageID Integer M Code that identifies the language of the description
Push_PutProperty_RQ/Property/Descriptions/Description/Text String(40000) M Text that describes the property. Use CDATA if the text contains special characters. Do not decode special characters inside CDATA. Most of the Sales Channels do not accept HTML in property description.
Push_PutProperty_RQ/Property/Descriptions/Description/Image String(600) M Image that describes the property
Push_PutProperty_RQ/Property/SecurityDeposit Decimal (8,2) O, X Refundable security deposit amount depending on the deposit type
Push_PutProperty_RQ/Property/SecurityDeposit@DepositTypeID Integer M Deposit type. See ListDepositTypes
Push_PutProperty_RQ/Property/AdditionalFees C, O, X A Collection of additional fees See notes for explanation
Push_PutProperty_RQ/Property/AdditionalFees/AdditionalFee/Value Decimal (10,4) M The value of the additional fee. If discriminator of percentage type is passed, value must be divided by 100. So a 15% should be passed as 0.15
Push_PutProperty_RQ/Property/AdditionalFees/AdditionalFee@KindID Integer M Additional fee kind. See ListAdditionalFeeKinds. DEPRECATED and left only for backwards compatibility, you can omit it if you provide @FeeTaxType
Push_PutProperty_RQ/Property/AdditionalFees/AdditionalFee@FeeTaxType Integer M Type of the tax/fee. See ListAdditionalFeeTypes
Push_PutProperty_RQ/Property/AdditionalFees/AdditionalFee@DiscriminatorID Integer M How the fee should be calculated (e.g. per night, per person, etc.) See ListAdditionalFeeDiscriminators
Push_PutProperty_RQ/Property/AdditionalFees/AdditionalFee@CollectTime Integer O When the fee should be collected (1 - upon booking 2- upon arrival). If not specified, default value is set to: 1- upon booking Collect time is currently supported by Expedia only. All other sales channels treat all fees as to be paid upon booking. Is the fee obligatory or optional. E.g. taxes are usually not optional, fees for some extras are.
Push_PutProperty_RQ/Property/AdditionalFees/AdditionalFee@Optional Boolean O You may mark fee as obligatory (default) or optional. E.g. taxes are usually not optional, fees for some extras are.
Push_PutProperty_RQ/Property/AdditionalFees/AdditionalFee@Name String (200) O Additional note (presentational only), do not put important details about fee calculation here.
Push_PutProperty_RQ/Property/AdditionalFees/AdditionalFee@Order Integer M Additional fee order The order is important in case when the fees/taxes are cumulative.
Push_PutProperty_RQ/Property/LicenceInfo O Information about various legislation issues, registration and tourist licence; might be required for some sales channels
Push_PutProperty_RQ/Property/LicenceInfo/LicenceNumber String(200) O Licence number issued by appropriate local authorities
Push_PutProperty_RQ/Property/LicenceInfo/IssueDate Date O Date the licence was issued
Push_PutProperty_RQ/Property/LicenceInfo/ExpirationDate Date O Date the licence is valid to
Push_PutProperty_RQ/Property/LicenceInfo/IsExempt Boolean O Date the licence is valid to
Push_PutProperty_RQ/Property/LicenceInfo/IsVATRegistered Boolean O Is the property not obliged to have any licence under the local law. Pass “true” to let us know you did not skip LicenceNumber field, but you really don’t have it.
Push_PutProperty_RQ/Property/LicenceInfo/ExemptionReason String O Reason the property does not need the license. Use if it’s any of the reasons below: AustraliaTasmaniaHomeSharing, AustraliaTasmaniaLandUse, AustraliaTasmaniaTraditionalHospitality, CanadaVancouverLicensedHotelOrBb, CanadaVancouverEventSpace, CanadaVancouverLocationExempt, JapanHotelsAndInnsAct, JapanEconomicZoningAct, JapanEventMinpakuStay, PortugalListingIsNotAFullBuilding, PortugalListingHasARegisteredUrbanLeaseContract, SpainAndalusiaListingTypeNotIncluded, SpainAndalusiaNotATouristAccomodation, SpainCataloniaListingNotFullBuilding, SpainCataloniaListingIsSharedRoom, SpainCataloniaOtherExemptionReason, USABostonHotelMotel, USABostonBedBreakfastLodging, USABostonInstitutionalBusiness, USABostonHospitals, USASantaMonicaLicensedHotelOrBb
Push_PutProperty_RQ/Property/LicenceInfo/IsManagedByOwner Boolean O Is the rental managed by its owner – information required by Catalonian and Portugese law.
Push_PutProperty_RQ/Property/LicenceInfo/IsManagedByPrivatePerson Boolean O Is the rental managed by a private person or a company. For now needed for French properties pushed to booking.com.
Push_PutProperty_RQ/Property/LicenceInfo/BrazilianLicenceInfo C, O The registration information required by Brazilian authorities
Push_PutProperty_RQ/Property/LicenceInfo/BrazilianLicenceInfo/CityHallInfoId String O The 8-digit ID for the city hall which issued the CNPJ or CPF number.
Push_PutProperty_RQ/Property/LicenceInfo/JapaneseLicenceInfo C, O Licencing data required by Japanese law. Please contact us for details
Push_PutProperty_RQ/Property/LicenceInfo/FrenchLicenceInfo O Data required because of the new law in France effective from January 2019. Skip it for properties located outside France.
Push_PutProperty_RQ/Property/LicenceInfo/FrenchLicenceInfo/IsRegisteredAtTradeCommercialRegister Boolean O Is registered as a professional at the trade commercial register (Registre du Commerce et des Sociétés)
Push_PutProperty_RQ/Property/LicenceInfo/FrenchLicenceInfo/PropertyTypeForTaxPurposes String O Type of property in terms of French law to determine proper City Tax Category. Needed in some regions of France. Possible values: FurnishedTourism, TouristHotel, OutdoorAccommodations, HolidayVillage, TouristResidence, Bnb, CarsiteParkingLot, Marinas, Palaces
Push_PutProperty_RQ/Property/LicenceInfo/FrenchLicenceInfo/DeclaresRevenuesAsProfessionalForDirectTaxPurposes Boolean O Does the owner declare revenues as professional for direct tax purposes (see article 155 IV du CGI)
Push_PutProperty_RQ/Property/LicenceInfo/FrenchLicenceInfo/TypeOfResidence Integer O Type of residence according to the French law. Possible values: 1-3 1 – Primary 2 – Secondary 3 - Other
Push_PutProperty_RQ/Property/LicenceInfo/FrenchLicenceInfo/CityTaxCategory Integer O You only need to specify it if all three out of DeclaresRevenuesAsProfessionalForDirectTaxPurposes, IsRegisteredAtTradeComme rcialRegister and IsVATRegistered are "false". Possible values: 11-19 11 - palaces 12 - 5 star tourist hotels, 5 star tourist residences, 5 star furnished tourism 13 - 4 star tourist hotels, 4 star tourist residences, 4 star furnished tourist accommodation 14 - 3 star tourist hotels, 3 star tourist residences, 3 star furnished tourist accommodation 15 - 2-star tourist hotels, 2- star tourist residences, 2- star furnished holiday homes, 4 and 5-star holiday villages 16 - 1-star tourist hotels, 1- star tourist residences, 1- star furnished holiday homes, 1,2 and 3-star holiday villages, bed and breakfasts, RV parks and tourist parking lots for each 24 hours 17 - Campgrounds and caravan parks classified in 3,4 and 5 stars 18 - Campsites and caravan parks classified in 1 and 2 stars, marinas 19 - Accommodations awaiting classification or without classification
Push_PutProperty_RQ/Property/LicenceInfo/TasmanianLicenceInfo O Data required because of the law in Tasmania. Skip it for properties located outside Tasmania.
Push_PutProperty_RQ/Property/LicenceInfo/TasmanianLicenceInfo/TasmanianLicenceInfoTypeOfResidence String(50) O "Primary" or "NonPrimary"
Push_PutProperty_RQ/Property/PreparationTimeBeforeArrival Integer O Sets Preparation Time Before Arrival for this property. To remove PTBA from apartment. Negative value must be sent.
Push_PutProperty_RQ/Property/NumberOfStars Integer O Star rating of the property (1-5)

Response

<!-- Completed succesfully-->
<Push_PutProperty_RS>
  <Status ID="0">Success</Status>
  <ResponseID ID="1">Success</ResponseID>
</Push_PutProperty_RS>

<!-- Error occurred-->
<Push_PutProperty_RS>
 <Status ID="4">Wrong authentication data</Status>
 <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
</Push_PutProperty_RS>
XML Path Data Type Type Description
Push_PutProperty_RS C Root element
Push_PutProperty_RS/Status String(100) M See ListStatuses
Push_PutProperty_RS/Status@ID Integer M See ListStatuses
Push_PutProperty_RS/ResponseID String(32) M Unique response ID
Push_PutProperty_RS/Notifs C Root element. Indicates that some data could not be processed.
Push_PutProperty_RS/Notifs/@StatusID Integer M See ListStatuses
Push_PutProperty_RS/Notifs/Notif String M See [ListStatuses](#list-statuses

Set properties status

This method allows you to set status for multiple properties in Rentals United.

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Property;
using System.Collections.Generic;

Push_SetPropertiesStatus_RQ request = new Push_SetPropertiesStatus_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    IsActive = false,
    IsArchived = false,
    PropertyIDs = new List<int>() { 1, 4, 13 }
};

string xmlBody = XmlTools.SerializeObject<Push_SetPropertiesStatus_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_SetPropertiesStatus_RS response = XmlTools.DeserializeObject<Push_SetPropertiesStatus_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Request

<Push_SetPropertiesStatus_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
  <IsActive>0</IsActive>
  <IsArchived>0</IsArchived>
  <PropertyIDs>
    <PropertyID>1</PropertyID>
    <PropertyID>4</PropertyID>
    <PropertyID>13</PropertyID>
  </PropertyIDs>
</Push_SetPropertiesStatus_RQ>
XML Path Data Type Type Description
Push_SetPropertiesStatus_RQ C Root element
Push_SetPropertiesStatus_RQ/Authentication C, M Authentication details
Push_SetPropertiesStatus_RQ/Authentication/UserName String(50) M Username
Push_SetPropertiesStatus_RQ/Authentication/Password String(50) M Password
Push_SetPropertiesStatus_RQ/IsActive Boolean M Activate (True/1) or deactivate (False/0) properties for the specified IDs
Push_SetPropertiesStatus_RQ/IsArchived Boolean M Archive (True/1) or restore (False/0) properties for the specified IDs
Push_SetPropertiesStatus_RQ/PropertyIDs C, M A collection of property IDs
Push_SetPropertiesStatus_RQ/PropertyIDs/PropertyID Integer M Single property ID

Response

<!-- Completed successfully -->
<Push_SetPropertiesStatus_RS>
  <Status ID="0">Success</Status>
  <ResponseID ID="1">Success</ResponseID>
</Push_SetPropertiesStatus_RS>

<!-- Error occurred -->
<Push_SetPropertiesStatus_RS>
  <Status ID="17">Unexpected error, contact IT or try again</Status>
</Push_SetPropertiesStatus_RS>
XML Path Data Type Type Description
Push_SetPropertiesStatus_RS C Root element
Push_SetPropertiesStatus_RS/Status String(100) M See ListStatuses
Push_SetPropertiesStatus_RS/Status@ID Integer M See ListStatuses
Push_SetPropertiesStatus_RS/ResponseID String(32) M Unique response ID
Push_SetPropertiesStatus_RS/Warnings C, O Collection of warnings. Warnings do not block the whole process
Push_SetPropertiesStatus_RS/Warnings/Warning String(100) M Warning for the specific property from the specified IDs.
Push_SetPropertiesStatus_RS/Warnings/Warning@StatusID Integer M ID of the status message. SeeListStatuses for details.
Push_SetPropertiesStatus_RS/Warnings/Warning@ID Integer M Property's ID

Put property external listing

This method is designed for Sales Channels to provide information about listing status in the Sales Channel. Use this method to insert current status of a given property in your Sales Channel.

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyExternalListing;
using System.Collections.Generic;

Push_PutPropertyExternalListing_RQ request = new Push_PutPropertyExternalListing_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    Properties = new List<PropertyPutInfo>() 
    {
        new PropertyPutInfo()
        {
            PropertyID = 0,
            Url = "http://someAgency.com/apartment0",
            Status = 1,
            Description = "Online but the property plan will be nice"
        },
        new PropertyPutInfo()
        {
            PropertyID = 1,
            Url = "http://someAgency.com/apartment1",
            Status = 1,
            Description = "everything ok"
        }
    }
};

string xmlBody = XmlTools.SerializeObject<Push_PutPropertyExternalListing_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutPropertyExternalListing_RS response = XmlTools.DeserializeObject<Push_PutPropertyExternalListing_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Request

<Push_PutPropertyExternalListing_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
  <Properties>
    <Property ID="0">
      <Url>http://someAgency.com/apartment0</Url>
      <Status>1</Status>
      <Description>Online but the property plan will be nice</Description>
    </Property>
    <Property ID="1">
      <Url>http://someAgency.com/apartment1</Url>
      <Status>1</Status>
      <Description>everything ok</Description>
    </Property>
  </Properties>
</Push_PutPropertyExternalListing_RQ>
XML Path Data Type Type Description
Push_PutPropertyExternalListing_RQ C Root element
Push_PutPropertyExternalListing_RQ/Authentication C, M Authentication details
Push_PutPropertyExternalListing_RQ/Authentication/UserName String(50) M Username
Push_PutPropertyExternalListing_RQ/Authentication/Password String(50) M Password
Push_PutPropertyExternalListing_RQ/Properties C A collection of properties
Push_PutPropertyExternalListing_RQ/Properties/Property C Single property
Push_PutPropertyExternalListing_RQ/Properties/Property@ID Integer M Unique property ID
Push_PutPropertyExternalListing_RQ/Properties/Property/Url String(300) M Url to external service
Push_PutPropertyExternalListing_RQ/Properties/Property/Status Integer M ID of the status to be set (see ListPropertyExternalStatuses). Passing "Requested publishing" or "Requested removal" statuses is not allowed here
Push_PutPropertyExternalListing_RQ/Properties/Property/Description String(500) M Additional information for the owner, e.g. "property is online, but the property plan is missing, we need this", "property is not online, amenities are missing"

Response

<Push_PutPropertyExternalListing_RS>
  <Status ID="0">Success</Status>
  <ResponseID ID="1">Success</ResponseID>
</Push_PutPropertyExternalListing_RS>
XML Path Data Type Type Description
Push_PutPropertyExternalListing_RS C Root element
Push_PutPropertyExternalListing_RS/Status String(100) M See ListStatuses
Push_PutPropertyExternalListing_RS/Status@ID Integer M See ListStatuses
Push_PutPropertyExternalListing_RS/ResponseID String(32) M Unique response ID

Push standard number of guests

This method has been designed to update number of people included in the seasonal price for a given property. It can be used by property providers and Revenue Management Systems.

using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Property;

Push_StandardNumberOfGuests_RQ request = new Push_StandardNumberOfGuests_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    Property = new PropertyStandardOfGuestInfoOnly() 
    {
        ID = new IDIfo() { ID = 1 },
        StandardGuests = 2
    }
};

string xmlBody = XmlTools.SerializeObject<Push_StandardNumberOfGuests_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_StandardNumberOfGuests_RS response = XmlTools.DeserializeObject<Push_StandardNumberOfGuests_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Request

<Push_StandardNumberOfGuests_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
  <Property>
    <ID>1</ID>
    <StandardGuests>2</StandardGuests>
  </Property>
</Push_StandardNumberOfGuests_RQ>
XML Path Data Type Type Description
Push_StandardNumberOfGuests_RQ Integer C Root element
Push_StandardNumberOfGuests_RQ/Authentication C, M Authentication details
Push_StandardNumberOfGuests_RQ/Authentication/UserName String(50) M Username
Push_StandardNumberOfGuests_RQ/Authentication/Password String(50) M Password
Push_StandardNumberOfGuests_RQ/Property C Single property
Push_StandardNumberOfGuests_RQ/Property/ID Integer O Unique property ID, use this element if you want to update an already uploaded property
Push_StandardNumberOfGuests_RQ/Property/StandardGuests Integer M, X Number of guest included in the base price

Response

Example (completed successfully)

<Push_StandardNumberOfGuests_RS>
  <Status ID="0">Success</Status>
  <ResponseId>85f7f6d1c13348b7a426600c17cffaf3</ResponseId>
</Push_StandardNumberOfGuests_RS>

Example (error occurred)

<Push_PutProperty_RS>
  <Status ID="97">Standard number of guests must be a positive value </Status>
  <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
</Push_PutProperty_RS>
XML Path Data Type Type Description
Push_StandardNumberOfGuests_RS C Root element
Push_StandardNumberOfGuests_RS/Status String(100) M See ListStatuses
Push_StandardNumberOfGuests_RS/Status@ID Integer M See ListStatuses
Push_StandardNumberOfGuests_RS/ResponseID String(32) M Unique response ID

Push methods - Availability and prices

These methods have been designed to insert non static data (ARI) into Rentals United. You can push availability (including multiunit), rates, minimum stay (MLOS), changeover days and discounts.

Upload available units

using System;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyAvailabilityCalendarMultiUnit;

Push_PutAvbUnits_RQ request = new Push_PutAvbUnits_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    MuCalendar = new MUCalendar()
    {
        PropertyId = 1,
        Availability = new MUAvailability[]
        {
            new MUAvailability()
            {
                From = new DateTime(2012, 3, 1),
                To = new DateTime(2012, 3, 4),
                NoOfAvailableUnits = 2,
                MinStay = 4,
                Changeover = 1
            },
            new MUAvailability()
            {
                From = new DateTime(2012, 3, 5),
                To = new DateTime(2012, 3, 8),
                NoOfAvailableUnits = 0,
                MinStay = 7,
                Changeover = 2
            }
        }
    }
};

string xmlBody = XmlTools.SerializeObject<Push_PutAvbUnits_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutAvbUnits_RS response = XmlTools.DeserializeObject<Push_PutAvbUnits_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Use this method to upload availability, minimum stay and changeover for a property and specified date ranges.

If your property is multiunit, you can set number of available units.

In order to remove minimum stay restriction for a given date range, push minimum stay value of 1.

If you want to remove changeover day restriction, sent value of 4.

Initial calendar push should include availability for all future dates up to 2 years ahead(we won't save dates further than 2 years). Subsequent updates should only include date ranges for which availability, minimum stay or changeover settings have changed in your system (delta update). Rentals United overwrites only dates you specify in the XML request and leaves other dates intact.

Request

<Push_PutAvbUnits_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
  <MuCalendar PropertyID="1">
    <Date From="2012-03-01" To="2012-03-04">
      <U>2</U>
      <MS>4</MS>
      <C>1</C>
    </Date>
    <Date From="2012-03-05" To="2012-03-08">
      <U>0</U>
      <MS>7</MS>
      <C>2</C>
    </Date>
  </MuCalendar>
</Push_PutAvbUnits_RQ>

XML Path Data Type Type Description
Push_PutAvbUnits_RQ C Root element
Push_PutAvbUnits_RQ/Authentication C, M Authentication details
Push_PutAvbUnits_RQ/Authentication/UserName String(50) M Username
Push_PutAvbUnits_RQ/Authentication/Password String(50) M Password
Push_PutAvbUnits_RQ/MUCalendar C, M Information about the property's availability calendar
Push_PutAvbUnits_RQ/Calendar@PropertyID Integer M Unique property ID
Push_PutAvbUnits_RQ/Calendar/Date M Information about the property availability in the given date range
Push_PutAvbUnits_RQ/Calendar/@From String(10) M Start of the range when the availability information is valid (YYYY-MM-DD format)
Push_PutAvbUnits_RQ/Calendar/@To String(10) M End of the range when the availability information is valid (YYYY-MM-DD format)
Push_PutAvbUnits_RQ/Calendar/U Integer M Number of available units
Push_PutAvbUnits_RQ/Calendar/MS Integer M Minimum length of stay
Push_PutAvbUnits_RQ/Calendar/C Integer M Changeover type ID

Response

<Push_PutAvbUnits_RS>
  <Status ID="5">An error occurred for some of the ranges</Status>
</Push_PutAvbUnits_RS>
XML Path Data Type Type Description
Push_PutAvbUnits_RS C Root element
Push_PutAvbUnits_RS/Status String(100) M See ListStatuses
Push_PutAvbUnits_RS/Status@ID Integer M See ListStatuses
Push_PutAvbUnits_RS/ResponseID String(32) M Unique response ID

Put prices

Example 1 (standard pricing)

using System;
using System.Collections.Generic;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyPrice;

Push_PutPrices_RQ request = new Push_PutPrices_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    Prices = new PricesInfo()
    {
        PropertyID = 1,
        Seasons = new List<SeasonInfo>()
        {
        new SeasonInfo
        {
            DateFrom = new DateTime(2012, 3, 1),
            DateTo = new DateTime(2012, 3, 4),
            Price = 100M,
            Extra = 10M
        },
        new SeasonInfo
        {
            DateFrom = new DateTime(2012, 4, 5),
            DateTo = new DateTime(2012, 3, 2),
            Price = 120M,
            Extra = 10M,
            EGPS = new List<EGPInfo>
            {
                new EGPInfo { ExtraGuests = 1, Price = 25M },
                new EGPInfo { ExtraGuests = 2, Price = 50M }
            }
        },
        new SeasonInfo
        {
          DateFrom = new DateTime(2012, 4, 3),
          DateTo = new DateTime(2012, 9, 8),
          Price = 120M,
          Extra = 10M,
          LOSS = new List<LOSInfo>
          {
              new LOSInfo
              {
                  Nights = 5,
                  Price = 100M,
                  LOSPS = new List<LOSPInfo>
                  {
                      new LOSPInfo { NrOfGuests = 5, Price = 150M },
                      new LOSPInfo { NrOfGuests = 6, Price = 175M }
                  }
              },
              new LOSInfo { Nights = 10, Price = 80M }
            }
        },
        new SeasonInfo
        {
            DateFrom = new DateTime(2012, 9, 9),
            DateTo = new DateTime(2013, 3, 2),
            Price = 190M,
            Extra = 20M,
            LOSS = new List<LOSInfo>
            {
                new LOSInfo { Nights = 5, Price = 160M },
                new LOSInfo { Nights = 10, Price = 140M }
            },
            EGPS = new List<EGPInfo>
            {
                new EGPInfo { ExtraGuests = 1, Price = 25M },
                new EGPInfo { ExtraGuests = 2, Price = 50M }
            }
          },
        }
    }
};

string xmlBody = XmlTools.SerializeObject<Push_PutPrices_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutPrices_RS response = XmlTools.DeserializeObject<Push_PutPrices_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Use this mehod to upload rates for specified date ranges.

Initial push should include rates for all future dates. Subsequent updates should only include date ranges for which rates have changed in your system (delta update). Rentals United overwrites only dates you specify in the XML request and leaves other dates intact.

It is not possible to remove rates; it is only possible to overwrite them with new values.

Dates with no prices set are deemed as not available.

Requests

Depending on what pricing model you want to insert, you will need to send a reqeust one of the following requests:

Example 1 (standard pricing)

<Push_PutPrices_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
  <Prices PropertyID="1">
    <Season DateFrom="2012-03-01" DateTo="2012-03-04">
      <Price>100.00</Price>
      <Extra>10.00</Extra>
    </Season>
    <Season DateFrom="2012-04-05" DateTo="2012-03-02">
      <Price>120.00</Price>
      <Extra>10.00</Extra>
      <EGPS>
        <EGP ExtraGuests="1">
          <Price>25.00</Price>
        </EGP>
        <EGP ExtraGuests="2">
          <Price>50.00</Price>
        </EGP>
      </EGPS>
    </Season>
    <Season DateFrom="2012-04-03" DateTo="2012-09-08">
      <Price>120.00</Price>
      <Extra>10.00</Extra>
      <LOSS>
        <LOS Nights="5">
          <Price>100.00</Price>
          <LOSPS>
            <LOSP NrOfGuests="5">
              <Price>150.00</Price>
            </LOSP>
            <LOSP NrOfGuests="6">
              <Price>175.00</Price>
            </LOSP>
          </LOSPS>
        </LOS>
        <LOS Nights="10">
          <Price>80.00</Price>
        </LOS>
      </LOSS>
    </Season>
    <Season DateFrom="2012-09-09" DateTo="2013-03-02">
      <Price>190.00</Price>
      <Extra>20.00</Extra>
      <LOSS>
        <LOS Nights="5">
          <Price>160.00</Price>
        </LOS>
        <LOS Nights="10">
          <Price>140.00</Price>
        </LOS>
      </LOSS>
      <EGPS>
        <EGP ExtraGuests="1">
          <Price>25.00</Price>
        </EGP>
        <EGP ExtraGuests="2">
          <Price>50.00</Price>
        </EGP>
      </EGPS>
    </Season>
  </Prices>
</Push_PutPrices_RQ>

XML Path Data Type Type Description
Push_PutPrices_RQ Integer C Root element
Push_PutPrices_RQ/Authentication C, M Authentication details
Push_PutPrices_RQ/Authentication/UserName String(50) M Username
Push_PutPrices_RQ/Authentication/Password String(50) M Password
Push_PutPrices_RQ/Prices C Information about the property's prices
Push_PutPrices_RQ/Prices@PropertyID Integer M Unique property ID
Push_PutPrices_RQ/Prices/Season C, M Information about the property price for the specified dates and number of guests
Push_PutPrices_RQ/Prices/Season@DateFrom String(10) M Start of the range when a price is valid (YYYY-MM-DD format)
Push_PutPrices_RQ/Prices/Season@DateTo String(10) M End of the range when a price value is valid (YYYY-MM-DD format)
Push_PutPrices_RQ/Prices/Season/Price Decimal (19,2) M Price for the standard number of guests defined for that property
Push_PutPrices_RQ/Prices/Season/Extra Decimal (19,2) O Extra fee for each guest above the standard number of guests
Push_PutPrices_RQ/Prices/Season/LOSS C, O A collection of nightly price settings depending on the length of stay
Push_PutPrices_RQ/Prices/Season/LOSS/LOS C, O Single nightly price
Push_PutPrices_RQ/Prices/Season/LOSS/LOS@Night Integer M Number of nights for which the price applies
Push_PutPrices_RQ/Prices/Season/LOSS/LOS/Price Decimal(19,2) M Nightly price value for the specified length of stay
Push_PutPrices_RQ/Prices/Season/LOSS/LOS/LOSPS C, O A collection of nightly price settings depending on the number of guests
Push_PutPrices_RQ/Prices/Season/LOSS/LOS/LOSPS/LOSP C, M Single nightly price depending on the number of guests
Push_PutPrices_RQ/Prices/Season/LOSS/LOS/LOSPS/LOSP@NrOfGuests Integer M Number of guests
Push_PutPrices_RQ/Prices/Season/LOSS/LOS/LOSPS/LOSP/Price Decimal(19,2) M Nightly price
Push_PutPrices_RQ/Prices/Season/EGPS C, O A collection of extra person price settings depending on the number of extra guests
Push_PutPrices_RQ/Prices/Season/EGPS/EGP C, O Single extra guest price
Push_PutPrices_RQ/Prices/Season/EGPS/EGP@ExtraGuests Integer M Number of extra guests for which the price applies
Push_PutPrices_RQ/Prices/Season/EGPS/EGP/Price Decimal (19,2) M Single extra guest price value for the specified number of extra guests

Example 2 (Full Stay Pricing)

using System;
using System.Collections.Generic;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyPrice;

Push_PutPrices_RQ request = new Push_PutPrices_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    Prices = new PricesInfo() { PropertyID = 1 },
    FSPSeasons = new List<FSPSeason>() 
    {
        new FSPSeason() 
        {
            Date = new DateTime(2020, 1, 1),
            DefaultPrice = 100M,
            FSPRows = new List<FSPRow>() 
            {
                new FSPRow() 
                {
                    NrOfGuests = 2,
                    Prices = new List<Price>() 
                    {
                        new Price() { NrOfNights = 1, Price = 123 },
                        new Price() { NrOfNights = 2, Price = 200 }
                    }
                },
                new FSPRow()
                {
                    NrOfGuests = 3,
                    Prices = new List<Price>()
                    {
                        new Price() { NrOfNights = 1, Price = 123 },
                        new Price() { NrOfNights = 2, Price = 200 }
                    }
                }
            }
        },
        new FSPSeason() 
        {
            Date = new DateTime(2020, 1, 2),
            DefaultPrice = 300M,
            FSPRows = new List<FSPRow>() 
            {
                new FSPRow() 
                {
                    NrOfGuests = 3,
                    Prices = new List<Price>() 
                    {
                        new Price() { NrOfNights = 1, Price = 123 },
                        new Price() { NrOfNights = 2, Price = 200 }
                    }
                },
            }
        }
    }
}

string xmlBody = XmlTools.SerializeObject<Push_PutPrices_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutPrices_RS response = XmlTools.DeserializeObject<Push_PutPrices_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Example 2 (Full Stay Pricing)

<Push_PutPrices_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
  <Prices PropertyID="1">
    <FSPSeasons>
      <FSPSeason Date="2020-01-01" DefaultPrice="200">
        <FSPRows>
          <FSPRow NrOfGuests="2">
            <Prices>
              <Price NrOfNights="1">123</Price>
              <Price NrOfNights="2">200</Price>
            </Prices>
          </FSPRow>
          <FSPRow NrOfGuests="3">
            <Prices>
              <Price NrOfNights="1">123</Price>
              <Price NrOfNights="2">200</Price>
            </Prices>
          </FSPRow>
        </FSPRows>
      </FSPSeason>
      <FSPSeason Date="2020-01-02" DefaultPrice="300">
        <FSPRows>
          <FSPRow NrOfGuests="3">
            <Prices>
              <Price NrOfNights="1">123</Price>
              <Price NrOfNights="2">200</Price>
            </Prices>
          </FSPRow>
        </FSPRows>
      </FSPSeason>
    </FSPSeasons>
  </Prices>
</Push_PutPrices_RQ>
XML Path Data Type Type Description
Push_PutPrices_RQ C Root element
Push_PutPrices_RQ/Authentication C, M Authentication details
Push_PutPrices_RQ/Authentication/UserName String(50) M Username
Push_PutPrices_RQ/Authentication/Password String(50) M Password
Push_PutPrices_RQ/Prices C, M A collection of the prices for the property
Push_PutPrices_RQ/Prices@PropertyID Integer M Unique property ID
Push_PutPrices_RQ/FSPSeasons C, O A collection of one-day seasons
Push_PutPrices_RQ/FSPSeasons/FSPSeason C Information about prices for specified date with default price
Push_PutPrices_RQ/FSPSeasons/FSPSeason@Date String(10) M Date in format YYYY-MM-DD for which season prices are applied
Push_PutPrices_RQ/FSPSeasons/FSPSeason@DefaultPrice Decimal(19, 2) M Default daily price (for Sales Channels that do not support FSP prices) - inserted with PutPrices request or generated by Rentals United
Push_PutPrices_RQ/FSPSeasons/FSPSeason/FSPRows C, M A collection of nightly price settings
Push_PutPrices_RQ/FSPSeasons/FSPSeason/FSPRows/FSPRow C, M Container for nightly prices
Push_PutPrices_RQ/FSPSeasons/FSPSeason/FSPRows/FSPRow@NrOfGuests Integer M Number of guests for which collection of prices applies
Push_PutPrices_RQ/FSPSeasons/FSPSeason/FSPRows/FSPRow/Prices C, M Collection of nightly prices depending on the number of guests
Push_PutPrices_RQ/FSPSeasons/FSPSeason/FSPRows/FSPRow/Prices/Price Decimal(19, 2) M Single nightly price for specified on the number of nights and guests
Push_PutPrices_RQ/FSPSeasons/FSPSeason/FSPRows/FSPRow/Prices/Price@NrOfNights Integer M Number of nights for which the price applies

Response

Regardless of the type of request you sent (Length Of Stay pricing or Full Stay Pricing), you will receive the same type of response:

<Push_PutPrices_RS>
 <Status ID="5">An error occurred for some of the ranges</Status>
 <ResponseID ID="1">Success</ResponseID>
 <Notifs>
   <Notif StatusID="5" DateFrom="2012-03-01" DateTo="2012-03-04">Internal error, please try again</Notif>
   <Notif StatusID="6" DateFrom="2012-04-05" DateTo="2012-03-02">Dates mishmash</Notif>
 </Notifs>
</Push_PutPrices_RS>
XML Path Data Type Type Description
Push_PutPrices_RS Integer C Root element
Push_PutPrices_RS/Status String(100) M See ListStatuses
Push_PutPrices_RS/Status@ID Integer M See ListStatuses
Push_PutPrices_RS/ResponseID String(32) M Unique response ID
Push_PutPrices_RS/Notifs C, O A collection of information with uploading process errors. Successfully updated ranges are not included in this collection
Push_PutPrices_RS/Notif Integer C, M Detailed information about the erronous ranges
Push_PutPrices_RS/Notif@StatusID Integer M See ListStatuses
Push_PutPrices_RS/Notif@DateFrom String(10) M Start of a single erronous range (YYYY-MM-DD format)
Push_PutPrices_RS/Notif@DateTo String(10) M End of a single erronous range (YYYY-MM-DD format)

Put long stay discounts

using System;
using System.Collections.Generic;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyDiscount;

Push_PutLongStayDiscounts_RQ request = new Push_PutLongStayDiscounts_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    LongStays = new LongStaysInfo()
    {
      LongStays = new List<LongStayInfo>
      {
        new LongStayInfo
        {                                          
            DateFrom = new DateTime(2012, 3, 1),
            DateTo = new DateTime(2012, 9, 10),
            Bigger = 2,
            Smaller = 20,
            LongStay = 10
        },
        new LongStayInfo
        {
            DateFrom = new DateTime(2012, 9, 11),
            DateTo = new DateTime(2012, 12, 1),
            Bigger = 2,
            Smaller = 20,
            LongStay = 20
        },
        new LongStayInfo
        {
            DateFrom = new DateTime(2012, 12, 2),
            DateTo = new DateTime(2012, 12, 11),
            Bigger = 2,
            Smaller = 20,
            LongStay = 5
        },
      }
    }
};

string xmlBody = XmlTools.SerializeObject<Push_PutLongStayDiscounts_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutLongStayDiscounts_RS response = XmlTools.DeserializeObject<Push_PutLongStayDiscounts_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Use this method to upload length of stay discounts for specified date ranges.

Length of stay discounts are defined by setting % discount eligible for stays longer than Bigger parameter and shorter than Smaller parameter. Bigger and Smaller parameters can contain the same value, if you want to add the discount for a specific length of stay.

Smaller value can be maximum 180 days.

Length of stay discounts updates should only include date ranges for which length of stay discounts have changed in your system (delta update). Rentals United overwrites only dates you specify in the XML request and leaves other dates intact.

In order to remove discounts, push 0 or empty value for a given date range.

Request

<Push_PutLongStayDiscounts_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
  <LongStays PropertyID="1">
    <LongStay DateFrom="2012-03-01" DateTo="2012-09-10" Bigger="2" Smaller="20">
      10
    </LongStay>
    <LongStay DateFrom="2012-09-11" DateTo="2012-12-01" Bigger="2" Smaller="20">
      20
    </LongStay>
    <LongStay DateFrom="2012-12-02" DateTo="2012-12-11" Bigger="2" Smaller="20">
      5
    </LongStay>
  </LongStays>
</Push_PutLongStayDiscounts_RQ>

XML Path Data Type Type Description
Push_PutLongStayDiscounts_RQ C Root element
Push_PutLongStayDiscounts_RQ/Authentication C, M Authentication details
Push_PutLongStayDiscounts_RQ/Authentication/UserName String(50) M Username
Push_PutLongStayDiscounts_RQ/Authentication/Password String(50) M Password
Push_PutLongStayDiscounts_RQ/LongStays C, M A collection of long stay discounts
Push_PutLongStayDiscounts_RQ/LongStays/LongStay C, O Long stay discount
Push_PutLongStayDiscounts_RQ/LongStays@PropertyID Integer C, M Unique property ID
Push_PutLongStayDiscounts_RQ/LongStays/LongStay Integer M Long stay discounts value, percentage of the final price
Push_PutLongStayDiscounts_RQ/LongStays/LongStay@DateFrom String(10) M Start of the range (YYYY-MM-DD format)
Push_PutLongStayDiscounts_RQ/LongStays/LongStay@DateTo String(10) M End of the range (YYYY-MM-DD format)
Push_PutLongStayDiscounts_RQ/LongStays/LongStay@Bigger Integer M Minimum length of stay required in order to get the discount
Push_PutDiscounts_RQ/LongStays/LongStay@Smaller Integer M Maximum length of stay required in order to get the discount (max value is 180)

Response

<Push_PutLongStayDiscounts_RS>
 <Status ID="5">An error occurred for some of the ranges</Status>
 <ResponseID ID="1">Success</ResponseID>
 <Notifs>
  <Notif StatusID="5" DateFrom="2012-12-02" DateTo="2012-12-11">Internal error, please try again</Notif>
 </Notifs>
</Push_PutLongStayDiscounts_RS>
XML Path Data Type Type Description
Push_PutLongStayDiscounts_RS C Root element
Push_PutLongStayDiscounts_RS/Status String(100) M See ListStatuses
Push_PutLongStayDiscounts_RS/Status@ID Integer M See ListStatuses
Push_PutLongStayDiscounts_RS/ResponseID String(32) M Unique response ID
Push_PutLongStayDiscounts_RS/Notifs C, O A collection of information with uploading process errors. Successfully updated ranges are not included in this collection
Push_PutLongStayDiscounts_RS/Notif Integer C, M Detailed information about the erronous ranges
Push_PutLongStayDiscounts_RS/Notif@StatusID Integer M See ListStatuses
Push_PutLongStayDiscounts_RS/Notif@DateFrom String(10) M Start of a single erronous range (YYYY-MM-DD format)
Push_PutLongStayDiscounts_RS/Notif@DateTo String(10) M End of a single erronous range (YYYY-MM-DD format)

Put last-minute discounts

using System;
using System.Collections.Generic;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyDiscount;

Push_PutLastMinuteDiscounts_RQ request = new Push_PutLastMinuteDiscounts_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },  
    LastMinutes = new LastMinutesInfo()
    {
      LastMinutes = new List<LastMinuteInfo>
      {
        new LastMinuteInfo
        {
            DateFrom = new DateTime(2012, 9, 9),
            DateTo = new DateTime(2012, 9, 10),
            DaysToArrivalFrom = 2,
            DaysToArrivalTo = 5,
            LastMinute = 10
        },
        new LastMinuteInfo
        {
            DateFrom = new DateTime(2012, 9, 11),
            DateTo = new DateTime(2012, 12, 1),
            DaysToArrivalFrom = 1,
            DaysToArrivalTo = 4,
            LastMinute = 20
        },
        new LastMinuteInfo
        {
            DateFrom = new DateTime(2012, 12, 2),
            DateTo = new DateTime(2012, 12, 11),
            DaysToArrivalFrom = 2,
            DaysToArrivalTo = 3,
            LastMinute = 5
        }
      }
    }
};

string xmlBody = XmlTools.SerializeObject<Push_PutLastMinuteDiscounts_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutLastMinuteDiscounts_RS response = XmlTools.DeserializeObject<Push_PutLastMinuteDiscounts_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Use this method to upload last-minute discounts for specified date ranges.

Last-minute discounts are defined by setting % discount eligible for reservations created DaysToArrivalFrom to DaysToArrivalTo before the arrival date (check-in date).

Last-minute discounts updates should only include date ranges for which last-minute discounts have changed in your system (delta update). Rentals United overwrites only dates you specify in the XML request and leaves other dates intact.

In order to remove discounts push 0 or empty value for a given date range.

Request

<Push_PutLastMinuteDiscounts_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
  <LastMinutes PropertyID="1">
    <LastMinute DateFrom="2012-09-09" DateTo="2012-09-10" DaysToArrivalFrom="2" DaysToArrivalTo="5">
      10
    </LastMinute>
    <LastMinute DateFrom="2012-09-11" DateTo="2012-12-01" DaysToArrivalFrom="1" DaysToArrivalTo="4">
      20
    </LastMinute>
    < LastMinute DateFrom="2012-12-02" DateTo="2012-12-11" DaysToArrivalFrom="2" DaysToArrivalTo="3">
      5
    </LastMinute>
  </LastMinutes>
</Push_PutLastMinuteDiscounts_RQ>

XML Path Data Type Type Description
Push_PutLastMinuteDiscounts_RQ C Root element
Push_PutLastMinuteDiscounts_RQ/Authentication C, M Authentication details
Push_PutLastMinuteDiscounts_RQ/Authentication/UserName String(50) M Username
Push_PutLastMinuteDiscounts_RQ/Authentication/Password String(50) M Password
Push_PutLastMinuteDiscounts_RQ/LastMinutes C, M Last-minute discounts
Push_PutLastMinuteDiscounts_RQ/LastMinutes/LastMinute C, O Last-minute discount
Push_PutLastMinuteDiscounts_RQ/LastMinutes@PropertyID Integer M Unique property ID
Push_PutLastMinuteDiscounts_RQ/LastMinutes/LastMinute Integer C Last-minute discount, percentage of final price
Push_PutLastMinuteDiscounts_RQ/LastMinutes/LastMinute@DateFrom String(10) M Start of the range (YYYY-MM-DD format)
Push_PutLastMinuteDiscounts_RQ/LastMinutes/LastMinute@DateTo String(10) M End of the range (YYYY-MM-DD format)
Push_PutLastMinuteDiscounts_RQ/LastMinutes/LastMinute@DaysToArrivalFrom Integer M Minimum number of days away from the arrival date when the discount is valid
Push_PutLastMinuteDiscounts_RQ/LastMinutes/LastMinute@DaysToArrivalTo Integer M Maximum number of days away from the arrival date when the discount is valid

Response

<Push_PutLastMinuteDiscounts_RS>
 <Status ID="5">An error occurred for some of the ranges</Status>
 <ResponseID ID="1">Success</ResponseID>
 <Notifs>
  <Notif StatusID="5" DateFrom="2012-12-02" DateTo="2012-12-11">Internal error, please try again</Notif>
 </Notifs>
</Push_PutLastMinuteDiscounts_RS>
XML Path Data Type Type Description
Push_PutLastMinuteDiscounts_RS C Root element
Push_PutLastMinuteDiscounts_RS/Status String(100) M See ListStatuses
Push_PutLastMinuteDiscounts_RS/Status@ID Integer M See ListStatuses
Push_PutLastMinuteDiscounts_RS/ResponseID String(32) M Unique response ID
Push_PutLastMinuteDiscounts_RS/Notifs C, O A collection of information with uploading process errors. Successfully updated ranges are not included in this collection
Push_PutLastMinuteDiscounts_RS/Notif Integer C, M Detailed information about the erronous ranges
Push_PutLastMinuteDiscounts_RS/Notif@StatusID Integer M See ListStatuses
Push_PutLastMinuteDiscounts_RS/Notif@DateFrom String(10) M End of a single erronous range (YYYY-MM-DD format)
Push_PutLastMinuteDiscounts_RS/Notif@DateTo String(10) M End of a single erronous range (YYYY-MM-DD format)

VR price calculation logic

The price consists of different elements. However, the price for a night is calculated based on the seasonal price, any extra guests fees and discounts.

SeasonalPrice + (MaxGuests - StandardGuests) * ExtraGuestsFee - LastMinuteDiscount - LongStayDiscount = PriceFor1Night

where LastMinuteDiscount = (SeasonalPrice + (MaxGuests - StandardGuests) * ExtraGuestsFee) * DiscountValue

where LongStayDiscount = (SeasonalPrice + (MaxGuests - StandardGuests) * ExtraGuestsFee) * DiscountValue

The below examples will use the scenario to walk you step by step and explain how the price is calculated.

Property prices

using System;
using System.Collections.Generic;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyPrice;

Push_PutPrices_RQ request = new Push_PutPrices_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    Prices = new PricesInfo()
    {
        PropertyID = 1,
        Seasons = new List<SeasonInfo>()
        {
        new SeasonInfo
        {
          DateFrom = new DateTime(2012, 3, 1),
          DateTo = new DateTime(2012, 3, 4),
          Price = 100M,
          Extra = 10M,
          LOSS = new List<LOSInfo>
          {
              new LOSInfo
              {
                  Nights = 2,
                  Price = 90M,
                  LOSPS = new List<LOSPInfo>
                  {
                      new LOSPInfo
                      {
                          NrOfGuests = 5,
                          Price = 160M
                      }
                  }
              },
            }
        },
        new SeasonInfo
        {
            DateFrom = new DateTime(2012, 3, 5),
            DateTo = new DateTime(2012, 4, 2),
            Price = 120M,
            Extra = 10M,
            EGPS = new List<EGPInfo>
            {
              new EGPInfo
              {
                  ExtraGuests = 1,
                  Price = 20M
              },
              new EGPInfo
              {
                  ExtraGuests = 2,
                  Price = 20M
              }
            }
        },
        new SeasonInfo
        {
            DateFrom = new DateTime(2012, 4, 3),
            DateTo = new DateTime(2012, 9, 8),
            Price = 120M,
            Extra = 10M
        },
        new SeasonInfo
        {
            DateFrom = new DateTime(2012, 9, 9),
            DateTo = new DateTime(2013, 3, 2),
            Price = 190M,
            Extra = 20M
        },
      }
    }
};

string xmlBody = XmlTools.SerializeObject<Push_PutPrices_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutPrices_RS response = XmlTools.DeserializeObject<Push_PutPrices_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}
<Push_PutPrices_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
  <Prices PropertyID="1">
    <Season DateFrom="2012-03-01" DateTo="2012-03-04">
      <Price>100.00</Price>
      <Extra>10.00</Extra>
      <LOSS>
        <LOS Nights="2">
          <Price>90.00</Price>
          <LOSPS>
            <LOSP NrOfGuests="5">
              <Price>160.00</Price>
            </LOSP>
          </LOSPS>
        </LOS>
      </LOSS>
    </Season>
    <Season DateFrom="2012-03-05" DateTo="2012-04-02">
      <Price>120.00</Price>
      <Extra>10.00</Extra>
      <EGPS>
        <EGP ExtraGuests="1">
          <Price>20.00</Price>
        </EGP>
        <EGP ExtraGuests="2">
          <Price>20.00</Price>
        </EGP>
      </EGPS>
    </Season>
    <Season DateFrom="2012-04-03" DateTo="2012-09-08">
      <Price>120.00</Price>
      <Extra>10.00</Extra>
    </Season>
    <Season DateFrom="2012-09-09" DateTo="2013-03-02">
      <Price>190.00</Price>
      <Extra>20.00</Extra>
    </Season>
  </Prices>
</Push_PutPrices_RQ>

Property discounts

using System;
using System.Collections.Generic;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyDiscount;

Push_PutLongStayDiscounts_RQ request = new Push_PutLongStayDiscounts_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    LongStays = new LongStaysInfo()
    {
      LongStays = new List<LongStayInfo>
      {
        new LongStayInfo
        {                                          
            DateFrom = new DateTime(2012, 3, 1),
            DateTo = new DateTime(2012, 9, 10),
            Bigger = 2,
            Smaller = 20,
            LongStay = 10
        },
        new LongStayInfo
        {
            DateFrom = new DateTime(2012, 9, 11),
            DateTo = new DateTime(2012, 12, 1),
            Bigger = 2,
            Smaller = 20,
            LongStay = 20
        },
        new LongStayInfo
        {
            DateFrom = new DateTime(2012, 12, 2),
            DateTo = new DateTime(2012, 12, 11),
            Bigger = 2,
            Smaller = 20,
            LongStay = 5
        },
        new LongStayInfo
        {
            DateFrom = new DateTime(2014, 1, 2),
            DateTo = new DateTime(2014, 12, 11),
            Bigger = 2,
            Smaller = 20,
            LongStay = 10
        }
      }
    }
};

string xmlBody = XmlTools.SerializeObject<Push_PutLongStayDiscounts_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutLongStayDiscounts_RS response = XmlTools.DeserializeObject<Push_PutLongStayDiscounts_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}
using System;
using System.Collections.Generic;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.PropertyDiscount;

Push_PutLastMinuteDiscounts_RQ request = new Push_PutLastMinuteDiscounts_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },  
    LastMinutes = new LastMinutesInfo()
    {
      LastMinutes = new List<LastMinuteInfo>
      {
        new LastMinuteInfo
        {
            DateFrom = new DateTime(2012, 9, 9),
            DateTo = new DateTime(2012, 9, 10),
            DaysToArrivalFrom = 1,
            DaysToArrivalTo = 5,
            LastMinute = 10
        },
        new LastMinuteInfo
        {
            DateFrom = new DateTime(2012, 9, 11),
            DateTo = new DateTime(2012, 12, 1),
            DaysToArrivalFrom = 1,
            DaysToArrivalTo = 4,
            LastMinute = 20
        },
        new LastMinuteInfo
        {
            DateFrom = new DateTime(2012, 12, 2),
            DateTo = new DateTime(2012, 12, 11),
            DaysToArrivalFrom = 2,
            DaysToArrivalTo = 3,
            LastMinute = 5
        }
      }
    }
};

string xmlBody = XmlTools.SerializeObject<Push_PutLastMinuteDiscounts_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutLastMinuteDiscounts_RS response = XmlTools.DeserializeObject<Push_PutLastMinuteDiscounts_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}
<Push_PutLongStayDiscounts_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
  <LongStays PropertyID="1">
    <LongStay DateFrom="2012-03-01" DateTo="2012-09-10" Bigger="2" Smaller="20">
      10
    </LongStay>
    <LongStay DateFrom="2012-09-11" DateTo="2012-12-01" Bigger="2" Smaller="20">
      20
    </LongStay>
    <LongStay DateFrom="2012-12-02" DateTo="2012-12-11" Bigger="2" Smaller="20">
      5
    </LongStay>
    <LongStay DateFrom="2014-01-02" DateTo="2014-12-11" Bigger="2" Smaller="20">
      10
    </LongStay>
  </LongStays>
</Push_PutLongStayDiscounts_RQ>
<Push_PutLastMinuteDiscounts_RQ>
  <Authentication>
    <UserName>[UserName]</UserName>
    <Password>[Password]</Password>
  </Authentication>
  <LastMinutes PropertyID="1">
    <LastMinute DateFrom="2012-09-09" DateTo="2012-09-10" DaysToArrivalFrom="1" DaysToArrivalTo="5">
      10
    </LastMinute>
    <LastMinute DateFrom="2012-09-11" DateTo="2012-12-01" DaysToArrivalFrom="1" DaysToArrivalTo="4">
      20
    </LastMinute>
    < LastMinute DateFrom="2012-12-02" DateTo="2012-12-11" DaysToArrivalFrom="2" DaysToArrivalTo="3">
      5
    </LastMinute>
  </LastMinutes>
</Push_PutLastMinuteDiscounts_RQ>

Property details

The property owner can define various details for the property which affect the final price.

For example:

Standard number of guests – 3

Can sleep max – 5

Cleaning price - 10,00

These details mean that the property price for 1, 2 or 3 guests is the same, but there is an extra fee for the 4th and 5th guest.

Example stay 1

In this example the current date is 2012-01-01.

Stay details:

arrival – 2012-03-04

departure – 2012-03-06

number of guests: 4

It is a 2 nights stay and the number of guests is above the standard number of guests (3), thus the fee for an extra guest will be applied.

The seasonal price for 2012-03-04 is 90, and the seasonal price for 2012-03-05 is 120.

A long stay discount will be applied.

Price calculation

Price calculation for each day:

2012-03-04 – 90+(4-3)*10 = 100 – there is a LOS element with Nights = 2 (equal to the length of stay), in this case the price from the LOS element (90) will be applied.

2012-03-05 – 120+(4-3)*20 = 140 – there is an EGP element with ExtraGuests=1 (equal to the number of extra guests), in this case the extra guest price from the EGP element (20) will be applied.

Seasonal prices total before discounts – 100+140 = 240

Discounts:

Last minute:

2012-03-04: none

2012-03-05: none

Long stay:

2012-03-04: 10% of 90 = 9

2012-03-05: 10% of 120 = 12

Final calculation:

Seasonal price – discounts

2012-03-04: 100-0-9 = 91

2012-03-05: 140-0-12 = 128

Final price:

Daily prices + cleaning price

91+128+10 = 229

Example stay 2

In this example today's date is 2012-09-07.

Stay details:

arrival – 2012-09-08

departure – 2012-09-12

number of guests: 5

It is a 3 nights stay and the number of guests is above the standard number of guests (3) and the fee for extra guests will be applied. A last-minute element is present and the discount will be applied.

Price calculation

Price calculation for each day:

2012-09-08 – 120+(5-3)*10 = 140

2012-09-09 – 190+(5-3)*20 = 230

2012-09-10 – 190+(5-3)*20 = 230

2012-09-11 – 190+(5-3)*20 = 230

Seasonal prices total before discounts – 140+230+230+230 = 830

Discounts:

Last minute:

2012-09-08: none

2012-09-09: 10% of 190 = 19

2012-09-10: 10% of 190 = 19

2012-09-11: 20% of 190 = 38

Long stay:

2012-09-08: 10% of 120 = 12

2012-09-09: 10% of 190 = 19

2012-09-10: 10% of 190 = 19

2012-09-11: 20% of 190 = 28

Final calculation:

Seasonal price – discounts

2012-09-08: 140-0-12 = 128

2012-09-09: 230-19-19 = 192

2012-09-10: 230-19-19 = 192

2012-09-11: 230-38-38 = 154

Final price:

Daily prices + cleaning price

128+192+192+154+10,00 = 676,00

Example stay 3

In this example today's date is 2012-09-07.

Stay details:

arrival – 2014-09-08

departure – 2014-09-12

number of guests: 5

It is a 3 nights stay and the number of guests is above the standard number of guests (3) and the fee for extra guests will be applied. There is no seasonal price defined for this period, so the normal, base price, will be applied. There is a long stay element and the LOS discount will be applied.

Price calculation

Price calculation for each day:

2014-09-08 – 100+(5-3)*10 = 120

2014-09-09 – 100+(5-3)*10 = 120

2014-09-10 – 120+(5-3)*15 = 150

2014-09-11 – 120+(5-3)*20 = 160

Base prices total before discounts – 120+120+150+160 = 550

Discounts:

Last minute:

2014-09-08: none

2014-09-09: none

2014-09-10: none

2014-09-11: none

Long stay:

2014-09-08: 10% of 100 = 10

2014-09-09: 10% of 100 = 10

2014-09-10: 10% of 120 = 12

2014-09-11: 10% of 120 = 12

Final calculation

Base price – discounts

2014-09-08: 120-0-10 = 110

2014-09-09: 120-0-10 = 110

2014-09-10: 150-0-12 = 138

2014-09-11: 160-0-12 = 148

Final price:

Daily prices + cleaning price

110+110+138+148+10,00 = 516,00

Example stay 4

In this example today's date is 2012-01-01.

Stay details:

arrival – 2012-03-04

departure – 2012-03-06

number of guests: 5

It is a 2 nights stay and the number of guests is above the standard number of guests (3) and the fee for extra guests will be applied. There is a LOS element for the period. There is also nightly price (LOSP) element defined for bookings for 5 guests.

Price calculation

Price calculation for each day:

2012-03-04 – 160+(5-3)*10 = 180 – there is LOS element with Nights = 2 (equal to the length of stay) and LOSP element with NrOfGuests=5 (equal to the number of guests), in this case the price from LOS element (90) is ignored and LOSP element price (160) will be applied.

2012-03-05 – 120+(5-3)*20 = 160 – there is EGP element with ExtraGuests=2 (equal to the number of extra guests), in this case the extra guest price from EGP element (20) will be applied.

Seasonal price – 180+160 = 340

Discounts:

Last minute:

2012-03-04: none

2012-03-05: none

Long stay:

2012-03-04: 10% of 160 = 16

2012-03-05: 10% of 120 = 12

Final calculation:

Seasonal price – discounts

2012-03-04: 180-0-16 = 164

2012-03-05: 160-0-12 = 148

Final price:

Daily prices + cleaning price

164+148+10 = 322

Extra fees and taxes

Additional fees represent different kinds of additional fees which can be applied to the rental price. This does not concern explicitly specified fees on the property, for example cleaning fees, security deposit, extra guest price etc.

Additional fees are applied onto the final price (for example, after adding the cleaning fee). Each fee is applied according to it's order: fees with small order number are applied first. Eeach fee is applied on the result from the previous fee calculation, unless otherwise specified.

Additional fee item consists of: Order, FeeTaxType, DiscriminatorID and Value.

Fees & Taxes example 1

Example 1

<AdditionalFees>
 <AdditionalFee FeeTaxType="1" DiscriminatorID="1" Order="0">
   <Value>10</Value>
 </AdditionalFee>
 <AdditionalFee FeeTaxType="1" DiscriminatorID="3" Order="1">
   <Value>0.1</Value>
 </AdditionalFee>
 <AdditionalFee FeeTaxType="1" DiscriminatorID="4" Order="2">
   <Value>0.15</Value>
 </AdditionalFee>
 <AdditionalFee FeeTaxType="1" DiscriminatorID="2" Order="5">
   <Value>2</Value>
 </AdditionalFee>
 <AdditionalFee FeeTaxType="1" DiscriminatorID="3" Order="66">
   <Value>0.23</Value>
 </AdditionalFee>
</AdditionalFees>

Taking input price: 33.12, reservation for 2 days and following fees collection.

The calculations is as follows:

  1. DiscriminatorID="1" is a "FlatPerStay" fee, therefore to 33.12 we add 10. Current price: 43.12.

  2. DiscriminatorID="3" is a "IndependentPercentage" fee, therefore the current price doesn't change (stays 43.12), but at the end we have to remember to add 4.31 for the taxes fees.

  3. DiscriminatorID="4" is a "CumulativePercentage" fee, therefore to 43.12 we add (43.12 * 0.15)=6.47. Current price: 43.12 + 6.47 = 49.59.

  4. DiscriminatorID="2" is a "FixedPerDay" fee, therefore to the current price we add 2 (the length of the reservation) * 2 (the value of the fee)=4. Current price: 53.59.

  5. DiscriminatorID="3" is a "IndependentPercentage" fee, therefore the current price doesn't change (stays 53.59), but at the end we have to remember to add 53.59 * 0.23 = 12.33 for the taxes fees.

End of calculations. The final price is: 53.59 (the price from the last step) + 4.31 + 12.33 (the independent fees) = 70.23. All of the fees were taxes, so taxes added in this example = 37.11.

Fees & Taxes example 2

Example 2

<AdditionalFees>
  <AdditionalFee FeeTaxType="1" DiscriminatorID="1" Order="2">
    <Value>10</Value>
  </AdditionalFee>
  <AdditionalFee FeeTaxType="1" DiscriminatorID="3" Order="1">
    <Value>0.1</Value>
  </AdditionalFee>
  <AdditionalFee FeeTaxType="1" DiscriminatorID="4" Order="0">
    <Value>0.15</Value>
  </AdditionalFee>
  <AdditionalFee FeeTaxType="1" DiscriminatorID="2" Order="5">
    <Value>2</Value>
  </AdditionalFee>
  <AdditionalFee FeeTaxType="1" DiscriminatorID="3" Order="66">
    <Value>0.23</Value>
  </AdditionalFee>
</AdditionalFees>

Taking input price: 100, reservation for 2 days and following fees collection:

The calculations is as follows:

  1. DiscriminatorID= 4 (note the order value) is a "CumulativePercentage" fee, therefore to 100 we add (0.15 * 100). Current price: 115.

  2. DiscriminatorID="3" is a "IndependentPercentage" fee, therefore the current price doesn't change (stays 115), but at the end we have to remember to add 115 * 0.1 = 11.5 for the taxes fees.

  3. DiscriminatorID="1" is a "FlatPerStay" fee, therefore to 115 we add 10. Current price: 125.

  4. DiscriminatorID="2" is a "FixedPerDay" fee, therefore to the current price we add 2 (the length of the reservation) * 2 (the value of the fee) = 4. Current price: 129.

  5. DiscriminatorID="3" is a "IndependentPercentage" fee, therefore the current price doesn't change (stays 129), but at the end we have to remember to add 129 * 0.23 = 29.67 for the taxes fees.

End of calculations. The final price is: 129 (the price from the last step) + 11.5 + 29.67 (the independent fees) = 170.17. All of the fees were taxes, so taxes added in this example = 70.17.

FSP calculation logic

In the Full Stay Pricing model the prices are calculated differently than in Base and Length of Stay pricing. The examples below should help to clear all doubts regarding price calculation with this pricing model and the model itself.

In Standard Pricing model, stay prices in Rentals United are calculated on a nightly basis. The system calculates the price for each night separately and then summarizes them to get the final price for a stay. All is fine as long as the PMS partner provides us with nightly pricing. If they share prices of possible stays, it gets more complicated (especially in the case of overlapping stays) and discrepancies can occur.

With the introduction of the FSP model it became possible to save a total price for a given arrival and number of nights in Rentals United - a full price for a stay. Seasons are one-night long and prices within seasons are applicable for up to the given number of guests (see Example Stay 3).

Example stay 1

<Prices PropertyID="1">
  <FSPSeasons>
    <FSPSeason Date="2020-02-01" DefaultPrice="150">
      <FSPRows>
        <FSPRow NrOfGuests="3">
          <Prices>
            <Price NrOfNights="1">0</Price>
            <Price NrOfNights="2">300</Price>
            <Price NrOfNights="3">425</Price>
            <Price NrOfNights="4">575</Price>
            <Price NrOfNights="5">700</Price>
          </Prices>
        </FSPRow>
      </FSPRows>
    </FSPSeason>
    <FSPSeason Date="2020-02-02" DefaultPrice="150">
      <FSPRows>
        <FSPRow NrOfGuests="2">
          <Prices>
            <Price NrOfNights="1">123</Price>
            <Price NrOfNights="2">234</Price>
            <Price NrOfNights="3">345</Price>
            <Price NrOfNights="4">456</Price>
            <Price NrOfNights="5">567</Price>
          </Prices>
        </FSPRow>
        <FSPRow NrOfGuests="3">
          <Prices>
            <Price NrOfNights="1">150</Price>
            <Price NrOfNights="2">250</Price>
            <Price NrOfNights="3">350</Price>
            <Price NrOfNights="4">450</Price>
            <Price NrOfNights="5">0</Price>
          </Prices>
        </FSPRow>
      </FSPRows>
    </FSPSeason>
    <FSPSeason Date="2020-02-03" DefaultPrice="100">
      <FSPRows>
        <FSPRow NrOfGuests="1">
          <Prices>
            <Price NrOfNights="1">0</Price>
            <Price NrOfNights="2">0</Price>
            <Price NrOfNights="3">200</Price>
            <Price NrOfNights="4">350</Price>
            <Price NrOfNights="5">500</Price>
          </Prices>
        </FSPRow>
        <FSPRow NrOfGuests="2">
          <Prices>
            <Price NrOfNights="1">0</Price>
            <Price NrOfNights="2">0</Price>
            <Price NrOfNights="3">200</Price>
            <Price NrOfNights="4">350</Price>
            <Price NrOfNights="5">500</Price>
          </Prices>
        </FSPRow>
        <FSPRow NrOfGuests="3">
          <Prices>
            <Price NrOfNights="1">0</Price>
            <Price NrOfNights="2">0</Price>
            <Price NrOfNights="3">200</Price>
            <Price NrOfNights="4">350</Price>
            <Price NrOfNights="5">500</Price>
          </Prices>
        </FSPRow>
      </FSPRows>
    </FSPSeason>
  </FSPSeasons>
</Prices>

Let's say that we want to determine the cost of a 3 nights’ stay for 3 guests from 2020-02-03.

In the pricing model on right, we need to look for an FSPSeason section with the Date attribute set to 2020-02-03 and an FSPRow with the NrOfGuests attribute set to 3.

Now all we need to do is find the Price in the chosen FSPRow that has the NrOfNights attribute set to 3. The Price exists, so the final price of this reservation is 200.

We can also determine the cost by multiplying DefaultPrice of chosen FSPSeason by length of this stay. In this example final price of this reservation would be 100 (default price) * 3 (length of this stay) = 300. That price would be used only in Sales Channels that didn't implement Full Stay Pricing model. This is why it's very important to remember about setting DefaultPrice value.

Example stay 2

Let's say that we want to determine the cost of a 4 nights’ stay for 2 guests from 2020-02-02.

Similarly as in the previous example, we need to find an FSPSeason with its Date attribute set to 2020-02-02 and an FSPRow with its NrOfGuests attribute set to 2.

There is a Price with its NrOfNights attribute set to 4, so the final price of this reservation is 456.

Example stay 3

Let's say, we want to determine the cost of another stay, this time for 5 nights and for one guest, starting on 2020-02-01.

Similarly to previous examples, we need to find an FSPSeason with its Date attribute set to 2020-02-01 and an FSPRow with its NrOfGuests attribute set to 1. While the first is easily done, there is no FSPRow the season, with its NrOfGuests attribute equal to 1. In such a case we need to look for an FSPRow with its NrOfGuests attribute set to the next closest value. In this case, the next closest value is 3, so the FSPRow with NrOfGuest attribute set to 3 applies.

Now we need to locate a Price element with its NrOfNights attribute set to 5. The final price for this stay is 700.

Example stay 4

Let's say that we want to determine the cost of a 6 nights’ stay for 2 guests from 2020-02-02.

Information about such stay is not included in FSProw, then it's not possible to make such reservation.

Full Stay Pricing FAQ

SC implements FSP SC doesn't implement FSP
Push SC The same way as they were inserted Convertion to LOSes will be made
Pull SC The same way as they were inserted Will use BasePrice or convert FSPs to LOSes (by setting PriceModelMode in List property prices to 0)

Reservations & Leads

These methods have been designed to manage reservations through their entire lifecycle (across multiple reservation statuses).

Put confirmed reservations

Example

using System;
using System.Collections.Generic;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Reservation;

Push_PutConfirmedReservationMulti_RQ request = new Push_PutConfirmedReservationMulti_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    Reservation = new ReservationInfo()
    {
        StayInfos = new List<StayInfo2>()
        {
            new StayInfo2()
            {
                PropertyID = 2,
                DateFrom = new DateTime(2012, 3, 2),
                DateTo = new DateTime(2012, 3, 14),
                NumberOfGuests = 3,
                Costs = new CostsInfo()
                {
                    RUPrice = 120.00M,
                    ClientPrice = 140.00M,
                    AlreadyPaid = 0.00M
                }
            },
            new StayInfo2()
            {
                PropertyID = 4,
                DateFrom = new DateTime(2012, 3, 2),
                DateTo = new DateTime(2012, 3, 14),
                NumberOfGuests = 3,
                Costs = new CostsInfo()
                {
                    RUPrice = 120.00M,
                    ClientPrice = 140.00M,
                    AlreadyPaid = 0.00M
                }
            }
        },
        CustomerInfo = new CustomerInfo()
        {
            Name = "Test",
            SurName = "Test",
            Email = "test.test@test.com",
            Phone = "+11 111 111 111",
            SkypeID = "test.test",
            Address = "Street 1/2",
            ZipCode = "00-000",
            LanguageID = 1,
            CountryID = new CountryIDInfo()
            {
                CountryID = 42
            }
        },
        Comments = "test"
    }
};

string xmlBody = XmlTools.SerializeObject<Push_PutConfirmedReservationMulti_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutConfirmedReservationMulti_RS response = XmlTools.DeserializeObject<Push_PutConfirmedReservationMulti_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Example (when the credit card information is provided)

using System;
using System.Collections.Generic;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Reservation;

Push_PutConfirmedReservationMulti_RQ request = new Push_PutConfirmedReservationMulti_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    Reservation = new ReservationInfo()
    {
        StayInfos = new List<StayInfo2>()
        {
            new StayInfo2()
            {
                PropertyID = 2,
                DateFrom = new DateTime(2012, 3, 2),
                DateTo = new DateTime(2012, 3, 14),
                NumberOfGuests = 3,
                Costs = new CostsInfo()
                {
                    RUPrice = 120.00M,
                    ClientPrice = 140.00M,
                    AlreadyPaid = 0.00M
                }
            },
            new StayInfo2()
            {
                PropertyID = 4,
                DateFrom = new DateTime(2012, 3, 2),
                DateTo = new DateTime(2012, 3, 14),
                NumberOfGuests = 3,
                Costs = new CostsInfo()
                {
                    RUPrice = 120.00M,
                    ClientPrice = 140.00M,
                    AlreadyPaid = 0.00M
                }
            }
        },
        CustomerInfo = new CustomerInfo()
        {
            Name = "Test",
            SurName = "Test",
            Email = "test.test@test.com",
            Phone = "+11 111 111 111",
            SkypeID = "test.test",
            Address = "Street 1/2",
            ZipCode = "00-000",
            LanguageID = 1,
            CountryID = new CountryIDInfo()
            {
                CountryID = 42
            }
        },
        Comments = "test",
        CreditCard = new CreditCardInfo()
        {
            CCNumber = "00000000000",
            CVC = "321",
            NameOnCard = "Test",
            Expiration = "12/2015",
            BillingAddress = "testaddr",
            CardType = CreditCardType.VISA,
            Comments = "comments"
        }
    }
};

string xmlBody = XmlTools.SerializeObject<Push_PutConfirmedReservationMulti_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutConfirmedReservationMulti_RS response = XmlTools.DeserializeObject<Push_PutConfirmedReservationMulti_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Example (when you want to ignore PMS and RU quote)

using System;
using System.Collections.Generic;
using WS.XMLLayer;
using WS.XMLLayer.WebMethods;
using WS.XMLLayer.WebMethods.Reservation;

Push_PutConfirmedReservationMulti_RQ request = new Push_PutConfirmedReservationMulti_RQ()
{
    Authentication = new Authentication()
    {
        UserName = "[UserName]",
        Password = "[Password]"
    },
    Reservation = new ReservationInfo()
    {
        StayInfos = new List<StayInfo2>()
        {
            new StayInfo2()
            {
                PropertyID = 2,
                DateFrom = new DateTime(2012, 3, 2),
                DateTo = new DateTime(2012, 3, 14),
                NumberOfGuests = 3,
                Costs = new CostsInfo()
                {
                    RUPrice = 120.00M,
                    ClientPrice = 140.00M,
                    AlreadyPaid = 0.00M
                }
            },
            new StayInfo2()
            {
                PropertyID = 4,
                DateFrom = new DateTime(2012, 3, 2),
                DateTo = new DateTime(2012, 3, 14),
                NumberOfGuests = 3,
                Costs = new CostsInfo()
                {
                    RUPrice = 120.00M,
                    ClientPrice = 140.00M,
                    AlreadyPaid = 0.00M
                }
            }
        },
        CustomerInfo = new CustomerInfo()
        {
            Name = "Test",
            SurName = "Test",
            Email = "test.test@test.com",
            Phone = "+11 111 111 111",
            SkypeID = "test.test",
            Address = "Street 1/2",
            ZipCode = "00-000",
            LanguageID = 1,
            CountryID = new CountryIDInfo()
            {
                CountryID = 42
            }
        },
        Comments = "test"                    
    },
    QuoteModeId = 2
};

string xmlBody = XmlTools.SerializeObject<Push_PutConfirmedReservationMulti_RQ>(request);
string xmlResponse = HttpTools.MakeHttpPostAsync(xmlBody).Result;

try
{
    Push_PutConfirmedReservationMulti_RS response = XmlTools.DeserializeObject<Push_PutConfirmedReservationMulti_RS>(xmlResponse);
    // process response object
}
catch
{
    ErrorResponse errorResponse = XmlTools.DeserializeObject<ErrorResponse>(xmlResponse);
    // process error response object
}

Use this method to create a confirmed reservation. You can book more than one property in a single reservation.

Request

Example

<Push_PutConfirmedReservationMulti_RQ>
    <Authentication>
        <UserName>[UserName]</UserName>
        <Password>[Password]</Password>
    </Authentication>
    <Reservation>
        <StayInfos>
            <StayInfo>
                <PropertyID>2</PropertyID>
                <DateFrom>2012-03-02</DateFrom>
                <DateTo>2012-03-14</DateTo>
                <NumberOfGuests>3</NumberOfGuests>
                <Costs>
                    <RUPrice>120.00</RUPrice>
                    <ClientPrice>140.00</ClientPrice>
                    <AlreadyPaid>0.00</AlreadyPaid>
                </Costs>
            </StayInfo>
            <StayInfo>
                <PropertyID>4</PropertyID>
                <DateFrom>2012-03-02</DateFrom>
                <DateTo>2012-03-14</DateTo>
                <NumberOfGuests>3</NumberOfGuests>
                <Costs>
                    <RUPrice>120.00</RUPrice>
                    <ClientPrice>140.00</ClientPrice>
                    <AlreadyPaid>0.00</AlreadyPaid>
                </Costs>
            </StayInfo>
        </StayInfos>
        <CustomerInfo>
            <Name>Test</Name>
            <SurName>Test</SurName>
            <Email>test.test@test.com</Email>
            <Phone>+11 111 111 111</Phone>
            <SkypeID>test.test</SkypeID>
            <Address>Street 1/2</Address>
            <ZipCode>00-000</ZipCode>
            <LanguageID>1</LanguageID>
            <CountryID>42</CountryID>
        </CustomerInfo>
        <Comments>test</Comments>
    </Reservation>
</Push_PutConfirmedReservationMulti_RQ>

Example (when the credit card information is provided)

<Push_PutConfirmedReservationMulti_RQ>
    <Authentication>
        <UserName>[UserName]</UserName>
        <Password>[Password]</Password>
    </Authentication>
    <Reservation>
        <StayInfos>
            <StayInfo>
                <PropertyID>2</PropertyID>
                <DateFrom>2012-03-02</DateFrom>
                <DateTo>2012-03-14</DateTo>
                <NumberOfGuests>3</NumberOfGuests>
                <Costs>
                    <RUPrice>120.00</RUPrice>
                    <ClientPrice>140.00</ClientPrice>
                    <AlreadyPaid>0.00</AlreadyPaid>
                </Costs>
            </StayInfo>
            <StayInfo>
                <PropertyID>4</PropertyID>
                <DateFrom>2012-03-02</DateFrom>
                <DateTo>2012-03-14</DateTo>
                <NumberOfGuests>3</NumberOfGuests>
                <Costs>
                    <RUPrice>120.00</RUPrice>
                    <ClientPrice>140.00</ClientPrice>
                    <AlreadyPaid>0.00</AlreadyPaid>
                </Costs>
            </StayInfo>
        </StayInfos>
        <CustomerInfo>
            <Name>Test</Name>
            <SurName>Test</SurName>
            <Email>test.test@test.com</Email>
            <Phone>+11 111 111 111</Phone>
            <SkypeID>test.test</SkypeID>
            <Address>Street 1/2</Address>
            <ZipCode>00-000</ZipCode>
            <LanguageID>1</LanguageID>
            <CountryID>42</CountryID>
        </CustomerInfo>
        <Comments>test</Comments>
        <CreditCard>
            <CCNumber>00000000000</CCNumber>
            <CVC>321</CVC>
            <NameOnCard>Test</NameOnCard>
            <Expiration>12/2015</Expiration>
            <BillingAddress>testaddr</BillingAddress>
            <CardType>VISA</CardType>
            <Comments>comments</Comments>
        </CreditCard>
    </Reservation>
</Push_PutConfirmedReservationMulti_RQ>

Example (when you want to ignore PMS and RU quote)

<Push_PutConfirmedReservationMulti_RQ>
    <Authentication>
        <UserName>[UserName]</UserName>
        <Password>[Password]</Password>
    </Authentication>
    <Reservation>
        <StayInfos>
            <StayInfo>
                <PropertyID>2</PropertyID>
                <DateFrom>2019-03-02</DateFrom>
                <DateTo>2019-03-14</DateTo>
                <NumberOfGuests>3</NumberOfGuests>
                <Costs>
                    <RUPrice>120.00</RUPrice>
                    <ClientPrice>140.00</ClientPrice>
                    <AlreadyPaid>0.00</AlreadyPaid>
                </Costs>
            </StayInfo>
            <StayInfo>
                <PropertyID>4</PropertyID>
                <DateFrom>2019-03-02</DateFrom>
                <DateTo>2019-03-14</DateTo>
                <NumberOfGuests>3</NumberOfGuests>
                <Costs>
                    <RUPrice>120.00</RUPrice>
                    <ClientPrice>140.00</ClientPrice>
                    <AlreadyPaid>0.00</AlreadyPaid>