Back to top

Website API

Overview

The Website API allows real estate agencies to build their own custom website around property data that is stored and managed in SweepBright. This documentation explains:

  • How properties in SweepBright can be published to a custom website.

  • How updates to a property in SweepBright can be synced with the corresponding publication on the custom website. This is useful, e.g. when the price is updated.

  • How publications on the custom website can be removed by unpublishing the property in SweepBright. This is useful, e.g. when the property is sold or rented.

  • How the above three actions can be done for a project, which is a collection of properties.

  • How the custom website can store general leads inside SweepBright. General leads are contacts interested in buying or renting a property but without a specific interest in a particular property.

  • How the custom website can store specific leads inside SweepBright. Specific leads are contacts interested in buying or renting a specific property that they found on the custom website.

This documentation is intended for both product managers trying to understand the capabilities of the website API, as well as for developers that are building the custom website that integrates with this website API.

Every feature will be explained from a product perspective (a testing flow that verifies that the experience for the end user is correct) and a technical perspective (what the communication flow between SweepBright and the custom website is) so developers understand how to implement the behavior.

Before continuing, please read the Legal section at the bottom of this page.

Subscribe to our mailing list to stay up to date about the latest changes to the website API:

Development Basics

URL

The API is available at https://website.sweepbright.com/api.

Data Handling

All interactions with the website API happen through a REST API that returns JSON-formatted responses. All API requests must be made over HTTPS and with an access_token provided via an OAuth 2.0 authorization flow.

Rate Limiting

Our API is not build nor intended to be actively used in your application. You are required to download and store any data and files on your own infrastructure. Our API is rate limited and should only be accessed after receiving a webhook.

Image Handling

Images and files can be downloaded via a temporary URL that is outputted in the API responses. The time until the URL expires is also provided in the API response.

URL Structure

We strongly recommend using SweepBrights property id’s within the URLs of your custom website, especially for the properties detail page. Good examples are:

  • https://full-url-to-websi.te/<property_id>

  • https://full-url-to-websi.te/<zipcode>/<property_id>

Development Process

Getting access

Currently, it is not possible to activate and configure the website API from inside SweepBright. Instead, you should follow the steps outlined in this help article to get access. We will first give you access to a testing account.

Development

After you’re set up with your testing account, you implement the custom website so it satisfies all Basic Requirements.

Final approval

When you are done developing, please inform us. SweepBright will check if your website satisfies all basic requirements according to the test cases included in each of them. After a positive evaluation, we shall send your credentials for your production account.

When planning your go-live, please account for a week of verification time by SweepBright and for possible adjustments you might need to implement.

Basic requirements

1. Publish a property to the custom website

From the user’s perspective the following flow should work (through the iOS or web application):

  1. Create a new property, with an address, price, description and at least one image.

  2. In the Publish section, publish the property to Public API.

  3. The status of the publication to Public API changes to Publishing...

  4. After maximum 1 hour, the status of the publication changes to Published.

  5. In the Public API section a link to the publication on the custom website is available.

  6. The link on the custom website shows the property, with address, price, description and image.

Notice that the time it takes for a publication to switch from Publishing to Published depends on the speed with which the website API processes the publish requests and how quickly the link to the custom website is returned.

Technically, this the flow between SweepBright and Public API:

publish_property_flow

  1. When a user publishes a property to the public API channel, this will trigger a webhook. It is important that you immediately respond when this webhook is called, not after fetching the property info and returning the URL.

  2. The custom website can fetch the property information by calling the estates endpoint. After storing this data, you can use it to publish the property on the custom website.

  3. Once the custom website has created the property and knows the URL of the property on the custom website, the custom website sends back the estates URL endpoint. Note that if the custom website did not send back the URL within 1 hour, the publication will be considered failed.

  4. As soon as SweepBright receives the URL of the property on the custom website, the property is considered Published inside SweepBright.

Some additional notes regarding the implementation:

  • Notice that the API uses the term estate to refer to a property. Property and estate can be used interchangeably.

  • The custom website can only fetch property information after a user has published the property to the website API in SweepBright and the webhook is called. After that, the data is available for fetching for 60 minutes.

  • There is no endpoint to fetch all published properties for an agency.

  • The publish flow is not completed as long as the URL is not returned. In the meanwhile, the property will remain in a Publishing state. Only when the URL is received do we consider the property as Published. It’s important to complete the publish flow: without URL the property cannot be used in several of SweepBright’s features.

2. Sync property updates with custom website

From the user’s perspective the following flow should work (through the iOS or web application):

  1. Follow the steps above to create and publish a property to the website API.

  2. Update some information of the property, such as the price.

  3. The status of the website API publication is ‘Changes not yet published.’

  4. Publish the property to the Public API again.

  5. The status of the publication to Public API changes to Publishing...

  6. After maximum 1 hour, the status of the publication changes to Published.

  7. In the Public API section a visitable link to the publication on the custom website is available.

Technically, the flow is exactly the same as for publishing a property to the website API for the first time, with one difference: the request that SweepBright sends to the webhook contains "event": "estate-updated" instead of "event": "estate-added".

3. Remove publication from custom website

From the user’s perspective the following flow should work (through the iOS or web application):

  1. Follow the steps to create and publish a property to the website API.

  2. In the Publish section of the property, unpublish the property from the website API.

  3. The status of the publication to Public API changes to Not Published.

Technically, this the flow between SweepBright and Public API:

publish_property_flow

  • When a property is unpublished, the request that SweepBright sends to the webhook contains "event": "estate-deleted".

  • After the webhook is sent, SweepBright considers the property as unpublished.

  • The custom website is responsible for taking the necessary actions to remove the publication from the website. No additional communication is necessary.

4. Publish, update and unpublish projects

In addition to standalone properties, like a standalone house or a single apartment, SweepBright also supports the concept of projects. A project is a collection of multiple properties (called units in the SweepBright platform).

From the user’s perspective, the experience when publishing, updating and unpublishing projects and units depends on the way it is implemented technically. There are two options:

  • One-on-one

    • When users publish the project through SweepBright, the custom websites publishes the overall project info on your website. The units data, even though it’s available from the estates endpoint, is not used at all.
    • When users publish a single unit through SweepBright, the custom website publishes the unit as a part of the project that was already published on your website.
    • This approach allows for maximum flexibility for agents in (un)publishing units to/from your website.
    • Things to take into account for this approach:
      • Before publishing a unit, users should first publish the project.
      • Before unpublishing a project, users should first unpublish all the units.
  • Publish project = publish project + all units

    • When users publish the project through SweepBright, the custom website publishes the overall project info on your website, as well as all the units.
    • This approach is fast, but less flexible (you can’t manage publications on the unit level)
    • Things to take into account for this approach:
      • Users should never separately publish units.
      • Publishing or unpublishing units will become tricky, because the publication status on your website and the publication status of units in the Publish section of SweepBright will not be in sync.

We recommend that the custom website follows the second approach. Although this approach is slightly less flexible, it leads to a better user experience. More specifically, if there is a project with 30 units, the agent only has to publish the project and doesn’t have to publish all 30 units separately anymore.

As you can see from in the estates endpoint documentation documentation, some fields in the payload will be different depending on the type of property that you are fetching information for. You can use this to determine which type of property the custom website is dealing with.

5. Create a general lead in SweepBright

General leads are contacts interested in buying or renting a property but without a specific interest in a particular property.

From the user’s perspective the following flow should work:

  • Visit the custom website.

  • Click a button to express general interest.

  • Pass first name, last name, email and telephone number. Additionally, pass the locale and preferences. Submit the info.

  • If the company consists of multiple teams, an unassigned lead (the lead is not assigned to a team) is created under Company & Teams > Unassigned leads in the SweepBright web application. When a Company only has one team, the lead is immediately assigned to this team.

  • The contact’s details are filled in according to the information that was passed earlier.

  • The contact’s preferences are filled in according to the information that was passed earlier.

Technically, the custom website should call the general contact request endpoint.

6. Create a specific lead in SweepBright

Specific leads are contacts interested in buying or renting a specific property that they found on the custom website.

