# Listings API

The Listing API has been designed to cover two common scenarios:

  • Get listings from KPro Marketing to publish them in another portal.
  • Publish listings in Keaze and Homes for Londoners portals without having to create and maintain the inventory and the listings in KPro Marketing.

# On this page

# Get listings

To get all the live listings (listings ready to be published), send a GET to /api/rest/open/listings.

To get all listings, no matter their visibility (draft or live), send a GET to /api/rest/open/listings/all.

You need to pass the QueryString parameter api_key with your API key to get access to the resources.

# Payload

In both cases all responses are JSON encoded, and as they are paginated, the data is contained into an envelope:

{
  "data": [items],
  "pagination": {
    "currentPage": 2, // current page number
    "perPage": 10,    // number of items to be shown per page
    "total": 212,     // total number of items
    "from": 11,       // number of the first item in the result
    "to": 20,         // number of the last item in the result  
    "lastPage": 23,   // last page number
  },
  "links": {
    "first": "url to the first page",
    "prev": "url to the previous page",
    "next": "url to the next page",
    "last": "url to the last page",
  }
}

where items is the collection of listings.

Info

Listings can advertise a single property or a development. In the first case the details about the property are returned in the field property, but to get all the properties for the second case, it is necessary to issue a second request. Check the value of the field singleProperty to identify how many properties the listing is advertising.

The payload for every listing is the same in both cases, but in the second one the field propertyDetails will be null.

Although property payloads contains detailed information about the properties being advertised, for most portals, all relevant information to publish a listing is in the listing payload itself, and it is not necessary to use the property details.

# Listing fields

For a better understanding of the fields returned for listings, they have been divided in different sections.

The field detailsPerBedroom is an array with one entry per each different amount the bedroom the properties being advertised have. Each entry will return fields with the best prices for the corresponding bedrooms. Listings also have fields for best prices in general.

Some fields are redundant, but it could help reducing computation on the API consumer side.

As KPro Marketing deals with different schemes, some fields only have meaning for some specific schemes. Take a look to the section Understanding prices fields to know how to use all the fields returned.

Field name Type Nullable Description
General
id number false Keaze Reference Id.
externalRef string true External reference provided by the client.
name string false Listing name to display.
singleProperty boolean false true when the listing is advertising a single property.
propertyDetails object true Object containing the property details when the listing is single property.
schemeGroup object false Object that contains details about the schemes for the listing. Listings usually are related to a single scheme, but sometimes they can be related to more than one, like Help to Buy and First Dibs. The object has fields for the group of schemes and also the collection of all single schemes. Check the list of all possible scheme groups.
availabilityStatus object false Object that contains the code & name of the availability status. Regardless the occupancy type, there are only four possible values. Codes don't depend on the occupancy type, but names do. Codes are: coming-soon, available, under-offer & closed.
visibility string false draft or live
contactEmail string true Contact e-mail home seekers can write to if interested in the listing.
contactPhone string true Contact telephone number
defaultNotificationEmail string true Default notification e-mail where automatic e-mails can be sent about leads.
galleryImages array true Array that contains the image gallery. Every item contains urls for different view ports: largeSize (1080px width), mediumSize (720px width) & thumbnail (360px width), as well as two more fields that could be empty: alternativeText and caption. All images match the aspect ratio 16x9.
videos array true Array that contains videos urls and some extra details like the embedded iframe code and the thumbnail image. For some videos there are not available thumbnail images.
brochures array true Array that contains urls to brochures as pdf files.
Address
displayAddress string false The address to display in the listing. The address doesn't contain the postcode.
postcode string true UK postcode for the listing.
localAuthority object true Object with details of local authority, consisting in local authority name, county name and region name.
latitude number false The latitude where the listing is.
longitude number false The longitude where the listing is.
mapImageUrl string false Map image url with a pin indicating the position of the property, useful if you want to display an image instead of calling Google Map or a similar map service.
Descriptions
shortDescription string true Listing summary.
longDescription string true The full description of the listing.
localAreaName string true Name of the local area.
localAreaDescription string true Description of the local area.
specifications array true Array of objects, where each one contains three fields: name, description and imageUrls
termsAndConditions string true Terms and conditions.
disclaimer string true Disclaimer.
keyFeatures array true Array of free text key features.
Premises details
newBuild boolean false true is the listing if for new build properties.
propertyType object false An object with two fields: name and group. The second one could be Flat or House, while the first one is a more specific property type name, like Terrace or Bungalow. See all the property type values
detailsPerBedroom array false An array containing details per each bedroom the listing has.
bedrooms array false An array containing the different amount of bedrooms of the listing properties.
bathrooms array true An array containing the different amount of bathrooms of the listing properties.
receptionRooms array true An array containing the different amount of reception rooms of the listing properties.
furnitureStatus array true An array containing the different furniture status of the listing properties. Possible values are: unfurnished, part-furnished & furnished.
tenure string false Condition on which a property is held: leasehold or freehold.
propertyFeatures array false Array of objects describing all property features. Every object has two fields: section (text with the property feature section, e.g.: Parking ) & values (an array of string, containing all the property features for the section).
forSale boolean false The listing is for sale, otherwise is to rent.
For sale
fullMarketPrice number true The minimum full market price.
depositPercentage number true The deposit percentage for the minimum full market price.
depositValue number true The deposit value computed from fullMarketPrice and depositPercentage.
isSharedOwnership boolean false The listing scheme is shared ownership, so there's a share to buy and the rest to rent.
minSharePercentage number true The minimum share percentage if isSharedOwnership.
minShareValue number true The minimum share value if isSharedOwnership, computed from fullMarketPrice and minSharePercentage
subsidisedMonthlyRent number true The minimum amount to pay for rent of the part doesn't own when isSharedOwnership.
maxGovernmentLoanPercent number true Depending on the scheme, eligible buyers could receive a government loan. In such a case, this value is the maximum government loan percent.
maxGovernmentLoanValue number true The maximum government loan value, computed from fullMarketPrice and maxGovernmentLoanPercent
monthlyServiceCharge number true Monthly bill that covers the costs of any repairs or maintenance to the structure of the building, including drainage, insurance and management charges.
annualGroundRent number true Rent to pay annually to the freeholder or landlord of the leasehold property.
reservationFee number true Reservation fee to a developer that allows a buyer to reserve a property for a period.
To rent
monthlyRent number true Monthly rent.
weeklyRent number true Weekly rent, computed from monthlyRent.
rentalDeposit number true Rental deposit value.
minTenancyMonths number true Minimum tenancy term in months.
maxTenancyMonths number true Maximum tenancy term in months.
Both: For sale & To rent
administrationFee number true Fee charged by an agency to cover expenses related to record-keeping and/or other.
Timestamps
createdAt string false Date-time when the listing was created.
updatedAt string false Last date-time when the listing was updated.

