JSON based API integration
The Rezi Web API allows developers to populate customer's website with real time data from the software by sending specific queries to our API endpoints, it also allows you to post customer leads to Rezi. This gives the web developer full control over what data to display on a customer’s website and how to display it.
This document provides technical information to web developers wishing to integrate a customer's website with Rezi property data and pass customer leads back to Rezi and provides a JSON schema.
Note: The Branch ID, Agency ID & API Key is not permitted to be displayed in any URL for the website; please store this information in a configuration file as variables. Failure to comply will result in the API Key being suspended.
Web guidelines
A requirement of using the Rezi property search framework is that the integrated customer’s website must contain the following:
Text to include
Powered by the Dezrez Rezi API
The Dezrez Logo
- A copy of the logo may be downloaded and hosted on the customer’s web server
- The resolution of the logo may be decreased but the aspect ratio MUST remain the same
- Do not animate, rotate, or otherwise distort the logo design
Linkback to
Accessing the feed
You will need an API key in order to request any data, you will need to talk to our mutual client for them to request one for you to use.
Property search functionality
Returning the live JSON property data is achieved by submitting a standard HTTP request to our servers. Our servers will return the data in JSON format based on the search criteria included in the request. You can then make a separate API request for full property data for properties included in the search results when required.
It is up to you how you build your feed processor and request data from the API, the below information will help you request and process the correct data.
Request URLs
The two URLs which form the basis for getting property data for an customer's website, both require the following request headers:
Header Name | Value |
---|
Rezi-Api-Version | 1.0 |
Content-Type | application/json |
Full property details
This URL will return the full details of an individual property.
There are no parameters for this call beyond the API key and the RoleID (See Appendix B).
Property Search
This URL will returns an overview of all current Sales and Lettings properties that are on the market with the customer (STC, Exchanged and Let Agreed are not returned by default).
As well as the headers you will need to include a JSON string that contains the following information as a minimum:
Parameter Name | Type | Example Value | Description |
---|
MarketingFlags | Collection of string | ["ApprovedForMarketingWebsite"] | Must be set to pull through properties that have been approved for marketing on the website. Other values that can be included are "Featured", "Reduced", "UnderOffer" and "OfferAccepted". |
You may well want to further filter the kind of properties that are returned by our API, below is a list of the current valid filters:
Parameter Name | Type | Example Value | Description |
---|
RoleTypes | Collection of string | ["Selling"] or ["Letting"] | Choose to display just sales or lettings properties. Leave blank to display both |
BranchIdList | Collection of integer | [1] | The branch ID to use in the search. If left blank it will return all branches' properties. |
MinimumPrice | integer | 0 | Only return properties with this price as a minimum. Please note that the min price and max price need to form a valid range |
MaximumPrice | integer | 9999999 | Only return properties with this price as a maximum. Please note that the min price and max price need to form a valid range |
IncludeStc | Boolean | true or false | If true will display SoldSTC properties |
PropertyTypes | Collection of string | ["TerracedHouse"] | Only return properties that have one of these property types. See Appendix A |
MinimumBedrooms | Decimal number | 0 | Only return properties with this number of bedrooms as a minimum. The min and max bedrooms must form a valid range. |
MaximumBedrooms | Decimal number | 99 | Only return properties with this number of bedrooms as a maximum. The min and max bedrooms must form a valid range. |
MinimumGardens | integer | 0 | Only return properties with this number of Gardens as a minimum. The min and max Gardens must form a valid range. |
MaximumGardens | integer | 2 | Only return properties with this number of Gardens as a maximum. The min and max Gardens must form a valid range. |
MinimumParking | integer | 0 | Only return properties with this number of Parking Spaces as a minimum. The min and max Parking Spaces must form a valid range. |
MaximumParking | integer | 2 | Only return properties with this number of Parking Spaces as a maximum. The min and max Parking Spaces must form a valid range. |
MinimumTimeOnMarket | time interval | 00:00:00.1234567 | Only return properties that have been on the market at least this long. HH:MM:SS format. Minimum and Maximum time must form a valid range |
MaximumTimeOnMarket | time interval | 00:00:00.1234567 | Only return properties that have been on the market for less time than this. HH:MM:SS format. Minimum and Maximum time must form a valid range |
Tags | Collection of string | ["new"] | Only return properties that have at least one of these tags. Tags are Customer Defined to add features to specific properties like “swimming pool” or “Garage”. These can be used to add advanced searches to the website. |
The feed will paginate the data with the defaults of 10 properties per page and will return page 1. To change these you will need to pass through the following parameters:
Parameter Name | Type | Example Value | Description |
---|
RoleTypes | Collection of string | ["Selling"] or ["Letting"] | Choose to display just sales or lettings properties. Leave blank to display both |
BranchIdList | Collection of integer | [1] | The branch ID to use in the search. If left blank it will return all branches' properties. |
MinimumPrice | integer | 0 | Only return properties with this price as a minimum. Please note that the min price and max price need to form a valid range |
MaximumPrice | integer | 9999999 | Only return properties with this price as a maximum. Please note that the min price and max price need to form a valid range |
IncludeStc | Boolean | true or false | If true will display SoldSTC properties |
PropertyTypes | Collection of string | ["TerracedHouse"] | Only return properties that have one of these property types. See Appendix A |
MinimumBedrooms | Decimal number | 0 | Only return properties with this number of bedrooms as a minimum. The min and max bedrooms must form a valid range. |
MaximumBedrooms | Decimal number | 99 | Only return properties with this number of bedrooms as a maximum. The min and max bedrooms must form a valid range. |
MinimumGardens | integer | 0 | Only return properties with this number of Gardens as a minimum. The min and max Gardens must form a valid range. |
MaximumGardens | integer | 2 | Only return properties with this number of Gardens as a maximum. The min and max Gardens must form a valid range. |
MinimumParking | integer | 0 | Only return properties with this number of Parking Spaces as a minimum. The min and max Parking Spaces must form a valid range. |
MaximumParking | integer | 2 | Only return properties with this number of Parking Spaces as a maximum. The min and max Parking Spaces must form a valid range. |
MinimumTimeOnMarket | time interval | 00:00:00.1234567 | Only return properties that have been on the market at least this long. HH:MM:SS format. Minimum and Maximum time must form a valid range |
MaximumTimeOnMarket | time interval | 00:00:00.1234567 | Only return properties that have been on the market for less time than this. HH:MM:SS format. Minimum and Maximum time must form a valid range |
Tags | Collection of string | ["new"] | Only return properties that have at least one of these tags. Tags are Customer Defined to add features to specific properties like “swimming pool” or “Garage”. These can be used to add advanced searches to the website. |
Examples
Below is a link to a postman collection with a test API key so you can see how the data is returned from our API.
Download Postman Collection
Property Status
Sometimes, Customer's don't want their STC or Under Offer properties to be advertised as such. You need to look at the "Flags" array, as well as the "RoleStatus" object to establish how a property should be marketed.
The flags to be tested for have a SystemName of "UnderOffer" or "OfferAccepted". This may vary based on client needs.
Document URLs
The URLs for documents (photos, brochures, floor plans, etc.) may contain a random string within the URL, as highlighted below:
Image Manipulation
Images are returned in the JSON collection as URLs, the URL will return a full-sized image, but it is advisable to add a width or height parameter in order to optimise your images for web pages.
Full size:
Width set:
Height set:
Note that you can either set a width or a height, not both.
Additionally, you can set the quality of the images by adding the "quality" parameter. This accepts a value between 1 and 100, with 100 being best quality and 1 being worst quality.
Images will usually come through in the feed with a versioning string, for example:
You will need to query the URL for the presence of this string before deciding whether to add “?&width” or just “&width”, so if there is a string your request would look like this:
Website Links from Rezi
It is not uncommon for Customer's to want to send some correspondence from Rezi that automatically generates links to properties on their website. Rezi can do this if the website has the property RoleID (see appendix B) in the URL structure.
This link is not required to be the main link to properties in the case of SEO purposes, and can just redirect to the necessary page.
Below are some examples of valid links:
Response Data
The Rezi web feed returns property data in a JSON format, when requesting the full details for a property please use the RoleID and not the propertyID (see appendix B).
Please Note not all of the properties that appear in the feed are meant to appear on the customer's website. As the feed can be used for multiple purposes you will need to filter by the flag “ApprovedForMarketingWebsite”. You can do this by using the "MarketingFlags" parameter, and setting it to ["ApprovedForMarketingWebsite"].
For the majority of the information in the feed there will be multiple nodes for each. Most will contain a system name and a display name. The System name is used for filtering by while the Display name is used for populating the website.
Node | Meaning |
---|
TotalCount | Total number of properties that match search criteria. |
CurrentCount | The number of properties returned in the current “page”. |
PageSize | The maximum number of properties to return in a page. |
PageNumber | The current page number. |
Collection | The collection of all properties that match the search results. |
Term | Term length. E.g. SixMonths (Lettings Only). |
ServiceLevel | The customer’s agreement with the landlord e.g FullyManaged or TenantFind (Lettings Only). |
AvailableDate | When a property is available from (Lettings Only). |
LetType | Not Currently in Use (Lettings Only). |
RoleID | This is the unique identifier for each property marketing role. See appendix B for the difference between this and the PropertyID. |
PropertyID | This is the unique identifier for a property, you would normally use the RoleID rather than this. |
PropertyStyle | Not Currently Used – see Style and Age under the Descriptions node. |
Address | Made up of several nodes that contain specific address details including the latlong for google maps. |
RoomCountsDescription | Contains room counts for the property, including Bedrooms, Bathrooms and Receptions. |
AmenityDescription | Counts for exterior amenities such as Gardens and Garages. |
FloodErosionDescription | Information on any flood risks for the property. |
RightsRestrictionsDescription | Information on any legal obligations applicable to the property. |
BranchDetails | Contains data regarding the “owning” branch of the property. |
PropertyType | Chosen from a pre-defined list found in appendix A of this document. |
Tags | Customers can create their own tags in Rezi and assign them to properties. These can be included in the search filters to create custom property collections on the website. |
Images | Collection of property images, you only really need the URL and image order from here. Be careful with IsPrimaryImage as setting this value is optional within Rezi. |
SummaryTextDescription | The property’s Summary Text for use in lists of properties. |
RoleType | Whether the property is a Selling Role or a Letting Role. |
Flags | Key marketing flags for the property, these may override the Rolestatus – for instance RoleStatus might be OfferAccepted but you would only show the property as STC if the flag was set for STC. |
RoleStatus | The current status of the property (Valued, Write up etc). |
EPC | Contains EPC information for the property. |
DateInstructed | The date the property was instructed. |
LastUpdated | The date the property was last updated in Rezi. If you are harvesting data, use this to trigger a call to get the latest property information. |
ClosingDate | Scottish Market only, closing date for notes of interest. |
Price | Contains information about the property price. PriceQualifierType contains pre-defined values such GuidePrice or OffersInExcessOf while PriceText is a free text box in the Rezi front end. |
Deposit | Deposit Information (Lettings Only). |
Viewpoints | Contains co-ordinates for setting the property’s street view on a google map. |
OwningTeam | Contains information regarding the “owning” negotiator of the property. |
Documents | Contains information regarding any documents attached to the property, this includes Floorplans, EPCs, Brochures, etc. DocumentType and DocumentSubType are important here for deciding how to display each document. |
Fees | The fee agreed with the property owner. |
Descriptions | Contains the property descriptions, including Main Marketing text and room information. This is where you’ll see things like Floorplan and RoomDimensions (these are optional).
|
Full Details Response Data
The Full Details Response will include all the collection data listed above with the following additions.
Node | Meaning |
---|
Features | A collection of “Key Feature” bullet points, this is a child of the description node. Please note the order number value as this the order the Customer wishes them to be displayed in.
|
Inbound leads functionality
The Inbound Leads end points allows you to send customer enquiries to a Rezi endpoint via a HTTP POST with a JSON body so that they are made available to the customer within the Rezi Software – e.g. Viewing Requests, Valuation Request. The leads are processed by our endpoint in real time so information submitted through your website should be available in Rezi almost straight away.
Request Url
Important: You must supply the relevant BranchId for this request as a query parameter. If you do not know your Branch ID's, please contact our Support Team who will be able to advise.
The following headers will need to be set to successfully send data:
Header Name | Value |
---|
Rezi-Api-Version | 1.0 |
Content-Type | application/json |
The following will need to be included in the JSON body:
Parameter Name | Type | Example Value | Description |
---|
RequestType | Object | {"SystemName":"General"} | The type of request. Can be "Viewing", "Valuation", "PhoneCall", "BrochureRequest", "GenerateContact" or "General". |
SourceType | Object | {"SystemName":"Website"} | The source of the request. Should either be "Website" or "ThirdPartyApp". |
People | Collection of Objects | [{"Title":"Mr", "FirstName":"Joe", "LastName":"Bloggs"}] | The names of the enquirer(s) involved. There can be multiple people, but only one is required. Title is not required. |
Email | String | "[email protected]" | The enquirer’s email address. |
PhonePrimary | String | "0845 465 22 22" | The enquirer’s phone number. |
DateSubmitted | Date | "2017-06-15T11:34:23Z" | This should be the current time. |
The following may be required depending on the RequestType:
Parameter Name | Type | Example Value | Description |
---|
Address | String | "Ethos Building, Swansea" | The address of the property. Required for Valuation requests. |
PropertyMarketingRoleIds | Collection of Integers | [1,2,3] | The role IDs of the relevant properties. Required on viewing, phonecall, brochure, and contact requests.
|
The following parameters are optional:
Parameter Name | Type | Example Value | Description |
---|
Postcode | String | "SA1 8AS" | The postcode of the property. |
Country | String | "United Kingdom" | The country of the property. |
PhoneMobile | String | "07980123456" | A mobile number associated with the enquirer. |
PhoneOther | String | "01792610000" | An alternative number associated with the enquirer. |
PropertyToSell | Boolean | true/false | If the enquirer has a property to sell. |
PropertyToRent | Boolean | true/false | If the enquirer has a property to rent. |
Comment | String | (empty) | A supporting comment to go along with the request. |
FinancialAdvice | Boolean | true/false | Whether the enquirer requires financial advice or not. |
PartExchange | Boolean | true/false | Whether the enquirer has a property to part exchange. |
BranchId | Integer | 7601 | The branch that this leads relates to.
|
Examples
Below is a link to a postman collection with a test API key so you can see how the data is returned from our API.
Download Postman Collection
Appendix A - Property types
Display Name | System Name |
---|
Terraced House | TerracedHouse |
End of Terrace House | EndofTerraceHouse |
Semi Detached House | SemiDetachedHouse |
Detached House | DetachedHouse |
Flat | Flat |
Ground Floor Flat | GroundFloorFlat |
Apartment | Apartment |
Terraced Bungalow | TerracedBungalow |
Semi Detached Bungalow | SemiDetachedBungalow |
Detached Bungalow | DetachedBungalow |
Cottage | Cottage |
Town House | TownHouse |
Country House | CountryHouse |
Chalet | Chalet |
Barn Conversion | BarnConversion |
Mews House | MewsHouse |
Ground Floor Maisonette | GroundFloorMaisonette |
Maisonette | Maisonette |
Penthouse | Penthouse |
Plot | Plot |
Commercial Property | CommercialProperty |
Cluster House | ClusterHouse |
Detached Villa | DetachedVilla |
Villa | Villa |
Semi Detached Villa | SemiDetachedVilla |
Village House | VillageHouse |
Link Detached House | LinkDetachedHouse |
Studio Flat | StudioFlat |
Land | Land |
Retirement Property | RetirementProperty |
Park Home | ParkHome |
Commercial Land | CommercialLand |
Equestrian Facility | EquestrianFacility |
Farm Land | FarmLand |
Farm | Farm |
Small Holding | Smallholding |
Coach House | CoachHouse |
Bungalow | Bungalow |
Not Specified | NotSpecified |
Mobile Home | MobileHome |
Character Property | CharacterProperty |
House (unspecified) | HouseUnspecified |
Finca | Finca |
Serviced Apartment | ServicedApartment |
Parking | Parking |
Sheltered Housing | ShelteredHousing |
House Share | HouseShare |
Flat Share | FlatShare |
Garage | Garage |
Farm House | FarmHouse |
Duplex | Duplex |
Triplex | Triplex |
Longere | Longere |
Gite | Gite |
Trulli | Trulli |
Mill | Mill |
Ruins | Ruins |
Restaurant | Restaurant |
Cafe | Cafe |
Commercial Mill | CommercialMill |
Castle | Castle |
Cave House | CaveHouse |
Cortijo | Cortijo |
Caravan | Caravan |
Lodge | Lodge |
Log Cabin | LogCabin |
Manor House | ManorHouse |
Stately Home | StatelyHome |
Off Plan | OffPlan |
Bar/Nightclub | BarNightclub |
Shop | Shop |
Riad | Riad |
House Boat | HouseBoat |
Hotel Room | HotelRoom |
Block of Apartments | BlockofApartments |
Private Hall | PrivateHall |
Office | Office |
Business Park | BusinessPark |
Serviced Office | ServicedOffice |
Retail Property (High Street) | HighStreetRetailProperty |
Retail Property (Out of Town) | OutofTownRetailProperty |
Convenience Store | ConvenienceStore |
Commercial Garage | CommercialGarage |
Hairdresser/Barber Shop | HairdresserShop |
Hotel | Hotel |
Petrol Stations | PetrolStation |
Post Office | PostOffice |
Pub | Pub |
Workshop & Retail Space | WorkshopRetailSpace |
Distribution Warehouse | DistributionWarehouse |
Factory | Factory |
Heavy Industrial | HeavyIndustrial |
Industrial Park | IndustrialPark |
Light Industrial | LightIndustrial |
Storage | Storage |
Showroom | Showroom |
Warehouse | Warehouse |
Commercial Development | CommercialDevelopment |
Industrial Development | IndustrialDevelopment |
Residential Development | ResidentialDevelopment |
Data Centre | DataCentre |
Healthcare Facility | HealthcareFacility |
Marine Property | MarineProperty |
Mixed Use | MixedUse |
Research & Development Facility | ResearchDevelopmentFacility |
Science Park | SciencePark |
Guest House | GuestHouse |
Hospitality | Hospitality |
Leisure Facility | LeisureFacility |
Takeaway | Takeaway |
Childcare Facility | ChildcareFacility |
Place of Worship | PlaceofWorship |
Trade Counter | TradeCounter |
House of Multiple Occupation | HouseofMultipleOccupation |
Sports Facilities | SportsFacilities |
Spa | Spa |
Campsite & Holiday Village | CampsiteHolidayVillage |
Barn | Barn |
Stone House | StoneHouse |
Appendix B – A brief explanation of RoleIDs
You will notice while working with the Rezi API that Rezi has two IDs assigned to properties in the data collection; a PropertyID and a RoleID and for the purposes of marketing properties from Rezi the RoleID is more important that the PropertyID.
A property in Rezi is partly defined by it’s address and when a property’s details are added to Rezi it is assigned a PropertyID. This PropertyID is unique and in theory there will not be another PropertyID with that address within that Customer’s Rezi data.
So how does Rezi handle multiple marketing cycles where a property is sold and sold again by the same customer or Let and Let again?
Well, that’s where RoleIDs come in to play. When a property is instructed it gets a RoleID, this unique ID represents a marketing cycle and is a child of the PropertyID. So one PropertyID can have multiple RoleIDs representing multiple marketing cycles. Some might be historic, but there are situations where a property might have multiple active marketing cycles – for example if it is being advertised for sale and for let.
Because there are instances where a collection might include a PropertyID twice – once for Sales and once for Lettings we strongly advise always using the RoleID to identify the properties you are working with and not the PropertyID.
Appendix C - Coordinates
We cannot guarantee the quality of the coordinates stored against a property. The information is initially obtained from the post office based on the postcode entered by the customer. The customer then has the ability to adjust the location and street-view within Rezi.