From the user’s perspective, the following flow should work:

  • Visit a property on the custom website.

  • Click a button to express interest in this property and ask for more information.

  • Pass first name, last name, email, telephone number. Additionally, pass the locale.

  • In SweepBright’s web application, a lead is created in the contacts list of the team to which the property belongs. In addition, an ‘expressed interest’ interaction is logged between this lead and the property.

  • The contact’s details are filled in according to the information that was passed earlier.

  • The contact’s preferences are filled in based on the property that he or she expressed interest in. For example, the lead’s location preference is set to the postal code of the property and the maximum price is the property’s maximum price times 1.05.

Technically, the custom website should call the the contract request for an estate endpoint. Currently, SweepBright automatically infers the contact’s preferences from the property that the contact expressed interest in. Additional preferences that may be passed in the body of the request are ignored.

Overview of versions

In the description of the different API endpoints, you will see that you have to specify an Accept header in your request, formatted as application/vnd.sweepbright.v{version}+json, where version specifies the API version. Since the default version (1) we have done improvements and additions to the API, so it’s a good idea to regularly check if you can upgrade the version and make the corresponding code changes in your website API client. We will also notify you when a significant update was done that you should be aware of. As a rule, we will always ensure backwards compatibility with older versions unless explicitly communicated otherwise. Our documentation will only include request body examples for the last supported version. Below you can find an overview of changes between versions, so you can easily figure out what changed. If you are building a website API client from scratch, you can safely skip this section.

1 -> 20190920

In version 1, when getting the estates data with GET estates/{id}, the JSON structure of the description, description_title, price_costs, price_taxes, and legal_mentions fields in different locales was inconsistent between standalone properties, projects, and units data inside a project payload. Version 20190920 makes this consistent. Regardless of the type of property (standalone, unit, project), this localized data will always be formatted as follows:

"description_title": {
    "en": "english_title",
    "fr": "french_title",
    "nl": "dutch_title"
},
"description": {
    "en": "english_desc",
    "fr": "french_desc",
    "nl": "dutch_desc"
},
"price_costs": {
    "en": "english_price_costs",
    "fr": "french_price_costs",
    "nl": "dutch_price_costs"
},
"price_taxes": {
    "en": "english_price_taxes",
    "fr": "french_price_taxes",
    "nl": "dutch_price_taxes"
}
"legal_mentions": {
    "en": "english_legal_mentions",
    "fr": "french_legal_mentions",
    "nl": "dutch_legal_mentions"
}

20190920 -> 20191121

Version 20190920 still includes the publish_status when calling GET estates/{id}. However, this feature is not actively supported anymore, so to avoid confusion it was dropped in version 20191121.

20191121 -> 20191206

With 20191206 we’re exposing much more legal fields, and we’re exposing them in a more sensible format.

When calling GET estates/{id} with Accept: application/vnd.sweepbright.v20191121+json, you’ll get:

{
    "id": "4e7b24e6-6d37-48a9-9249-0880bda99ba0",
    ...
    "epc_value": 123,
    "epc_category": "A+",
    "epc_reference": "this-is-the-epc-ref",
    "regulations": {
        "building_permit": true,
        "urban_planning_breach": true,
        "subdivision_authorisation": true,
        "preemptive_right": true,
        "flood_risk_area": true
    },
    "cadastral_income": 785,
    "legal_mentions": {
        "en": "English legal mentions",
        "fr": "Mentions legales francaises",
        "nl": "Nederlandstalige legale vermeldingen"
    },
    ...
}

When calling GET estates/{id} with Accept: application/vnd.sweepbright.v20191206+json, you’ll get:

{
    "id": "4e7b24e6-6d37-48a9-9249-0880bda99ba0",
    ...
    "legal": {
        "energy": {
            "e_level": "E90",
            "epc_value": 123,
            "epc_category": "A+",
            "co2_emissions": 999,
            "epc_reference": "this-is-the-epc-ref",
            "total_epc_value": 1000,
            "report_fuel_tank": "conform",
            "report_electricity_gas": "conform"
        },
        "regulations": {
            "heritage_list": true,
            "as_built_report": true,
            "building_permit": true,
            "expropriation_plan": true,
            "registered_building": true,
            "urban_planning_breach": true,
            "site_untapped_activity": true,
            "priority_purchase_right": true,
            "pending_legal_proceedings": true,
            "subdivision_authorisation": true,
            "urban_planning_certificate": true
        },
        "legal_mentions": {
            "en": "English legal mentions",
            "fr": "Mentions legales francaises",
            "nl": "Nederlandstalige legale vermeldingen"
        },
        "property_and_land": {
            "flood_risk": "effective_flood_sensitive_area",
            "purchased_year": 1987,
            "cadastral_income": 785,
            "land_use_designation": "natural_reserve"
        }
    },
    ...
}

As you can see, you can tap into much more legal fields. They are structured differently, and some have also changed:

  • premptive_right has been renamed to priority_purchase_right.

  • flood_risk is an enum instead of a boolean.

For all the different values that these fields can have, please refer to the schemas in the documentation.

20191206 -> 20210723

Version 20210723 solves some inconsistencies between the JSON Schema described in the documentation and the actual property data structure.

When calling GET estates/{id} with Accept: application/vnd.sweepbright.v20210723+json, you’ll get:

{
    "id": "4e7b24e6-6d37-48a9-9249-0880bda99ba0",
    ...
    "legal": {
        "energy": {},
        "regulations": {},
        "legal_mentions": {},
        "property_and_land": {}
    },
    "description": {}
    ...
}

when energy, regulations, legal_mentions, property_and_land and description sections are not set.

Before version 20210723 the above structure was returning empty array, causing errors when using the JSON Schema to validate the property data.

20210723 -> 20221213

Version 20221213 introduces some changes to the property data and a couple of new fields to align SweepBright to the recent legal state directives.

Changes:

  • E-Level changes from a string prefixed with E to a number between -999 and 999 (path: legal.energy.e_level).

  • Energy Score supports values between -999 and 999 (path: legal.energy.epc_score).

  • DPE supports two new values: empty and not_applicable (path: legal.energy.dpe).

  • GES supports two new values: empty and not_applicable (path: legal.energy.greenhouse_emissions).

  • Units in Building is now allowed for any property type (path: building.units_of_building).

New fields, both in the regulation section for houses, apartments, commercial and office properties:

  • Asbestos Certificate as a flag to specify when the property has a Asbestos certificate (path: legal.regulations.asbestos_certificate).

  • Asbestos Certificate Number to expose the certificate number (path: legal.regulations.asbestos_certificate_reference).

Sweepbright Website API endpoints

Authentication

All endpoints should be authenticated against using oAuth2. We only support the client_credentials, which should be given to you. After that you can request an access_token:

Get an access token
POST/oauth/token

Example URI

POST /oauth/token
Request
HideShow
Headers
Accept: application/vnd.sweepbright.v20191206+json
Content-Type: application/json
Body
{
    "grant_type": "client_credentials",
    "client_id": "client_id",
    "client_secret": "client_secret",
}
Response  200
HideShow
Headers
Content-Type: application/vnd.sweepbright.v20191206+json
Body
{
  "token_type": "Bearer",
  "expires_in": 604800,
  "access_token": "<token>"
}

Estate

Get estate data
GET/estates/{estate}

Get estate data. Only callable after the webhook was triggered for the estate in question.

When fetching standalone property data with GET /estates/{estate}:

  • is_project is false

  • project_id is null

  • properties field is not available

When fetching project data with GET /estates/{estate}:

  • is_project will be true

  • properties field will be an array of property objects with all the project’s units’ data.

When fetching unit data with GET /estates/{estate}:

  • is_project is false

  • project_id is equal to the property id of the project it is part of.

  • properties field is not available

Example URI