# Details per bedroom

Field name Type Nullable Description
bedrooms number false Total number of bedrooms.
bathrooms number false Total number of bathrooms.
receptionRooms number true Total number of reception rooms.
furnitureStatus string true unfurnished, part-furnished or furnished.
fullMarketPrice number true The minimum full price.
depositPercentage number true The minimum deposit percentage.
depositValue number true The minimum deposit value. Computed from previous fields.
minSharePercentage number true The minimum share percentage if isSharedOwnership.
minShareValue number true The minimum share value if isSharedOwnership. Computed from previous fields.
subsidisedMonthlyRent number true The minimum amount to pay for rent of the part you don't own when isSharedOwnership.
subsidisedAsYearlyPercent boolean false When it is shared ownership, subsidised rent can be entered as a monthly value (false) or as a yearly percent (true).
subsidisedMonthlyRent number true The minimum amount to pay for rent of the part you don't own when isSharedOwnership. Computed from previous fields.
monthlyServiceCharge number true Monthly bill that covers the costs of any repairs or maintenance to the structure of the building, including drainage, insurance and management charges.
annualGroundRent number true Rent to pay annually to the freeholder or landlord of the leasehold property.
reservationFee number true Reservation fee to a developer that allows a buyer to reserve a property for a period.
monthlyRent number true Monthly rent.
weeklyRent number true Weekly rent. Computed from monthlyRent.
rentalDeposit number true Rental deposit value.
minTenancyMonths number true Minimum tenancy term in months.
maxTenancyMonths number true Maximum tenancy term in months.
administrationFee number true Fee charged by an agency to cover expenses related to record-keeping and/or other.

# Filtering

The API provides several fields that can be used to filter the results:

  • createdAt: the timestamp when the listing was created.
  • updatedAt: the last timestamp when the listing was updated.
  • name: listing name
  • newBuild: if the listing is new build or not
  • availabilityStatus.name: name of the availability status
  • availabilityStatus.code: code of the availability status
  • schemeGroup.slug: slug of the scheme group
  • schemeGroup.name: name of the scheme group

and several operators to be used in conjunction with the fields:

  • not: not equal
  • gt: greater than (for numbers, date and timestamps)
  • lt: less than (for numbers, date and timestamps)
  • gte: greater than or equal to (for numbers, date and timestamps)
  • lte: less than or equal to (for numbers, date and timestamps)
  • ltt: less than tomorrow's date, useful for datetime or timestamp fields when the filter value is a date without the time component
  • in: in a list of values separated by commas
  • notin: not in a list of values separated by commas
  • like: standard like operator, use * for any amount of chars and _ for a single one
  • regex: regular expression

Operators should be placed after the fields, separated by a dot (.). When multiple filters are specified, the AND logic operator will be used (except when using square brackets at the end of the parameter name to replace in and notin operators). When no operator is specified for a filter, the usual equal comparison is applied.

In order to filter dates and timestamps, use the ISO date format YYYY-MM-DD for dates, and if you want to include hours and minutes, use YYYY-MM-DD HH:mm. Notice that in all cases, UTC date/time is used.

Examples

  • To get listings updated after 20-Mar-2021 10:00:

/api/rest/open/listings?updatedAt.gte=2021-03-20 10:00

  • To get only Shared ownership listings:

/api/rest/open/listings?schemeGroup.slug=shared-ownership

# Bracket option

Brackets can be used instead of values separated by commas to replace the operators in and notin.

Examples

  • schemeGroup.slug[]=shared-owership&schemeGroup.slug[]=help-to-buy is the same as schemeGroup.slug.in=shared-ownership,help-to-buy
  • schemeGroup.slug.not[]=shared-owership&schemeGroup.slug.not[]=help-to-buy is the same as schemeGroup.slug.notin=shared-ownership,help-to-buy

# Sorting

By default results are sorting by name, but you can change it by using parameter sort and the field you want to sort by, separated by comma, as the value. Fields are sorted ascending, but you use the minus symbol (-) in front of any of fields to change the order to descending.

Example, to sort first by updatedAt descending, and then by name ascending, use: sort=-updatedAt,name

# Pagination

Results are paginated based on parameters page (page number, optional, default is 1) and size (maximum number of records to return per page, optional, default is 50, maximum possible value is 1000).

# Get a specific listing

To get only one listing, send a GET to /api/rest/open/listings/{listing.id}, where listing.id is the id reference in KPro Marketing.

The payload is the same as when requesting the collection of listings.

# Example

{
  "id": 1234,
  "externalRef": "BrickStreetResale",
  "name": "Brick street Resale",
  "singleProperty": true,
  "propertyDetails": {
      "propertyType": {
        "name": "Flat",
        "group": "Flat"
      },
      "availabilityStatus": {
        "code": "available",
        "name": "For sale"
      },
      "active": true,
      "newBuild": false,
      "propertyNumber": "",
      "name": "Brick street - Resale",
      "handoverDate": null,
      "useDevelopmentAddress": false,
      "building": "",
      "street": "Brick Street",
      "town": "London",
      "postcode": "E1 6QL",
      "localAuthority": null,
      "address": "Brick Lane, London, E1 6QL",
      "bedrooms": 2,
      "bathrooms": 1,
      "receptionRooms": 1,
      "furnitureStatus": "furnished",
      "floorArea": null,
      "numberOfFloors": 1,
      "floor": {
        "code": "ground",
        "name": "Ground floor"
      },
      "tenure": "leasehold",
      "leaseYears": 99,
      "leaseStartDate": "2021-01-25",
      "energyEfficiencyRatingCurrent": 87,
      "energyEfficiencyRatingPotential": 93,
      "environmentalImpactRatingCurrent": 89,
      "environmentalImpactRatingPotential": 91,
      "kid": [
        {
            "url": "https://static.keaze.co.uk/assets/plots/5646/kids/sample.pdf",
            "source": "https://yourserver.com/pdfs/4534/sample.pdf",
            "caption": "Important document"
        }
      ],
      "forSale": true,
      "fullMarketPrice": 270000,
      "depositPercentage": 5,
      "depositValue": 3375,
      "minSharePercentage": 25,
      "maxSharePercentage": 75,
      "minShareValue": 67500,
      "subsidisedRent": 312,
      "subsidisedAsYearlyPercent": false,
      "subsidisedMonthlyRent": 312,
      "monthlyServiceCharge": 177.33,
      "annualGroundRent": null,
      "reservationFee": null,
      "administrationFee": null,
      "rentalDeposit": null,
      "monthlyRent": null,
      "weeklyRent": null,
      "minTenancyMonths": null,
      "maxTenancyMonths": null,
      "maxGovernmentLoanPercent": null,
      "maxGovernmentLoanValue": null,
      "fullSpecifications": "",
      "features": [
        {
        "name": "Off street parking",
        "section": "Parking"
        }
      ],
      "keyFeatures": [],
      "floorplanImages": [ ],
      "updatedAt": "2021-03-29T15:55:58+00:00",
      "createdAt": "2020-10-30T15:13:17+00:00"
      },
  "schemeGroup": {
    "slug": "shared-ownership",
    "name": "Shared ownership",
    "forSale": true,
    "schemes": [
      {
        "slug": "shared-ownership",
        "name": "Shared ownership"
      }
    ]
  },
  "availabilityStatus": {
    "code": "available",
    "name": "For sale"
  },
  "visibility": "live",
  "contactEmail": "info@housing-provider.co.uk",
  "contactPhone": "+44 7345-762-392",
  "defaultNotificationEmail": null,
  "galleryImages": [
    {
      "alternativeText": "",
      "caption": "",
      "main": true,
      "thumbnail": "https://static.propertybooking.co.uk/assets/developments/9471/gallery/360/flat-16-8-crabapple-road-1.jpg",
      "mediumSize": "https://static.propertybooking.co.uk/assets/developments/9471/gallery/720/flat-16-8-crabapple-road-1.jpg",
      "largeSize": "https://static.propertybooking.co.uk/assets/developments/9471/gallery/1080/flat-16-8-crabapple-road-1.jpg"
    },
    {
      "alternativeText": "",
      "caption": "",
      "main": false,
      "thumbnail": "https://static.propertybooking.co.uk/assets/developments/9471/gallery/360/flat-16-8-crabapple-road-3.jpg",
      "mediumSize": "https://static.propertybooking.co.uk/assets/developments/9471/gallery/720/flat-16-8-crabapple-road-3.jpg",
      "largeSize": "https://static.propertybooking.co.uk/assets/developments/9471/gallery/1080/flat-16-8-crabapple-road-3.jpg"
    }
  ],
  "logo": null,
  "videos": [
    {
      "caption": "",
      "url": "https://youtu.be/3hR6JH19yWE",
      "extraDetails": {
        "type": "youtube",
        "title": "Flat Tour",
        "videoId": "3hR6JH19yWE",
        "embedCode": "<iframe src='https://www.youtube.com/embed/3hR6JH19yWE' id='youtubeIframe' class='embed-responsive-item' frameborder='0' allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture' allowfullscreen></iframe>",
        "thumbnailUrl": "https://img.youtube.com/vi/3hR6JH19yWE/mqdefault.jpg",
        "metaInformation": null
      }
    }
  ],
  "brochures": [ ],
  "displayAddress": "Crabapple Road, Tonbridge",
  "postcode": "TN9 1FT",
  "localAuthority": null,
  "latitude": 51.1967418,
  "longitude": 0.2823028,
  "mapImageUrl": "http://api.test/assets/developments/9471/map.png",
  "shortDescription": "We are pleased to present to the market this two bedroom...",
  "longDescription": "<p>We are pleased to present to the market this two bedroom...</p>",
  "localAreaName": "",
  "localAreaDescription": "<p>There is a wealth of retail outlets within a few minutes' walk ...</p>",
  "termsAndConditions": "",
  "disclaimer": "",
  "keyFeatures": ["Great location", "Excellent Transport Links", "Lots to do nearby"],
  "specifications": [],
  "newBuild": false,
  "propertyType": {
    "name": "Flat",
    "group": "Flat"
  },
  "detailsPerBedroom": [
    {
    "bedrooms": 2,
    "bathrooms": 1,
    "receptionRooms": 1,
    "furnitureStatus": "furnished",
    "fullMarketPrice": 270000,
    "depositPercentage": 5,
    "minSharePercentage": 25,
    "subsidisedRent": 312,
    "subsidisedAsYearlyPercent": false,
    "subsidisedMonthlyRent": 312,
    "monthlyServiceCharge": 177.33,
    "annualGroundRent": null,
    "reservationFee": null,
    "administrationFee": null,
    "rentalDeposit": null,
    "monthlyRent": null,
    "minTenancyMonths": null,
    "maxTenancyMonths": null
    }
  ],
  "bedrooms": [2],
  "bathrooms": [1],
  "receptionRooms": [1],
  "furnitureStatus": ["furnished"],
  "tenure": "leasehold",
  "propertyFeatures": [
    {
      "section": "Parking",
      "values": [
        "Off street parking"
      ]
    }
  ],
  "forSale": true,
  "isSharedOwnership": true,
  "fullMarketPrice": 270000,
  "depositValue": 3375,
  "minSharePercentage": 25,
  "minShareValue": 67500,
  "subsidisedMonthlyRent": 312,
  "maxGovernmentLoanPercent": null,
  "maxGovernmentLoanValue": null,
  "monthlyServiceCharge": 177.33,
  "annualGroundRent": null,
  "reservationFee": null,
  "monthlyRent": null,
  "weeklyRent": null,
  "rentalDeposit": null,
  "minTenancyMonths": null,
  "maxTenancyMonths": null,
  "administrationFee": null,
  "updatedAt": "2021-03-29T15:56:48+00:00",
  "createdAt": "2020-10-30T15:13:17+00:00"
}