GET /estates/00930234-4f4e-42f1-a42e-206273dd8c53
URI Parameters
HideShow
estate
string (required) Example: 00930234-4f4e-42f1-a42e-206273dd8c53
Request
HideShow
Headers
Accept: application/vnd.sweepbright.v20191206+json
Authorization: Bearer <token>
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/vnd.sweepbright.v20191206+json
Body
{
  "id": "69cbfdd6-b3e4-470e-a672-5c9e37fe36e9",
  "is_project": true,
  "project_id": "32ed6c2a-716f-4077-9779-2b7794e46257",
  "type": "apartment",
  "sub_type": "condo",
  "negotiation": "let",
  "rent_period": "month",
  "status": "available",
  "description": {
    "en": "Apartment with pool",
    "fr": "Appartement avec piscine",
    "nl": "Appartement met zwembad"
  },
  "description_title": {
    "en": "Luxury Apartment",
    "fr": "Appartement de luxe",
    "nl": "Luxe appartement"
  },
  "living_rooms": 1,
  "kitchens": 1,
  "bedrooms": 1,
  "bathrooms": 1,
  "toilets": 1,
  "showrooms": 1,
  "manufacturing_areas": 1,
  "storage_rooms": 1,
  "shower_rooms": 1,
  "kitchen_condition": "good",
  "bathroom_condition": "good",
  "garden_orientation": "N",
  "terrace_orientation": "N",
  "balcony_orientation": "N",
  "video_url": "http://my-video-url.be",
  "virtual_tour_url": "http://my-video-tour-url.be",
  "appointment_service_url": "http://my-calendar-url.com",
  "general_condition": "poor",
  "legal": {
    "energy": {
      "epc_value": 200,
      "epc_category": "A++",
      "epc_reference": "20081101-0000000245-00000015",
      "total_epc_value": 1000,
      "energy_dpe": "A",
      "greenhouse_emissions": "A",
      "nabers": {
        "description": "Historical and current water and energy use",
        "type": "number",
        "maximum": 6,
        "minimum": 0
      },
      "nathers": {
        "description": "All features of a building, including location",
        "type": "number",
        "maximum": 10,
        "minimum": 0
      },
      "co2_emissions": "",
      "e_level": 80,
      "report_electricity_gas": "conform",
      "report_fuel_tank": "conform",
      "dpe": [
        "A",
        "B",
        "C",
        "D",
        "E",
        "F",
        "G",
        "empty",
        "not_applicable"
      ],
      "greenhouse_emissions: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `empty`, `not_applicable`": "",
      "estimated_energy_costs": {
        "minimum": 100,
        "maximum": 200,
        "year": 2018
      },
      "dpe_date": "2018-01-01"
    },
    "regulations": {
      "building_permit": true,
      "priority_purchase_right": true,
      "subdivision_authorisation": true,
      "urban_planning_breach": true,
      "as_built_report": true,
      "expropriation_plan": true,
      "heritage_list": true,
      "pending_legal_proceedings": true,
      "registered_building": true,
      "site_untapped_activity": true,
      "urban_planning_certificate": true,
      "asbestos_certificate": true,
      "asbestos_certificate_reference": null,
      "zone_subject_to_rent_control": true,
      "renovation_obligation": true,
      "ongoing_litigation": true
    },
    "legal_mentions": {
      "en": "Legal regulations English",
      "fr": "Legal regulations French",
      "nl": "Legal regulations Dutch"
    },
    "property_and_land": {
      "purchased_year": "1987",
      "cadastral_income": 785,
      "flood_risk: `no_flood_risk_area`,`potential_flood_sensitive_area`,`effective_flood_sensitive_area`": null,
      "land_use_designation": "agricultural",
      "flood_risk_plot_score": "A",
      "flood_risk_building_score": "A"
    }
  },
  "auction": {
    "start_date": "2018-01-01T10:00:00+00:00"
  },
  "open_homes": [
    {
      "start_date": "2018-05-26T10:00:00+00:00",
      "end_date": "2018-05-26T10:00:00+00:00"
    }
  ],
  "price": {
    "amount": 100000,
    "currency": "EUR",
    "hidden": true
  },
  "price_negotiated": 100000,
  "price_costs": {
    "en": "Free text field English",
    "fr": "Free text field French",
    "nl": "Free text field Dutch"
  },
  "price_taxes": {
    "en": "Free text field English",
    "fr": "Free text field French",
    "nl": "Free text field Dutch"
  },
  "price_vat_regime": 55,
  "price_yearly_budgeted_building_costs": {
    "amount": 100000,
    "currency": "EUR"
  },
  "price_property_taxes": {
    "amount": 200000,
    "currency": "EUR"
  },
  "price_recurring_costs": {
    "amount": 300000,
    "currency": "EUR"
  },
  "price_guarantee": {
    "amount": 300000,
    "currency": "EUR"
  },
  "price_inventory_report_cost": {
    "amount": 400000,
    "currency": "EUR"
  },
  "price_reference_rent": {
    "amount": 500000,
    "currency": "EUR"
  },
  "price_base_rent": {
    "amount": 600000,
    "currency": "EUR"
  },
  "price_rent_supplement": {
    "amount": 700000,
    "currency": "EUR"
  },
  "custom_price": "Price available on request",
  "location": {
    "geo": {
      "latitude": 1.2345,
      "longitude": 1.2345
    },
    "city": "Brussels",
    "street": "Street name",
    "street_2": "Street name",
    "number": "123",
    "box": "7",
    "addition": "ABD",
    "floor": 2,
    "country": "BE",
    "formatted": "Street name, Brussels",
    "formatted_agency": "Formatted Agency",
    "postal_code": "1000",
    "hidden": false
  },
  "amenities": [
    "pool"
  ],
  "sizes": {
    "plot_area": {
      "size": 100,
      "unit": "sq_ft"
    },
    "liveable_area": {
      "size": 100,
      "unit": "sq_ft"
    },
    "loi_carrez_area": {
      "size": 100,
      "unit": "sq_ft"
    }
  },
  "permissions": {
    "farming": true,
    "fishing": false,
    "planning": false,
    "construction": true
  },
  "rooms": [
    {
      "type": "living_room",
      "size_description": "Living room",
      "size": 100,
      "unit": "sq_ft",
      "ordinal": 1
    }
  ],
  "floors": 0,
  "images": [
    {
      "id": "1234-5678-9012",
      "filename": "my-image.jpeg",
      "description": "My image",
      "url": "http://absolute-url-to-download-image-from/image.jpg",
      "url_expires_on": "2017-01-01T12:12:12+00:00",
      "ordinal": 1
    }
  ],
  "plans": [
    {
      "id": "1234-5678-9012",
      "filename": "my-plan.pdf",
      "description": "My plan",
      "url": "http://absolute-url-to-download-plan-from/plan.pdf",
      "url_expires_on": "2017-01-01T12:12:12+00:00"
    }
  ],
  "documents": [
    {
      "id": "1234-5678-9012",
      "filename": "my-plan.pdf",
      "description": "My plan",
      "content_type": "application/pdf",
      "url": "http://absolute-url-to-download-plan-from/plan.pdf",
      "url_expires_on": "2017-01-01T12:12:12+00:00"
    }
  ],
  "features": {
    "energy": {
      "gas": true,
      "fuel": true,
      "electricity": true,
      "heat_pump": true
    },
    "comfort": {
      "home_automation": true,
      "water_softener": true,
      "fireplace": true,
      "walk_in_closet": true,
      "home_cinema": true,
      "wine_cellar": true,
      "sauna": true,
      "fitness_room": true,
      "furnished": true
    },
    "ecology": {
      "double_glazing": true,
      "solar_panels": true,
      "solar_boiler": true,
      "rainwater_harvesting": true,
      "insulated_roof": true
    },
    "security": {
      "alarm": true,
      "concierge": true,
      "video_surveillance": true
    },
    "heating_cooling": {
      "central_heating": true,
      "floor_heating": true,
      "air_conditioning": true,
      "individual_heating": true
    }
  },
  "building": {
    "renovation": {
      "year": 2012,
      "description": "New windows"
    },
    "construction": {
      "year": 1970,
      "architect": "Mr. Architect"
    },
    "units_of_building": 11,
    "residential_lots": 12,
    "number_of_floor_building": 17
  },
  "negotiator": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john@doe",
    "phone": "+123456789",
    "photo_url": "http://absolute-url-to-download-photo-from/photo.jpg",
    "photo_url_expires_on": "2017-01-01T12:12:12+00:00"
  },
  "agency_commission": {
    "fixed_fee": 500.2,
    "percentage": 5
  },
  "mandate": {
    "start_date": "2018-01-01",
    "end_date": "2019-01-01",
    "exclusive": true,
    "number": "1a2b3c"
  },
  "internal_note": "Internal note",
  "occupancy": {
    "occupied": false,
    "current_rent": {
      "amount": 100000,
      "currency": "EUR"
    },
    "available_from": "2018-01-01",
    "contact_details": "Available next week",
    "tenant_contract": {
      "end_date": "2018-12-31",
      "start_date": "2018-01-01"
    }
  },
  "office": {
    "id": "2e8caade-eb1e-4499-994f-4aed28906826",
    "name": "Team 1"
  },
  "buyers": [
    {
      "first_name": "John",
      "last_name": "Doe",
      "email": "john@doe.com",
      "phone": "+123456789"
    }
  ],
  "vendors": [
    {
      "first_name": "John",
      "last_name": "Doe",
      "email": "john@doe.com",
      "phone": "+123456789"
    }
  ],
  "settings": {
    "reference": "internal reference"
  },
  "properties": [
    {}
  ],
  "buyer_percentage": 1,
  "buyer_fixed_fee": 2,
  "vendor_percentage": 3,
  "vendor_fixed_fee": 4,
  "legal_entity": {
    "id": "5568c79c-4aa9-4c31-a951-40b060549ead",
    "name": "My Legal Entity"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "is_project": {
      "type": "boolean"
    },
    "project_id": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "enum": [
        "apartment",
        "commercial",
        "house",
        "land",
        "office",
        "parking"
      ]
    },
    "sub_type": {
      "type": "string",
      "enum": [
        "condo",
        "loft",
        "duplex",
        "penthouse",
        "student_accommodation",
        "healthcare",
        "industrial",
        "leasure_and_sports",
        "restaurant_and_café",
        "retail",
        "shop",
        "warehouse",
        "townhouse",
        "cottage",
        "mansion",
        "farm",
        "investment_property",
        "agricultural",
        "buildable",
        "recreational",
        "pasture_land",
        "coworking",
        "flex_office",
        "open_office",
        "investment_property",
        "private_garage",
        "indoor_parking_space",
        "outdoor_parking_space",
        "covered_outdoor_space",
        "semi_detached",
        "terraced",
        "end_of_terrace",
        "bungalow",
        "mas_farmhouse"
      ]
    },
    "negotiation": {
      "type": "string",
      "enum": [
        "let",
        "sale"
      ]
    },
    "rent_period": {
      "type": "string",
      "enum": [
        "month",
        "week"
      ]
    },
    "status": {
      "type": "string",
      "enum": [
        "available",
        "prospect",
        "option",
        "bid",
        "sold",
        "rented",
        "under_contract"
      ]
    },
    "description": {
      "type": "object",
      "properties": {
        "en": {
          "type": "string"
        },
        "fr": {
          "type": "string"
        },
        "nl": {
          "type": "string"
        }
      }
    },
    "description_title": {
      "type": "object",
      "properties": {
        "en": {
          "type": "string"
        },
        "fr": {
          "type": "string"
        },
        "nl": {
          "type": "string"
        }
      }
    },
    "living_rooms": {
      "type": "number"
    },
    "kitchens": {
      "type": "number"
    },
    "bedrooms": {
      "type": "number"
    },
    "bathrooms": {
      "type": "number"
    },
    "toilets": {
      "type": "number"
    },
    "showrooms": {
      "type": "number"
    },
    "manufacturing_areas": {
      "type": "number"
    },
    "storage_rooms": {
      "type": "number"
    },
    "shower_rooms": {
      "type": "number"
    },
    "kitchen_condition": {
      "type": "string",
      "enum": [
        "good",
        "poor",
        "fair",
        "new",
        "mint"
      ]
    },
    "bathroom_condition": {
      "type": "string",
      "enum": [
        "good",
        "poor",
        "fair",
        "new",
        "mint"
      ]
    },
    "garden_orientation": {
      "type": "string",
      "enum": [
        "N",
        "NE",
        "E",
        "SE",
        "S",
        "SW",
        "W",
        "NW"
      ]
    },
    "terrace_orientation": {
      "type": "string",
      "enum": [
        "N",
        "NE",
        "E",
        "SE",
        "S",
        "SW",
        "W",
        "NW"
      ]
    },
    "balcony_orientation": {
      "type": "string",
      "enum": [
        "N",
        "NE",
        "E",
        "SE",
        "S",
        "SW",
        "W",
        "NW"
      ]
    },
    "video_url": {
      "type": "string"
    },
    "virtual_tour_url": {
      "type": "string"
    },
    "appointment_service_url": {
      "type": "string"
    },
    "general_condition": {
      "type": "string",
      "enum": [
        "poor",
        "fair",
        "good",
        "mint",
        "new"
      ]
    },
    "legal": {
      "type": "object",
      "properties": {
        "energy": {
          "type": "object",
          "properties": {
            "epc_value": {
              "type": [
                "number",
                "null"
              ]
            },
            "epc_category": {
              "type": "string",
              "enum": [
                "A++",
                "A+",
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            },
            "epc_reference": {
              "type": "string"
            },
            "total_epc_value": {
              "type": [
                "number",
                "null"
              ]
            },
            "energy_dpe": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            },
            "greenhouse_emissions": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            },
            "nabers": {
              "type": "object",
              "properties": {
                "description": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "maximum": {
                  "type": "number"
                },
                "minimum": {
                  "type": "number"
                }
              }
            },
            "nathers": {
              "type": "object",
              "properties": {
                "description": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "maximum": {
                  "type": "number"
                },
                "minimum": {
                  "type": "number"
                }
              }
            },
            "co2_emissions": {
              "type": "string"
            },
            "e_level": {
              "type": [
                "number",
                "null"
              ]
            },
            "report_electricity_gas": {
              "type": [
                "string",
                "null"
              ],
              "enum": [
                "conform",
                "not_conform",
                "no_report",
                "not_applicable",
                null
              ]
            },
            "report_fuel_tank": {
              "type": [
                "string",
                "null"
              ],
              "enum": [
                "conform",
                "not_conform",
                "no_report",
                "not_applicable",
                null
              ]
            },
            "dpe": {
              "type": "array"
            },
            "greenhouse_emissions: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `empty`, `not_applicable`": {
              "type": "string"
            },
            "estimated_energy_costs": {
              "type": "object",
              "properties": {
                "minimum": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "maximum": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "year": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              }
            },
            "dpe_date": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "regulations": {
          "type": "object",
          "properties": {
            "building_permit": {
              "type": "boolean"
            },
            "priority_purchase_right": {
              "type": "boolean"
            },
            "subdivision_authorisation": {
              "type": "boolean"
            },
            "urban_planning_breach": {
              "type": "boolean"
            },
            "as_built_report": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "expropriation_plan": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "heritage_list": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "pending_legal_proceedings": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "registered_building": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "site_untapped_activity": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "urban_planning_certificate": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "asbestos_certificate": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "asbestos_certificate_reference": {
              "type": [
                "string",
                "null"
              ]
            },
            "zone_subject_to_rent_control": {
              "type": "boolean"
            },
            "renovation_obligation": {
              "type": "boolean"
            },
            "ongoing_litigation": {
              "type": "boolean"
            }
          }
        },
        "legal_mentions": {
          "type": "object",
          "properties": {
            "en": {
              "type": "string"
            },
            "fr": {
              "type": "string"
            },
            "nl": {
              "type": "string"
            }
          }
        },
        "property_and_land": {
          "type": "object",
          "properties": {
            "purchased_year": {
              "type": [
                "string",
                "null"
              ]
            },
            "cadastral_income": {
              "type": [
                "number",
                "null"
              ]
            },
            "flood_risk: `no_flood_risk_area`,`potential_flood_sensitive_area`,`effective_flood_sensitive_area`": {
              "type": "null"
            },
            "land_use_designation": {
              "type": [
                "string",
                "null"
              ],
              "enum": [
                "agricultural",
                null
              ]
            },
            "flood_risk_plot_score": {
              "type": [
                "string",
                "null"
              ],
              "enum": [
                "A",
                "B",
                "C",
                "D",
                null
              ]
            },
            "flood_risk_building_score": {
              "type": [
                "string",
                "null"
              ],
              "enum": [
                "A",
                "B",
                "C",
                "D",
                null
              ]
            }
          }
        }
      }
    },
    "auction": {
      "type": "object",
      "properties": {
        "start_date": {
          "type": "string"
        }
      }
    },
    "open_homes": {
      "type": "array"
    },
    "price": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number"
        },
        "currency": {
          "type": "string",
          "enum": [
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ANG",
            "AOA",
            "ARS",
            "AUD",
            "AWG",
            "AZN",
            "BAM",
            "BBD",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BMD",
            "BND",
            "BOB",
            "BRL",
            "BSD",
            "BTN",
            "BWP",
            "BYR",
            "BZD",
            "CAD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CUP",
            "CVE",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EGP",
            "ERN",
            "ETB",
            "FJD",
            "FKP",
            "GBP",
            "GEL",
            "GHS",
            "GIP",
            "GMD",
            "GNF",
            "GTQ",
            "GYD",
            "HKD",
            "HNL",
            "HRK",
            "HTG",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KGS",
            "KHR",
            "KMF",
            "KPW",
            "KRW",
            "KWD",
            "KYD",
            "KZT",
            "LAK",
            "LBP",
            "LKR",
            "LRD",
            "LYD",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MNT",
            "MOP",
            "MRO",
            "MUR",
            "MVR",
            "MWK",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PEN",
            "PGK",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SBD",
            "SCR",
            "SDG",
            "SEK",
            "SGD",
            "SHP",
            "SLL",
            "SOS",
            "SRD",
            "SSP",
            "STD",
            "SYP",
            "SZL",
            "THB",
            "TJS",
            "TMT",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "USD",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "VUV",
            "WST",
            "XAF",
            "XCD",
            "XOF",
            "XPF",
            "YER",
            "ZAR",
            "ZMW"
          ]
        },
        "hidden": {
          "type": "boolean"
        }
      }
    },
    "price_negotiated": {
      "type": "number"
    },
    "price_costs": {
      "type": "object",
      "properties": {
        "en": {
          "type": "string"
        },
        "fr": {
          "type": "string"
        },
        "nl": {
          "type": "string"
        }
      }
    },
    "price_taxes": {
      "type": "object",
      "properties": {
        "en": {
          "type": "string"
        },
        "fr": {
          "type": "string"
        },
        "nl": {
          "type": "string"
        }
      }
    },
    "price_vat_regime": {
      "type": "number"
    },
    "price_yearly_budgeted_building_costs": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number"
        },
        "currency": {
          "type": "string",
          "enum": [
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ANG",
            "AOA",
            "ARS",
            "AUD",
            "AWG",
            "AZN",
            "BAM",
            "BBD",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BMD",
            "BND",
            "BOB",
            "BRL",
            "BSD",
            "BTN",
            "BWP",
            "BYR",
            "BZD",
            "CAD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CUP",
            "CVE",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EGP",
            "ERN",
            "ETB",
            "FJD",
            "FKP",
            "GBP",
            "GEL",
            "GHS",
            "GIP",
            "GMD",
            "GNF",
            "GTQ",
            "GYD",
            "HKD",
            "HNL",
            "HRK",
            "HTG",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KGS",
            "KHR",
            "KMF",
            "KPW",
            "KRW",
            "KWD",
            "KYD",
            "KZT",
            "LAK",
            "LBP",
            "LKR",
            "LRD",
            "LYD",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MNT",
            "MOP",
            "MRO",
            "MUR",
            "MVR",
            "MWK",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PEN",
            "PGK",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SBD",
            "SCR",
            "SDG",
            "SEK",
            "SGD",
            "SHP",
            "SLL",
            "SOS",
            "SRD",
            "SSP",
            "STD",
            "SYP",
            "SZL",
            "THB",
            "TJS",
            "TMT",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "USD",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "VUV",
            "WST",
            "XAF",
            "XCD",
            "XOF",
            "XPF",
            "YER",
            "ZAR",
            "ZMW"
          ]
        }
      }
    },
    "price_property_taxes": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number"
        },
        "currency": {
          "type": "string",
          "enum": [
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ANG",
            "AOA",
            "ARS",
            "AUD",
            "AWG",
            "AZN",
            "BAM",
            "BBD",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BMD",
            "BND",
            "BOB",
            "BRL",
            "BSD",
            "BTN",
            "BWP",
            "BYR",
            "BZD",
            "CAD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CUP",
            "CVE",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EGP",
            "ERN",
            "ETB",
            "FJD",
            "FKP",
            "GBP",
            "GEL",
            "GHS",
            "GIP",
            "GMD",
            "GNF",
            "GTQ",
            "GYD",
            "HKD",
            "HNL",
            "HRK",
            "HTG",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KGS",
            "KHR",
            "KMF",
            "KPW",
            "KRW",
            "KWD",
            "KYD",
            "KZT",
            "LAK",
            "LBP",
            "LKR",
            "LRD",
            "LYD",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MNT",
            "MOP",
            "MRO",
            "MUR",
            "MVR",
            "MWK",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PEN",
            "PGK",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SBD",
            "SCR",
            "SDG",
            "SEK",
            "SGD",
            "SHP",
            "SLL",
            "SOS",
            "SRD",
            "SSP",
            "STD",
            "SYP",
            "SZL",
            "THB",
            "TJS",
            "TMT",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "USD",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "VUV",
            "WST",
            "XAF",
            "XCD",
            "XOF",
            "XPF",
            "YER",
            "ZAR",
            "ZMW"
          ]
        }
      }
    },
    "price_recurring_costs": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number"
        },
        "currency": {
          "type": "string",
          "enum": [
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ANG",
            "AOA",
            "ARS",
            "AUD",
            "AWG",
            "AZN",
            "BAM",
            "BBD",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BMD",
            "BND",
            "BOB",
            "BRL",
            "BSD",
            "BTN",
            "BWP",
            "BYR",
            "BZD",
            "CAD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CUP",
            "CVE",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EGP",
            "ERN",
            "ETB",
            "FJD",
            "FKP",
            "GBP",
            "GEL",
            "GHS",
            "GIP",
            "GMD",
            "GNF",
            "GTQ",
            "GYD",
            "HKD",
            "HNL",
            "HRK",
            "HTG",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KGS",
            "KHR",
            "KMF",
            "KPW",
            "KRW",
            "KWD",
            "KYD",
            "KZT",
            "LAK",
            "LBP",
            "LKR",
            "LRD",
            "LYD",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MNT",
            "MOP",
            "MRO",
            "MUR",
            "MVR",
            "MWK",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PEN",
            "PGK",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SBD",
            "SCR",
            "SDG",
            "SEK",
            "SGD",
            "SHP",
            "SLL",
            "SOS",
            "SRD",
            "SSP",
            "STD",
            "SYP",
            "SZL",
            "THB",
            "TJS",
            "TMT",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "USD",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "VUV",
            "WST",
            "XAF",
            "XCD",
            "XOF",
            "XPF",
            "YER",
            "ZAR",
            "ZMW"
          ]
        }
      }
    },
    "price_guarantee": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number"
        },
        "currency": {
          "type": "string",
          "enum": [
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ANG",
            "AOA",
            "ARS",
            "AUD",
            "AWG",
            "AZN",
            "BAM",
            "BBD",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BMD",
            "BND",
            "BOB",
            "BRL",
            "BSD",
            "BTN",
            "BWP",
            "BYR",
            "BZD",
            "CAD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CUP",
            "CVE",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EGP",
            "ERN",
            "ETB",
            "FJD",
            "FKP",
            "GBP",
            "GEL",
            "GHS",
            "GIP",
            "GMD",
            "GNF",
            "GTQ",
            "GYD",
            "HKD",
            "HNL",
            "HRK",
            "HTG",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KGS",
            "KHR",
            "KMF",
            "KPW",
            "KRW",
            "KWD",
            "KYD",
            "KZT",
            "LAK",
            "LBP",
            "LKR",
            "LRD",
            "LYD",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MNT",
            "MOP",
            "MRO",
            "MUR",
            "MVR",
            "MWK",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PEN",
            "PGK",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SBD",
            "SCR",
            "SDG",
            "SEK",
            "SGD",
            "SHP",
            "SLL",
            "SOS",
            "SRD",
            "SSP",
            "STD",
            "SYP",
            "SZL",
            "THB",
            "TJS",
            "TMT",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "USD",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "VUV",
            "WST",
            "XAF",
            "XCD",
            "XOF",
            "XPF",
            "YER",
            "ZAR",
            "ZMW"
          ]
        }
      }
    },
    "price_inventory_report_cost": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number"
        },
        "currency": {
          "type": "string",
          "enum": [
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ANG",
            "AOA",
            "ARS",
            "AUD",
            "AWG",
            "AZN",
            "BAM",
            "BBD",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BMD",
            "BND",
            "BOB",
            "BRL",
            "BSD",
            "BTN",
            "BWP",
            "BYR",
            "BZD",
            "CAD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CUP",
            "CVE",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EGP",
            "ERN",
            "ETB",
            "FJD",
            "FKP",
            "GBP",
            "GEL",
            "GHS",
            "GIP",
            "GMD",
            "GNF",
            "GTQ",
            "GYD",
            "HKD",
            "HNL",
            "HRK",
            "HTG",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KGS",
            "KHR",
            "KMF",
            "KPW",
            "KRW",
            "KWD",
            "KYD",
            "KZT",
            "LAK",
            "LBP",
            "LKR",
            "LRD",
            "LYD",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MNT",
            "MOP",
            "MRO",
            "MUR",
            "MVR",
            "MWK",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PEN",
            "PGK",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SBD",
            "SCR",
            "SDG",
            "SEK",
            "SGD",
            "SHP",
            "SLL",
            "SOS",
            "SRD",
            "SSP",
            "STD",
            "SYP",
            "SZL",
            "THB",
            "TJS",
            "TMT",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "USD",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "VUV",
            "WST",
            "XAF",
            "XCD",
            "XOF",
            "XPF",
            "YER",
            "ZAR",
            "ZMW"
          ]
        }
      }
    },
    "price_reference_rent": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number"
        },
        "currency": {
          "type": "string",
          "enum": [
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ANG",
            "AOA",
            "ARS",
            "AUD",
            "AWG",
            "AZN",
            "BAM",
            "BBD",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BMD",
            "BND",
            "BOB",
            "BRL",
            "BSD",
            "BTN",
            "BWP",
            "BYR",
            "BZD",
            "CAD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CUP",
            "CVE",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EGP",
            "ERN",
            "ETB",
            "FJD",
            "FKP",
            "GBP",
            "GEL",
            "GHS",
            "GIP",
            "GMD",
            "GNF",
            "GTQ",
            "GYD",
            "HKD",
            "HNL",
            "HRK",
            "HTG",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KGS",
            "KHR",
            "KMF",
            "KPW",
            "KRW",
            "KWD",
            "KYD",
            "KZT",
            "LAK",
            "LBP",
            "LKR",
            "LRD",
            "LYD",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MNT",
            "MOP",
            "MRO",
            "MUR",
            "MVR",
            "MWK",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PEN",
            "PGK",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SBD",
            "SCR",
            "SDG",
            "SEK",
            "SGD",
            "SHP",
            "SLL",
            "SOS",
            "SRD",
            "SSP",
            "STD",
            "SYP",
            "SZL",
            "THB",
            "TJS",
            "TMT",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "USD",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "VUV",
            "WST",
            "XAF",
            "XCD",
            "XOF",
            "XPF",
            "YER",
            "ZAR",
            "ZMW"
          ]
        }
      }
    },
    "price_base_rent": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number"
        },
        "currency": {
          "type": "string",
          "enum": [
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ANG",
            "AOA",
            "ARS",
            "AUD",
            "AWG",
            "AZN",
            "BAM",
            "BBD",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BMD",
            "BND",
            "BOB",
            "BRL",
            "BSD",
            "BTN",
            "BWP",
            "BYR",
            "BZD",
            "CAD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CUP",
            "CVE",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EGP",
            "ERN",
            "ETB",
            "FJD",
            "FKP",
            "GBP",
            "GEL",
            "GHS",
            "GIP",
            "GMD",
            "GNF",
            "GTQ",
            "GYD",
            "HKD",
            "HNL",
            "HRK",
            "HTG",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KGS",
            "KHR",
            "KMF",
            "KPW",
            "KRW",
            "KWD",
            "KYD",
            "KZT",
            "LAK",
            "LBP",
            "LKR",
            "LRD",
            "LYD",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MNT",
            "MOP",
            "MRO",
            "MUR",
            "MVR",
            "MWK",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PEN",
            "PGK",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SBD",
            "SCR",
            "SDG",
            "SEK",
            "SGD",
            "SHP",
            "SLL",
            "SOS",
            "SRD",
            "SSP",
            "STD",
            "SYP",
            "SZL",
            "THB",
            "TJS",
            "TMT",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "USD",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "VUV",
            "WST",
            "XAF",
            "XCD",
            "XOF",
            "XPF",
            "YER",
            "ZAR",
            "ZMW"
          ]
        }
      }
    },
    "price_rent_supplement": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number"
        },
        "currency": {
          "type": "string",
          "enum": [
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ANG",
            "AOA",
            "ARS",
            "AUD",
            "AWG",
            "AZN",
            "BAM",
            "BBD",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BMD",
            "BND",
            "BOB",
            "BRL",
            "BSD",
            "BTN",
            "BWP",
            "BYR",
            "BZD",
            "CAD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CUP",
            "CVE",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EGP",
            "ERN",
            "ETB",
            "FJD",
            "FKP",
            "GBP",
            "GEL",
            "GHS",
            "GIP",
            "GMD",
            "GNF",
            "GTQ",
            "GYD",
            "HKD",
            "HNL",
            "HRK",
            "HTG",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KGS",
            "KHR",
            "KMF",
            "KPW",
            "KRW",
            "KWD",
            "KYD",
            "KZT",
            "LAK",
            "LBP",
            "LKR",
            "LRD",
            "LYD",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MNT",
            "MOP",
            "MRO",
            "MUR",
            "MVR",
            "MWK",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PEN",
            "PGK",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SBD",
            "SCR",
            "SDG",
            "SEK",
            "SGD",
            "SHP",
            "SLL",
            "SOS",
            "SRD",
            "SSP",
            "STD",
            "SYP",
            "SZL",
            "THB",
            "TJS",
            "TMT",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "USD",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "VUV",
            "WST",
            "XAF",
            "XCD",
            "XOF",
            "XPF",
            "YER",
            "ZAR",
            "ZMW"
          ]
        }
      }
    },
    "custom_price": {
      "type": "string"
    },
    "location": {
      "type": "object",
      "properties": {
        "geo": {
          "type": "object",
          "properties": {
            "latitude": {
              "type": "number"
            },
            "longitude": {
              "type": "number"
            }
          }
        },
        "city": {
          "type": "string"
        },
        "street": {
          "type": "string"
        },
        "street_2": {
          "type": "string"
        },
        "number": {
          "type": "string"
        },
        "box": {
          "type": "string"
        },
        "addition": {
          "type": "string"
        },
        "floor": {
          "type": "number"
        },
        "country": {
          "type": "string"
        },
        "formatted": {
          "type": "string"
        },
        "formatted_agency": {
          "type": "string"
        },
        "postal_code": {
          "type": "string"
        },
        "hidden": {
          "type": "boolean"
        }
      }
    },
    "amenities": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "pool",
          "basement",
          "terrace",
          "garden",
          "parking",
          "lift",
          "cooling_room",
          "display_window",
          "reception_area",
          "waiting_area",
          "guesthouse",
          "attic",
          "water_access",
          "fenced",
          "utilities_access",
          "sewer_access",
          "drainage",
          "road_access",
          "print_and_copy_area",
          "server_room",
          "storage_space",
          "electrical_gate",
          "manual_gate",
          "fence",
          "remote_control",
          "key_card",
          "code",
          "climate_control",
          "balcony",
          "interior_parking",
          "exterior_parking"
        ]
      }
    },
    "sizes": {
      "type": "object",
      "properties": {
        "plot_area": {
          "type": "object",
          "properties": {
            "size": {
              "type": "number"
            },
            "unit": {
              "type": "string",
              "enum": [
                "sq_ft",
                "sq_m",
                "are",
                "acre"
              ]
            }
          }
        },
        "liveable_area": {
          "type": "object",
          "properties": {
            "size": {
              "type": "number"
            },
            "unit": {
              "type": "string",
              "enum": [
                "sq_ft",
                "sq_m",
                "are",
                "acre"
              ]
            }
          }
        },
        "loi_carrez_area": {
          "type": "object",
          "properties": {
            "size": {
              "type": "number"
            },
            "unit": {
              "type": "string",
              "enum": [
                "sq_ft",
                "sq_m",
                "are",
                "acre"
              ]
            }
          }
        }
      }
    },
    "permissions": {
      "type": "object",
      "properties": {
        "farming": {
          "type": "boolean"
        },
        "fishing": {
          "type": "boolean"
        },
        "planning": {
          "type": "boolean"
        },
        "construction": {
          "type": "boolean"
        }
      }
    },
    "rooms": {
      "type": "array"
    },
    "floors": {
      "type": "number"
    },
    "images": {
      "type": "array"
    },
    "plans": {
      "type": "array"
    },
    "documents": {
      "type": "array"
    },
    "features": {
      "type": "object",
      "properties": {
        "energy": {
          "type": "object",
          "properties": {
            "gas": {
              "type": "boolean"
            },
            "fuel": {
              "type": "boolean"
            },
            "electricity": {
              "type": "boolean"
            },
            "heat_pump": {
              "type": "boolean"
            }
          }
        },
        "comfort": {
          "type": "object",
          "properties": {
            "home_automation": {
              "type": "boolean"
            },
            "water_softener": {
              "type": "boolean"
            },
            "fireplace": {
              "type": "boolean"
            },
            "walk_in_closet": {
              "type": "boolean"
            },
            "home_cinema": {
              "type": "boolean"
            },
            "wine_cellar": {
              "type": "boolean"
            },
            "sauna": {
              "type": "boolean"
            },
            "fitness_room": {
              "type": "boolean"
            },
            "furnished": {
              "type": "boolean"
            }
          }
        },
        "ecology": {
          "type": "object",
          "properties": {
            "double_glazing": {
              "type": "boolean"
            },
            "solar_panels": {
              "type": "boolean"
            },
            "solar_boiler": {
              "type": "boolean"
            },
            "rainwater_harvesting": {
              "type": "boolean"
            },
            "insulated_roof": {
              "type": "boolean"
            }
          }
        },
        "security": {
          "type": "object",
          "properties": {
            "alarm": {
              "type": "boolean"
            },
            "concierge": {
              "type": "boolean"
            },
            "video_surveillance": {
              "type": "boolean"
            }
          }
        },
        "heating_cooling": {
          "type": "object",
          "properties": {
            "central_heating": {
              "type": "boolean"
            },
            "floor_heating": {
              "type": "boolean"
            },
            "air_conditioning": {
              "type": "boolean"
            },
            "individual_heating": {
              "type": "boolean"
            }
          }
        }
      }
    },
    "building": {
      "type": "object",
      "properties": {
        "renovation": {
          "type": "object",
          "properties": {
            "year": {
              "type": "number"
            },
            "description": {
              "type": "string"
            }
          }
        },
        "construction": {
          "type": "object",
          "properties": {
            "year": {
              "type": "number"
            },
            "architect": {
              "type": "string"
            }
          }
        },
        "units_of_building": {
          "type": "number"
        },
        "residential_lots": {
          "type": "number"
        },
        "number_of_floor_building": {
          "type": "number"
        }
      }
    },
    "negotiator": {
      "type": "object",
      "properties": {
        "first_name": {
          "type": "string"
        },
        "last_name": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "photo_url": {
          "type": "string"
        },
        "photo_url_expires_on": {
          "type": "string"
        }
      }
    },
    "agency_commission": {
      "type": "object",
      "properties": {
        "fixed_fee": {
          "type": "number"
        },
        "percentage": {
          "type": "number"
        }
      }
    },
    "mandate": {
      "type": "object",
      "properties": {
        "start_date": {
          "type": "string"
        },
        "end_date": {
          "type": "string"
        },
        "exclusive": {
          "type": "boolean"
        },
        "number": {
          "type": "string"
        }
      }
    },
    "internal_note": {
      "type": "string"
    },
    "occupancy": {
      "type": "object",
      "properties": {
        "occupied": {
          "type": "boolean"
        },
        "current_rent": {
          "type": "object",
          "properties": {
            "amount": {
              "type": "number"
            },
            "currency": {
              "type": "string",
              "enum": [
                "EUR",
                "AED",
                "AFN",
                "ALL",
                "AMD",
                "ANG",
                "AOA",
                "ARS",
                "AUD",
                "AWG",
                "AZN",
                "BAM",
                "BBD",
                "BDT",
                "BGN",
                "BHD",
                "BIF",
                "BMD",
                "BND",
                "BOB",
                "BRL",
                "BSD",
                "BTN",
                "BWP",
                "BYR",
                "BZD",
                "CAD",
                "CDF",
                "CHF",
                "CLP",
                "CNY",
                "COP",
                "CRC",
                "CUP",
                "CVE",
                "DJF",
                "DKK",
                "DOP",
                "DZD",
                "EGP",
                "ERN",
                "ETB",
                "FJD",
                "FKP",
                "GBP",
                "GEL",
                "GHS",
                "GIP",
                "GMD",
                "GNF",
                "GTQ",
                "GYD",
                "HKD",
                "HNL",
                "HRK",
                "HTG",
                "HUF",
                "IDR",
                "ILS",
                "INR",
                "IQD",
                "IRR",
                "ISK",
                "JMD",
                "JOD",
                "JPY",
                "KES",
                "KGS",
                "KHR",
                "KMF",
                "KPW",
                "KRW",
                "KWD",
                "KYD",
                "KZT",
                "LAK",
                "LBP",
                "LKR",
                "LRD",
                "LYD",
                "MAD",
                "MDL",
                "MGA",
                "MKD",
                "MMK",
                "MNT",
                "MOP",
                "MRO",
                "MUR",
                "MVR",
                "MWK",
                "MXN",
                "MYR",
                "MZN",
                "NAD",
                "NGN",
                "NIO",
                "NOK",
                "NPR",
                "NZD",
                "OMR",
                "PEN",
                "PGK",
                "PHP",
                "PKR",
                "PLN",
                "PYG",
                "QAR",
                "RON",
                "RSD",
                "RUB",
                "RWF",
                "SAR",
                "SBD",
                "SCR",
                "SDG",
                "SEK",
                "SGD",
                "SHP",
                "SLL",
                "SOS",
                "SRD",
                "SSP",
                "STD",
                "SYP",
                "SZL",
                "THB",
                "TJS",
                "TMT",
                "TND",
                "TOP",
                "TRY",
                "TTD",
                "TWD",
                "TZS",
                "UAH",
                "UGX",
                "USD",
                "UYU",
                "UZS",
                "VEF",
                "VND",
                "VUV",
                "WST",
                "XAF",
                "XCD",
                "XOF",
                "XPF",
                "YER",
                "ZAR",
                "ZMW"
              ]
            }
          }
        },
        "available_from": {
          "type": "string"
        },
        "contact_details": {
          "type": "string"
        },
        "tenant_contract": {
          "type": "object",
          "properties": {
            "end_date": {
              "type": "string"
            },
            "start_date": {
              "type": "string"
            }
          }
        }
      }
    },
    "office": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "buyers": {
      "type": "array"
    },
    "vendors": {
      "type": "array"
    },
    "settings": {
      "type": "object",
      "properties": {
        "reference": {
          "type": "string"
        }
      }
    },
    "properties": {
      "type": "array"
    },
    "buyer_percentage": {
      "type": "number"
    },
    "buyer_fixed_fee": {
      "type": "number"
    },
    "vendor_percentage": {
      "type": "number"
    },
    "vendor_fixed_fee": {
      "type": "number"
    },
    "legal_entity": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    }
  }
}

Set URL for an estate

Set URL for an estate
PUT/estates/{estate}/url

Example URI

PUT /estates/00930234-4f4e-42f1-a42e-206273dd8c53/url
URI Parameters
HideShow
estate
string (required) Example: 00930234-4f4e-42f1-a42e-206273dd8c53
Request
HideShow
Headers
Accept: application/vnd.sweepbright.v20191206+json
Authorization: Bearer <token>
Content-Type: application/json
Body
{
    "url" => "https://full-url-to-websi.te/estate-detail"
}
Response  204
HideShow
Headers
Content-Type: application/vnd.sweepbright.v20191206+json
Response  422
HideShow
Headers
Content-Type: application/vnd.sweepbright.v20191206+json
Body
{
  "code": 422,
  "message": "The given data failed to pass validation.",
  "errors": {
    "url": [
      "The url field is required."
    ]
  }
}

Contact request for an estate

Send contact request for an estate (deprecated)
POST/estates/{estate}/contacts

This endpoint is deprecated. Please use the /contacts endpoint instead.

Example URI

POST /estates/00930234-4f4e-42f1-a42e-206273dd8c53/contacts
URI Parameters
HideShow
estate
string (required) Example: 00930234-4f4e-42f1-a42e-206273dd8c53
Request
HideShow
Headers
Accept: application/vnd.sweepbright.v20191206+json
Authorization: Bearer <token>
Content-Type: application/json
Body
{
  "first_name": "John",
  "last_name": "Doe",
  "email": "john@doe.com",
  "phone": "+123456789",
  "message": "I am looking for a nice house for my family",
  "locale": "nl"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string"
    },
    "last_name": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "locale": {
      "type": "string",
      "enum": [
        "nl",
        "fr",
        "en"
      ]
    }
  },
  "required": [
    "first_name",
    "last_name",
    "email",
    "phone",
    "message"
  ]
}
Response  201
HideShow
Headers
Content-Type: application/vnd.sweepbright.v20191206+json
Response  422
HideShow
Headers
Content-Type: application/vnd.sweepbright.v20191206+json
Body
{
  "code": 422,
  "message": "The given data failed to pass validation.",
  "errors": {
    "email": [
      "The email field is required."
    ]
  }
}