# Get listing properties

When the listing is a development listing, send a GET to /api/rest/open/listings/{listing.id}/properties to get all the properties advertised by the listing.

Unlike the listing collection payload, this one is not paginated, but it will be a JSON object with the field data, which is an array containing all the properties.

{
  "data": [items]
}

# Property details fields

Info

Some fields match the ones in Listing details, and in many cases they are interpreted the same, but some as bedrooms, bathrooms and receptionRooms are not. In property details they are considered as numbers, while in listings they are array of numbers.

Field name Type Nullable Description
id number false Reference Id.
propertyNumber string true Number to identify the property.
name string true Name to identify the property when it is an independent unit.
propertyType object false An object with two fields: name and group. The second one could be Flat or House, while the first one is a more specific property type name, like Terrace or Bungalow. See all the property type values
availabilityStatus object false Object that contains the code & name of the availability status. Regardless the occupancy type, there are only four possible values. Codes don't depend on the occupancy type, but names do. Codes are: coming-soon, available, under-offer & closed, and they can be used to associate colours to each status.
fullSpecifications string true A full description of the property.
floorplanImages array No Collection of floorplan images. Every item has 4 fields: url is the url in KPro Marketing servers, and source is the url where the image was uploaded from if it was added via API. alt is the alternative text for the html image and caption is an optional caption you would like to display in some portals.
forSale boolean false The property is for sale, otherwise is to rent.
Premises details
newBuild boolean false true if the property is new build. Development properties are always new-build
bedrooms number false Total number of bedrooms.
bathrooms number false Total number of bathrooms.
receptionRooms number true Total number of reception rooms.
furnitureStatus string true unfurnished, part-furnished or furnished.
floorArea number true Floor area in square meters.
numberOfFloors number true Total number of floors the property has.
floor object true Entrance floor. Object containing: name, code and level. name is a readable text that usually ends with the word floor, like Ground floor or Basement, code is the internal code managed by KPro Marketing, while level is the corresponding level number for the floor that can be used for sorting purposes, example 0 for Ground floor, -2 for Basement and 3 for 3rd floor. for sorting purposes
liftProvided boolean true Lift provided
tenure string false Condition on which a property is held: leasehold or freehold.
leaseYears number true When the tenure is leasehold, the number of years the lease lasts.
leaseStartDate string true Date when the lease started, if applicable, useful to calculate the remaining lease in years.
propertyFeatures array false Array of objects describing all property features. Every object has two fields: section (text with the property feature section, e.g.: Parking ) & values (an array of string, containing all the property features for the section).
rooms array false Collection of property rooms. Every item has: name, additionalDetails, units (foot or metre), width, length and floorArea. Name and additional details are free texts, up to 255 chars length, while width, length and floorArea are numbers expressed in the provided units. Only name and units are required.
energyEfficiencyRatingCurrent number false Integer number less or equal than 100, that reflects the Energy rating for the property. When it's a new build property, this value will be the Predicted energy rating, otherwise it will be the Current energy rating
energyEfficiencyRatingPotential number false Integer number less or equal than 100, that reflects the Potential energy rating for resale properties (not new build).
environmentalImpactRatingCurrent number false Integer number less or equal than 100, that reflects the Environmental impact rating for the property. When it's a new build property, this value will be the Predicted environmental impact rating, otherwise it will be the Current environmental impact rating
environmentalImpactRatingPotential number false Integer number less or equal than 100, that reflects the Potential environmental impact rating for resale properties (not new build).
kid array true Collection of key important documents. Every item has 3 fields: url is the url in KPro Marketing servers, and source is the url where the file was uploaded from if it was added via API. caption is an optional caption you would like to display in some portals.
keyFeatures array true Array of free text key features.
For sale
fullMarketPrice number true The minimum full price.
depositPercentage number true The minimum deposit percentage.
depositValue number true The minimum deposit value. Computed from previous fields.
isSharedOwnership boolean false The property scheme is shared ownership, so there's a share to buy and the rest to rent.
minSharePercentage number true The minimum share percentage if isSharedOwnership.
minShareValue number true The minimum share value if isSharedOwnership. Computed from previous fields.
maxSharePercentage number Yes The maximum share percentage if isSharedOwnership.
subsidisedMonthlyRent number true The minimum amount to pay for rent of the part you don't own when isSharedOwnership.
subsidisedAsYearlyPercent boolean false Subsidised rent can be entered as a monthly value (false) or as a yearly percent (true)
subsidisedMonthlyRent number true The minimum amount to pay for rent of the part you don't own when isSharedOwnership. It is computed from previous fields.
maxGovernmentLoanPercent number true Depending on the scheme, eligible buyers could receive a government loan. In such a case, this value is the maximum government loan percent.
maxGovernmentLoanValue number true The maximum government loan value.
monthlyServiceCharge number true Monthly bill that covers the costs of any repairs or maintenance to the structure of the building, including drainage, insurance and management charges.
annualGroundRent number true Rent to pay annually to the freeholder or landlord of the leasehold property.
reservationFee number true Reservation fee to a developer that allows a buyer to reserve a property for a period.
To rent
monthlyRent number true Monthly rent.
weeklyRent number true Weekly rent. Computed from monthlyRent.
rentalDeposit number true Rental deposit value.
minTenancyMonths number true Minimum tenancy term in months.
maxTenancyMonths number true Maximum tenancy term in months.
Both: For sale & To rent
administrationFee number true Fee charged by an agency to cover expenses related to record-keeping and/or other.

# Understanding prices fields

Although listing and property payloads contains all available price fields, their use depends on the occupancy type and the schemes.

Warning

Some or even all the relevant price fields could be null. In those cases those values should be treated as TBA (To be announced).

There are two different occupancy types: For sale or To rent. The listing and property details always contain the field forSale, which will be true when the occupancy type is For sale, otherwise is To rent.

# For sale fields

There are basically three different cases for sale properties, regarding the price fields:

  • Standard: There is a fullMarketPrice, and to buy the property, it is necessary to pay a depositValue.
  • Shared ownership: There is a share to buy and the rest to rent. The minimum share to buy is returned in the field minSharePercentage and the amount (computed from the full market price) is returned in minShareValue. The monthly rent for the rest is returned in the field subsidisedMonthlyRent. The depositValue is usually lower, because it's computed against the price for the share to buy.
  • The buyer can receive a government loan: It behaves like the Standard case, but field maxGovernmentLoanPercent will contain the percent of the government loan (usually 20 or 40, depending if the property is in London or not), and maxGovernmentLoanValue the amount it represents out of the fullMarketPrice.

When it has the behavior of Shared ownership, the flag isSharedOwnership will be true.

When buyers could receive a government loan, and fullMarketPrice is null, maxGovernmentLoanValue will be also null.

There are other fields that do not depend on the schemes, like:

  • monthlyServiceCharge: Monthly bill that covers the costs of any repairs or maintenance to the structure of the building, including drainage, insurance and management charges.
  • annualGroundRent: Rent to pay annually to the freeholder or landlord of the leasehold property. Notice this field only make sense when tenure is leasehold.
  • reservationFee: Reservation fee to a developer that allows a buyer to reserve a property for a period.
  • administrationFee: Fee charged by an agency to cover expenses related to record-keeping and/or other.

# To rent fields

There is no different cases for properties to rent.

The most important value is monthlyRent, but sometimes is a good idea to display the weeklyRent too, which is a computed value. rentalDeposit, minTenancyMonths and maxTenancyMonths are sometimes specified by the housing providers, although it is not common.

administrationFee is the other relevant field for properties to rent.

# Create and update listings in KPro Marketing

There are three different endpoints to keep your listings updated in KPro Marketing.

Add a new listing

POST /api/rest/open/listings

Update an existing listing

PUT /api/rest/open/listings/{listing.id}

Archive a listing

PATCH /api/rest/open/listings/{listing.id}/archive

The payload to add or update a listing are the same, although when using to update a listing, only fields provided are updated.

Info

When creating new listings by issuing a POST request, the system won't allow duplicate names for non-archived listings that share the same scheme group. This rule will prevent adding duplicate listings if the POST request is issued more than once in error. If you want to bypass this rule and add a new listing, even when there's another one with the same name and scheme, add the query string parameter allow_duplication with value 1 to the request.

POST /api/rest/open/listings?allow_duplication=1&api_key=...

There are two types of listings: development listing and single-property listing. The type of listing is determined by inspecting the existence of the field properties, which must be only sent when it is a development listing.

There are also other differences which will be explained in the listing request payload.

Info

When creating listings through the API, the corresponding entries in the inventory are created, although they are updated using the listings payload. For development listings, a new development is created and all the properties of the listing are assigned to the development, which name will match the listing's. For single-property listings, a new independent unit will be also created.

# Listing request payload

Field name Type Mandatory Description
name string Listing name to display.
externalRef string External reference provided by the client.
schemeGroup string Scheme group under the properties in the listings are sold or rented.
visibility string draft or live
contactEmail string Contact e-mail
contactPhone string Contact telephone number
defaultNotificationEmail string Default notification e-mail
displayAddress string The address to display in the listing. The address does not contain the postcode.
latitude number The latitude where the listing is.
longitude number The longitude where the listing is.
shortDescription string Summary of the listing.
longDescription string The full description of the listing.
localAreaName string Name of the local area.
localAreaDescription string Description of the local area.
termsAndConditions string Terms and conditions.
disclaimer string Disclaimer.
galleryImages array Collection of gallery images. Every item has 3 fields: source is the url where the image will be uploaded from. alt is the alternative text for the html image and caption is an optional caption you would like to display in some portals. Only source is mandatory. Images will be automatically cropped and centered to match the aspect ratio 16x9, but all images must have a minimum width of 720 pixels. At least one image must be present.
videos array Array that contains objects with two attributes: url (mandatory) and caption (optional). The url is the url of the video on the video platform like YouTube or Vimeo, and caption is any caption as a description of the video.
brochures array Array that contains objects with two attributes: url (mandatory) and caption (optional). The url is the url of the brochure as Pdf, and caption is any caption as a description of the brochure.
keyFeatures array Array of free text key features.

When the listing is to advertise a development (development listing), it must also contain the following fields:

Field name Type Mandatory Description
developmentAddress object Object with the development address details.
properties array Array with all the properties in the listing.

Where developmentAddress is an object with the following fields:

Field name Type Mandatory Description
building string The building name or number.
street string The name of the street or road.
town string The nearest large urban area.
postcode string The postal area code.

When the listing is to advertise a single property (single-property listing), it must contain the field property with the details of the property being advertised.

# Property request payload

Property fields are the same, regardless the type of listings, although some fields are not used depending on the case, which are explained in the column description.