Contact request

Send general contact request
POST/contacts

If there’s no property_id provided, the request will be treated as a general contact request.

Example URI

POST /contacts
Request
HideShow
Headers
Accept: application/vnd.sweepbright.v20191206+json
Authorization: Bearer <token>
Content-Type: application/json
Body
{
  "first_name": "John",
  "last_name": "Doe",
  "email": "john@doe.com",
  "phone": "+123456789",
  "message": "I am looking for a nice house for my family",
  "locale": "nl",
  "preferences": {
    "negotiation": "let",
    "types": [
      "apartment",
      "commercial",
      "house",
      "land",
      "office",
      "parking"
    ],
    "max_price": 150000,
    "min_price": 60000,
    "min_rooms": 2
  },
  "location_preference": {
    "country": "BE",
    "postal_codes": [
      "2000",
      "2018",
      "2140"
    ]
  },
  "pronouns": [
    "male",
    "female",
    "neutral"
  ],
  "office_id": "9efed33c-7834-4a03-a479-6e99411ed708"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string"
    },
    "last_name": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "locale": {
      "type": "string",
      "enum": [
        "nl",
        "fr",
        "en"
      ]
    },
    "preferences": {
      "type": "object",
      "properties": {
        "negotiation": {
          "type": "string",
          "enum": [
            "let",
            "sale"
          ]
        },
        "types": {
          "type": "array",
          "items": [
            {
              "type": "string"
            },
            {
              "type": "string"
            },
            {
              "type": "string"
            },
            {
              "type": "string"
            },
            {
              "type": "string"
            },
            {
              "type": "string"
            }
          ]
        },
        "max_price": {
          "type": "number"
        },
        "min_price": {
          "type": "number"
        },
        "min_rooms": {
          "type": "number"
        }
      }
    },
    "location_preference": {
      "type": "object",
      "properties": {
        "country": {
          "type": "string"
        },
        "postal_codes": {
          "type": "array",
          "items": [
            {
              "type": "string"
            },
            {
              "type": "string"
            },
            {
              "type": "string"
            }
          ]
        }
      }
    },
    "pronouns": {
      "type": [
        "array",
        "null"
      ],
      "items": [
        {
          "type": "string"
        },
        {
          "type": "string"
        },
        {
          "type": "string"
        }
      ]
    },
    "office_id": {
      "type": "string"
    }
  },
  "required": [
    "first_name",
    "last_name",
    "email",
    "phone",
    "message"
  ]
}
Response  201
HideShow
Headers
Content-Type: application/vnd.sweepbright.v20191206+json
Response  422
HideShow
Headers
Content-Type: application/vnd.sweepbright.v20191206+json
Body
{
  "code": 422,
  "message": "The given data failed to pass validation.",
  "errors": {
    "email": [
      "The email field is required."
    ]
  }
}