Field name Type Mandatory Description
propertyNumber string Only for multi-property listings. Alphanumeric value to identify the property. It must be unique and it is also used to identify the property in the collection.
name string Only for single-property listings. Property name.
active boolean Only for multi-property listings. When it's not active, it is not display on portals. If omitted, it's set to true.
propertyType string Describe the type of property.
availabilityStatus string One of the four possible availability status, regardless the property is for sale or to rent.
fullSpecifications string A full description of the property.
newBuild boolean Only for single-property listings. If true the property is new build, otherwise is resale. For multi-property listings, properties are always New-build.
useDevelopmentAddress boolean Only for multi-property listings. When true, the address fields need to be included, at least postcode. If omitted it's set to true.
building string The building name or number for single-property listing or if useDevelopmentAddress is false.
street string The name of the street or road for single-property listing or if useDevelopmentAddress is false.
town string The nearest large urban area for single-property listing or if useDevelopmentAddress is false.
postcode string The postal area code for single-property listing or if useDevelopmentAddress is false, in which case is required.
bedrooms number Total number of bedrooms.
bathrooms number Total number of bathrooms.
receptionRooms number Total number of reception rooms.
furnitureStatus string unfurnished, part-furnished or furnished.
floorArea number Floor area in square meters.
numberOfFloors number Total number of floors the property has.
floor string The property entrance floor. Please see our floor labels.
liftProvided boolean Lift provided
tenure string Condition on which a property is held: leasehold or freehold.
leaseYears number When the tenure is leasehold, the number of year the lease lasts.
leaseStartDate string Date when the lease started, if applicable, useful to calculate the remaining lease in years.
features array KPro Marketing provides some predefined property features. Include all features applicable from the list of feature labels.
rooms array Collection of property rooms. Every item has: name, additionalDetails, units (foot or metre), width, length and floorArea. Name and additional details are free texts, up to 255 chars length, while width, length and floorArea are numbers expressed in the provided units. Only name and units are required. When updating properties, the value in name is used to identify existing rooms, updating matching records in the database.
energyEfficiencyRatingCurrent number Integer number less or equal than 100, that reflects the Energy rating for the property. When it's a new build property, this value will be the Predicted energy rating, otherwise it will be the Current energy rating
energyEfficiencyRatingPotential number Only for resale properties. Integer number less or equal than 100, that reflects the Potential energy rating for resale properties.
environmentalImpactRatingCurrent number Integer number less or equal than 100, that reflects the Environmental impact rating for the property. When it's a new build property, this value will be the Predicted environmental impact rating, otherwise it will be the Current environmental impact rating
environmentalImpactRatingPotential number Only for resale properties. Integer number less or equal than 100, that reflects the Potential environmental impact rating for resale properties.
kid array Collection of key important documents. Every item has 2 fields: url is the url to download the pdf file from, and save it in the KPro servers , and caption is an optional caption you would like to display in some portals.
keyFeatures array Array of free text key features.
fullMarketPrice number If the availability status is not coming-soon and it's for sale. The property full market price when it is for sale.
depositPercentage number Percent to compute the lender deposit requirements when the property is for sale.
minSharePercentage number Minimum share to buy in percentage when the scheme is shared ownership (between 10 and 100).
maxSharePercentage number Maximum share to buy in percentage when the scheme is shared ownership (less or equal than 100).
subsidisedAsYearlyPercent boolean For shared ownership properties, true is the subsidised value is expressed as a percent of the part the buyer is not going to purchase, false if the subsidised value is a fixed monthly value.
subsidisedRent number It will depend on the subsidisedAsYearlyPercent value. If true, it should contain the subsidised rent as a yearly percent, otherwise it is the monthly rent value.
monthlyServiceCharge number When the property is for sale, the monthly bill that covers the costs of any repairs or maintenance to the structure of your building, including drainage, insurance and management charges.
annualGroundRent number The annual ground rent, made by a holder of a leasehold property to the freeholder or a superior leaseholder, as required under a lease.
reservationFee number Fee a buyer may have to pay to reserve a property for a specific period. It is not refundable, but it will usually be deducted from the purchase price if you then go on to complete the purchase of the property.
administrationFee number Fee charged by an agency to cover expenses related to record-keeping and/or other administrative costs.
monthlyRent number If the availability status is not coming-soon and it's to rent When the property is to rent, the monthly rent payment amount.
rentalDeposit number Security deposit to rent the property.
minTenancyMonths number Minimum tenancy term in months when the property if to rent.
maxTenancyMonths number Maximum tenancy term in months when the property if to rent.
floorplanImages array Collection of floorplan images. Every item has 3 fields: source is the url where the image will be uploaded from. alt is the alternative text for the html image and caption is an optional caption you would like to display in some portals. Only source is mandatory.

Info

Non mandatory fields can be omitted when creating new listings and properties, in such cases null value will be used. For shared ownership properties, price fields related to shared ownership are mandatory.

Info

When updating existing listings, fields that are not going to be updated can be omitted, no matter if they are mandatory or not.

To assign an empty value to a field, e.g., remove the full market price to a coming-soon property, assign the value null to that field.

For multi-property listings, you should always send the collection of all the properties for the listing, although for existing properties, only `propertyNumber` is required. Properties omitted will be removed from the listing.

# Examples

In both cases the fields for the listing don't change, except that for listings based on developments (multi-property) the field developmentAddress must be included, and the use of the field property or properties depending on the type of listing, single-property or multi-property respectively.

Fields for properties will vary depending on the type of listing and on the schemes.

Listing based on an independent-unit

Depending on the schemeGroup some price fields are not needed for the property, although all fields are included in the example for illustration purposes.

For listing based on independent unit (single-property), name must be used instead of propertyNumber, newBuild should be used, although once it's set to false, it can not be reverted. Fields for address must be included.