Send a contact with property request
POST/contacts

If there’s a property_id provided, the request will be treated as a contact request for a specific property.

Example URI

POST /contacts
Request
HideShow
Headers
Accept: application/vnd.sweepbright.v20191206+json
Authorization: Bearer <token>
Content-Type: application/json
Body
{
  "first_name": "John",
  "last_name": "Doe",
  "email": "john@doe.com",
  "phone": "+123456789",
  "message": "I am looking for a nice house for my family",
  "locale": "nl",
  "property_id": "5803063b-aae6-49b4-8aaa-1c03f0e80cca"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string"
    },
    "last_name": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "locale": {
      "type": "string",
      "enum": [
        "nl",
        "fr",
        "en"
      ]
    },
    "property_id": {
      "type": "string"
    }
  },
  "required": [
    "first_name",
    "last_name",
    "email",
    "phone",
    "message"
  ]
}
Response  202
HideShow
Headers
Content-Type: application/vnd.sweepbright.v20191206+json
Response  422
HideShow
Headers
Content-Type: application/vnd.sweepbright.v20191206+json
Body
{
  "code": 422,
  "message": "The given data failed to pass validation.",
  "errors": {
    "email": [
      "The email field is required."
    ]
  }
}

Owners contact request

Send owner request
POST/contacts/owners