{
  "externalRef": "86843",
  "name": "Listing based on an independent unit",
  "schemeGroup": "shared-ownership",
  "visibility": "live",
  "contactEmail": "info@housing-provider.co.uk",
  "contactPhone": "+44 7345-762-392",
  "defaultNotificationEmail": "info@housing-provider.co.uk",
  "displayAddress": "Street, Town",
  "latitude": 51.2167342,
  "longitude": 0.2967323,
  "shortDescription": "We are pleased to present to the market this two bedroom...",
  "longDescription": "<p>We are pleased to present to the market this two bedroom...</p>",
  "localAreaName": "Area name",
  "localAreaDescription": "<p>There is a wealth of retail outlets within a few minutes' walk ...</p>",
  "termsAndConditions": "Terms and conditions if applicable",
  "disclaimer": "Disclaimer if applicable",
  "galleryImages": [
    {
      "source": "https://domain/images/01.jpg",
      "caption": "Living room",
      "alt": "Living-room"

    }, 
    {
      "source": "https://domain/images/02.jpg"
    }, 
    {
      "source": "https://domain/images/03.jpg"
    }
  ],
  "videos": [
    {
      "url": "https://youtu.be/aBcDeFgHi",
      "caption": "video caption"
    }
   ],
  "brochures": [
    {
      "url": "https://domain/assets/brochure.pdf"
    }
  ],
  "keyFeatures": ["Great location", "Excellent Transport Links", "Lots to do nearby"],
  "property": {
      "name": "Property name",
      "propertyType": "flat",
      "availabilityStatus": "available",
      "newBuild": false,
      "handoverDate": "2021-04-24",
      "building": "",
      "street": "Brick Street",
      "town": "London",
      "postcode": "E1 6QL",
      "bedrooms": 2,
      "bathrooms": 1,
      "receptionRooms": 1,
      "furnitureStatus": "furnished",
      "floorArea": 60,
      "numberOfFloors": 1,
      "floor": "ground",
      "liftProvided": false,
      "tenure": "leasehold",
      "leaseYears": 99,
      "leaseStartDate": "2021-01-25",
      "energyEfficiencyRatingCurrent": 87,
      "energyEfficiencyRatingPotential": 93,
      "environmentalImpactRatingCurrent": 89,
      "environmentalImpactRatingPotential": 91,
      "kid": [
        {
            "url": "https://yourserver.com/pdfs/4534/sample.pdf",
            "caption": "Important document"
        }
      ],
      "keyFeatures": [],
      "fullMarketPrice": 270000,
      "depositPercentage": 5,
      "minSharePercentage": 25,
      "maxSharePercentage": 75,
      "subsidisedAsYearlyPercent": false,
      "subsidisedRent": 312,
      "monthlyServiceCharge": 177.33,
      "annualGroundRent": null,
      "reservationFee": null,
      "administrationFee": null,
      "rentalDeposit": null,
      "monthlyRent": null,
      "weeklyRent": null,
      "minTenancyMonths": null,
      "maxTenancyMonths": null,
      "fullSpecifications": "<p>Open plan layout...<p>",
      "features": ["off-street-parking", "communal-garden", "wheelchair-accessible"],
      "floorplanImages": [
        {
          "source": "https://domain/floorplans/01.jpg"
        }
      ],
      "rooms": [
        {
            "name": "Kitchen",
            "additionalDetails": "Open plan",
            "units": "foot",
            "width": 18,
            "length": 24,
            "floorArea": 430
        },
        {
            "name": "Bedroom 1",
            "additionalDetails": "Ensuite bathroom",
            "units": "foot",
            "width": 16,
            "length": 15,
            "floorArea": 238
        }
      ],
    }
}

Listing based on a development

Depending on the schemeGroup some price fields could be omitted for the property.

For listing based on developments (multi-property), propertyNumber must be always included, and it's the field used to identify if a property must be added, updated or deleted from the listing.

Fields for address should be only included when useDevelopmentAddress is false, if this field is omitted, it's assumed that it's true.

{
  "externalRef": "86843",
  "name": "Listing based on a development",
  "schemeGroup": "shared-ownership",
  "visibility": "live",
  "contactEmail": "info@housing-provider.co.uk",
  "contactPhone": "+44 7345-762-392",
  "defaultNotificationEmail": "info@housing-provider.co.uk",
  "displayAddress": "Street, Town",
  "latitude": 51.2167342,
  "longitude": 0.2967323,
  "shortDescription": "We are pleased to present to the market this two bedroom...",
  "longDescription": "<p>We are pleased to present to the market this two bedroom...</p>",
  "localAreaName": "Area name",
  "localAreaDescription": "<p>There is a wealth of retail outlets within a few minutes' walk ...</p>",
  "termsAndConditions": "Terms and conditions if applicable",
  "disclaimer": "Disclaimer if applicable",
  "galleryImages": [
    {
      "source": "https://domain/images/01.jpg",
      "caption": "Living room",
      "alt": "Living-room"

    }, 
    {
      "source": "https://domain/images/02.jpg"
    }, 
    {
      "source": "https://domain/images/03.jpg"
    }
  ],
  "videos": [
    {
      "url": "https://youtu.be/aBcDeFgHi",
      "caption": "video caption"
    }
   ],
  "brochures": [
    {
      "url": "https://domain/assets/brochure.pdf"
    }
  ],
  "keyFeatures": ["Great location", "Excellent Transport Links", "Lots to do nearby"],
  "developmentAddress": {
    "building": "building-name",
    "street": "Church Street",
    "town": "London",
    "postcode": "N2 7JL"
  },
  "properties": [
    {
      "propertyNumber": "A1",
      "active": true,
      "propertyType": "flat",
      "availabilityStatus": "available",
      "useDevelopmentAddress": true,
      "handoverDate": "2021-05-23",
      "bedrooms": 2,
      "bathrooms": 1,
      "receptionRooms": 1,
      "furnitureStatus": "furnished",
      "floorArea": null,
      "numberOfFloors": 1,
      "floor": "ground",
      "tenure": "leasehold",
      "leaseYears": 125,
      "energyEfficiencyRatingCurrent": 87,
      "energyEfficiencyRatingPotential": 93,
      "kid": [
        {
            "url": "https://yourserver.com/pdfs/4534/sample.pdf",
            "caption": "Important document"
        }
      ],
      "keyFeatures": [],
      "fullMarketPrice": 270000,
      "depositPercentage": 5,
      "minSharePercentage": 25,
      "maxSharePercentage": 75,
      "subsidisedAsYearlyPercent": false,
      "subsidisedRent": 312,
      "monthlyServiceCharge": 177.33,
      "annualGroundRent": null,
      "reservationFee": null,
      "administrationFee": null,
      "rentalDeposit": null,
      "monthlyRent": null,
      "weeklyRent": null,
      "minTenancyMonths": null,
      "maxTenancyMonths": null,
      "fullSpecifications": "<p>Open plan layout...<p>",
      "features": ["off-street-parking", "communal-garden", "wheelchair-accessible"],
      "floorplanImages": [
        {
          "source": "https://domain/floorplans/01.jpg"
        }
      ],
      "rooms": [
        {
            "name": "Kitchen",
            "additionalDetails": "Open plan",
            "units": "foot",
            "width": 18,
            "length": 24,
            "floorArea": 430
        },
        {
            "name": "Bedroom 1",
            "additionalDetails": "Ensuite bathroom",
            "units": "foot",
            "width": 16,
            "length": 15,
            "floorArea": 238
        }
      ],
    },
    {
      "propertyNumber": "B1",
      "active": true,
      "propertyType": "flat",
      "availabilityStatus": "available",
      "useDevelopmentAddress": false,
      "building": "building-name",
      "street": "East Street",
      "town": "London",
      "postcode": "N2 7JK",
      "handoverDate": null,
      "bedrooms": 2,
      "bathrooms": 1,
      "receptionRooms": 1,
      "furnitureStatus": "furnished",
      "floorArea": null,
      "numberOfFloors": 1,
      "floor": "ground",
      "liftProvided": true,
      "tenure": "leasehold",
      "leaseYears": null,
      "energyEfficiencyRatingCurrent": 87,
      "energyEfficiencyRatingPotential": 93,
      "fullMarketPrice": 280000,
      "depositPercentage": 5,
      "minSharePercentage": 25,
      "maxSharePercentage": 75,
      "subsidisedAsYearlyPercent": false,
      "subsidisedRent": 312,
      "monthlyServiceCharge": 177.33,
      "annualGroundRent": null,
      "reservationFee": null,
      "administrationFee": null,
      "rentalDeposit": null,
      "monthlyRent": null,
      "weeklyRent": null,
      "minTenancyMonths": null,
      "maxTenancyMonths": null,
      "fullSpecifications": "<p>Open plan layout...<p>",
      "features": ["off-street-parking", "communal-garden", "wheelchair-accessible"],
      "floorplanImages": [
        {
          "source": "https://domain/floorplans/02.jpg"
        }
      ],
      "rooms": []
    }
  ]
}