Creates or updates an owner lead. If id is not provided, a random one will be generated. If existing owner is found (by id or email), it will be updated.

Example URI

POST /contacts/owners
Request
HideShow
Headers
Accept: application/vnd.sweepbright.v20191206+json
Authorization: Bearer <token>
Content-Type: application/json
Body
{
  "id": "078e0819-7574-42df-a2a0-3aa9c9c69bc4",
  "first_name": "John",
  "last_name": "Doe",
  "email": "john@doe.com",
  "phone": "+123456789",
  "message": "I want to sell my apartment",
  "pronouns": [
    "male",
    "female",
    "neutral"
  ],
  "office_id": "ccb1deac-60d5-4ca5-b507-76faa5fef291"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "first_name": {
      "type": "string"
    },
    "last_name": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "pronouns": {
      "type": [
        "array",
        "null"
      ],
      "items": [
        {
          "type": "string"
        },
        {
          "type": "string"
        },
        {
          "type": "string"
        }
      ]
    },
    "office_id": {
      "type": "string"
    }
  },
  "required": [
    "first_name",
    "last_name",
    "email",
    "phone",
    "message"
  ]
}
Response  201
HideShow
Headers
Content-Type: application/vnd.sweepbright.v20191206+json
Response  422
HideShow
Headers
Content-Type: application/vnd.sweepbright.v20191206+json
Body
{
  "code": 422,
  "message": "The given data failed to pass validation.",
  "errors": {
    "email": [
      "The email field is required."
    ]
  }
}

Webhooks

A webhook URL can be defined per company, which will be called everytime a change of an estate is published. We will send a POST request with some JSON metadata to your configured URL. We expect a 200 response.

Confirming hook authenticity

You can confirm the webhook authenticity by calculating a HMAC hash using the SHA-1 hashing algorithm, the JSON payload of the webhook and your OAuth secret key. The calculated hash should be the same as the one found in the X-Hook-Signature header we sent along with the webhook.

Webhook during development

When you are starting to build the integration, SweepBright will ask you to provide a test webhook to set up your test company. Make sure that the webhook you provide us is available on the internet and is not a local webhook. If you want to ease local development, you can use a tool like ngrok to tunnel a publicly available link to your localhost.

Webhook body [POST]

  • Request

    • Headers

      Content-Type: application/json
      X-Hook-Signature: "a9e7db538d4592fa5e7098bfa86d0630651435d3"
    • Body

      {
                "event": "estate-added|estate-updated|estate-deleted",
                "estate_id": "<estate-id>",
                "happened_at": "2017-01-01T10:10:10",
                "company_id": "3186772c-5ab7-42fe-a8cc-ea1ef8c368d3",
            }
  • Response 200

Generated by aglio on 04 Apr 2024