# Label conventions

Possible values for some fields need to match available values in KPro Marketing. Find below KPro Marketing label convention for those fields.

# Scheme groups

  • For sale
Label Description
shared-ownership Scheme that allows buyers to own a share and then rent the part they do not own at a reduced rate. Display value: Shared ownership.
help-to-buy Scheme that offers an equity loan where the government lends money to buy a newly-built home. Display value: Help to Buy only.
first-dibs Scheme to ensure that new, lower-cost homes in the capital are marketed and sold exclusively to Londoners and UK-based buyers first. Display value: First Dibs only.
help-to-buy-and-first-dibs Combine two previous schemes. Display value: Help to Buy & First Dibs.
discounted-market-sale Low-cost home ownership product where a housing provider offers a discount on the purchase of a new build property. Display value: Discounted market sale.
private-sale The option to use when you want to sale a property in the private market. Display value: Private sale.
  • To rent
Label Description
london-living-rent Scheme for middle-income households who now rent and want to build up savings to buy a home. Display value: London living rent.
discount-market-rent Offers home seekers the opportunity to rent a home at a rent that is 20% less than the market rate. It is also sometimes known as Intermediate Rent. Display value: Discounted market rent.
rent-to-buy Scheme that allows you to rent a property for less than the market price for a set amount of time, in which you are expected to use the money saved from the lower rent for a deposit to buy the property after the tenancy ends. Display value: Rent to Buy (Outside London).
private-rent The option to use when you want to rent a property in the private market. Display value: Private rent.

# Availability status

The labels are the same regardless if the property is for sale or to rent, but the meaning depends on the purpose.

  • For sale
Label Description
coming-soon The property is listed for sale soon. Display value: Coming soon.
available The property is available for sale. Display value: For sale.
under-offer The property is currently under offer. Display value: Sale Under offer.
closed The property was sold. Display value: Sold.
  • To rent
Label Description
coming-soon The property is listed to rent soon. Display value: Coming soon.
available The property is available to rent. Display value: To rent.
under-offer The property is currently under offer. Display value: Rent under offer.
closed The property is currently rented. Display value: Rented.

# Property types

Property types (or building types) fields to describe the kind of property for sale or to rent.

Label Description
flat Flats are mostly single-level residential properties comprising of a set or rooms all located on one floor. Display value: Flat.
semi-detached-house Property attached to just one neighbouring house as part of a block of just two houses. Display value: Semi-detached house.
detached-house A stand-alone residential structure that does not share outside walls with another house or building. Display value: Detached house.
terraced-house One of a row of similar houses joined together by their side walls. Display value: Terraced house.
end-of-terrace-house A house attached to just one neighbour that in its turn is attached to two neighbours. Display value: End of terrace house.
bungalow Single-storey detached house or has a second storey built into a sloping roof. Display value: Bungalow.
maisonette A set of rooms for living in typically on two storeys as part of a larger building with a separate entrance from rest of the building. Display value: Maisonette.
studio A single room with cooking facilities which has its own bathroom attached. Display value: Studio.
house The default value to use when the house is not in any of the previous categories. Display value: House.

# Property features

Features are grouped in different categories, although these categories are just for organizational purposes. When defining features, just add all applicable, and separate them by comma.

  • Parking
Label Description
off-street-parking Whether the property has Off street parking facility available.
on-street-parking Whether On street/resident parking facility is available.
underground-parking Whether the property has Underground parking facility available.
driveway Whether the property has Driveway parking facility available.
single-garage Whether Single garage parking facility is available.
double-garage Whether Double garage parking facility is available.
  • Outside space: What outside areas are available.
Label Description
back-garden The property has access to a back garden area.
communal-garden The property has access to a communal garden.
enclosed-garden Whether enclosed garden outside area is available.
front-garden Whether the front garden outside area is available.
private-garden Whether the property has a private garden.
rear-garden Whether the property has a rear garden.
terrace Whether the property has a terrace.
patio Whether the property has a patio.
  • Others
Label Description
wheelchair-accessible Whether the property is wheelchair accessible.
pets-allowed Whether it is allowed to have pets.
central-heating Whether the property has central heating.
double-glazing Whether the property has double glazed windows.
lift-access Whether the property has lift access.

# Furniture status labels

  • furnished
  • part-furnished
  • unfurnished

# Floor labels

Floor in which the entrance of the property is located. The layout of floors within a multi-storey building is defined as follows:

Label Description
ground The entrance floor of the property is on the ground floor.
1 The entrance floor of the property is on the 1st floor.
2 The entrance floor of the property is on the 2nd floor.
3 The entrance floor of the property is on the 3rd floor.
4 The entrance floor of the property is on the 4th floor.
5 The entrance floor of the property is on the 5th floor.
6 The entrance floor of the property is on the 6th floor.
7 The entrance floor of the property is on the 7th floor.
8 The entrance floor of the property is on the 8th floor.
9 The entrance floor of the property is on the 9th floor.
10+ The entrance floor of the property is higher than the 9th floor.
lower The entrance floor of the property is on the lower ground.
basement The entrance floor of the property is on the basement.