Get started

   
                

The WSS REST API (Representational State Transfer Application Programming Interface) allows users to interact with a system using standard HTTP methods. In this particular REST API, users can manage apartment data efficiently. The API provides endpoints to retrieve a list of available apartments and to update specific details of individual apartments, such as price, availability, or area. This enables seamless integration with frontend applications or other services that need access to apartment-related information.

Authorization

API Endpoint

Production environment: https://www.webshow.property-sales-engine.com/restapi
Dev environment: https://www.betawebshow.property-sales-engine.com/restapi
                

To use this API, you need an API key. Please contact us at peter@beyond-visual.com to get your own. You need provide this API key as X-API-key in the header of the request.

Get Apartments list


# Here is a curl example
curl \
-X GET https://www.webshow.property-sales-engine.com/restapi/apartment/list \
-H "x-API-key: your_api_key_here" \
-H "Content-Type: application/json" \
-F 'limit=50' \
-F 'offset=0'
                

To get a list of Apartments, you need make a GET call to the following URL:
https://www.webshow.property-sales-engine.com/restapi/apartment/list



Result example :

{
  status: "ok",
  apartments: [
    {
      id: 677,
      name: "A.0.01",
      status: "available",
      is_active: true,
      hidden: false,
      price: 0,
      area: 30.88,
      gross_area: 33.78,
      exterior_area: 42.61,
      floor: 0,
      room_number: 1,
      datasheet_pdf: "https://sample.property-sales-engine.com/uploads/flat/677/sample.pdf",
      datasheet_pdf_image: "https://sample.property-sales-engine.com/uploads/flat/677/sample.jpg",
      url: "https://sample.property-sales-engine.com/#A.0.01",
      media: [
        {
          image:{
            large: "https://sample.property-sales-engine.com/uploads/flat/677/large/sample.jpg",
            mid: "https://sample.property-sales-engine.com/uploads/flat/677/mid/sample.jpg",
            thumb: "https://sample.property-sales-engine.com/uploads/flat/677/thumb/sample.jpg"
          },
          media_type: "image",
          media_image: "floorplan"
        }
      ]
      rooms: [
        {
          "type":"living",
          "area":43.71,
          "area_string":"",
          "name":
            {
              "en":"Living room",
              "de":"Wohnzimmer"
            }
        },
        {
          "type":"bed",
          "area":16.1,
          "area_string":"",
          "name":
            {
              "en":"Bedroom",
              "de":"Schlafzimmer"
            }
        },
        {
          "type":"kitchen",
          "area":11.3,
          "area_string":"",
          "name":
            {
              "en":"Kitchen",
              "de":"Küche"
            }
        },
        {
          "type":"shower",
          "area":5.7,
          "area_string":"",
          "name":
            {
              "en":"Shower",
              "de":"Dusche"
            }
        },
        {
          "type":"garden",
          "area":82.45,
          "area_string":"",
          "name":
            {
              "en":"Garden",
              "de":"Garten"
            }
        }
      ]
    },
    {
      id: 678,
      name: "A.1.02",
      status: "reserved",
      is_active: false,
      hidden: true,
      price: 0,
      area: 89.88,
      gross_area: 91.69,
      exterior_area: 12.3,
      floor: 1,
      room_number: 3,
      datasheet_pdf: "https://sample.property-sales-engine.com/uploads/flat/678/sample.pdf",
      datasheet_pdf_image: "https://sample.property-sales-engine.com/uploads/flat/678/sample.jpg",
      url: "https://sample.property-sales-engine.com/#A.0.02",
      media: [
        {
          image:{
            large: "https://sample.property-sales-engine.com/uploads/flat/678/large/sample.jpg",
            mid: "https://sample.property-sales-engine.com/uploads/flat/678/mid/sample.jpg",
            thumb: "https://sample.property-sales-engine.com/uploads/flat/678/thumb/sample.jpg"
          },
          media_type: "image",
          media_image: "floorplan"
        }
      ]
      rooms: [
        {
          "type":"living",
          "area":43.71,
          "area_string":"",
          "name":
            {
              "en":"Living room",
              "de":"Wohnzimmer"
            }
        },
        {
          "type":"bed",
          "area":16.1,
          "area_string":"",
          "name":
            {
              "en":"Bedroom",
              "de":"Schlafzimmer"
            }
        },
        {
          "type":"kitchen",
          "area":11.3,
          "area_string":"",
          "name":
            {
              "en":"Kitchen",
              "de":"Küche"
            }
        },
        {
          "type":"shower",
          "area":5.7,
          "area_string":"",
          "name":
            {
              "en":"Shower",
              "de":"Dusche"
            }
        },
        {
          "type":"garden",
          "area":82.45,
          "area_string":"",
          "name":
            {
              "en":"Garden",
              "de":"Garten"
            }
        }
      ]
    },
    {
      id: 679,
      name: "A.0.03",
      status: "sold",
      is_active: true,
      hidden: true,
      price: 0,
      area: 66.57,
      gross_area: 70.29,
      exterior_area: 15.55,
      floor: 2,
      room_number: 2,
      datasheet_pdf: "https://sample.property-sales-engine.com/uploads/flat/679/sample.pdf",
      datasheet_pdf_image: "https://sample.property-sales-engine.com/uploads/flat/679/sample.jpg",
      url: "https://sample.property-sales-engine.com/#A.2.03",
      media: [
        {
          image:{
            large: "https://sample.property-sales-engine.com/uploads/flat/679/large/sample.jpg",
            mid: "https://sample.property-sales-engine.com/uploads/flat/679/mid/sample.jpg",
            thumb: "https://sample.property-sales-engine.com/uploads/flat/679/thumb/sample.jpg"
          },
          media_type: "image",
          media_image: "floorplan"
        }
      ]
      rooms: [
        {
          "type":"living",
          "area":43.71,
          "area_string":"",
          "name":
            {
              "en":"Living room",
              "de":"Wohnzimmer"
            }
        },
        {
          "type":"bed",
          "area":16.1,
          "area_string":"",
          "name":
            {
              "en":"Bedroom",
              "de":"Schlafzimmer"
            }
        },
        {
          "type":"kitchen",
          "area":11.3,
          "area_string":"",
          "name":
            {
              "en":"Kitchen",
              "de":"Küche"
            }
        },
        {
          "type":"shower",
          "area":5.7,
          "area_string":"",
          "name":
            {
              "en":"Shower",
              "de":"Dusche"
            }
        },
        {
          "type":"garden",
          "area":82.45,
          "area_string":"",
          "name":
            {
              "en":"Garden",
              "de":"Garten"
            }
        }
      ]
    },
    {
      id: 680,
      name: "SR6.A.0.04",
      status: "not_available",
      is_active: false,
      hidden: false,
      price: 0,
      area: 49.27,
      gross_area: 51.11,
      exterior_area: 5.6,
      floor: 0,
      room_number: 2,
      datasheet_pdf: "https://sample.property-sales-engine.com/uploads/flat/680/sample.pdf",
      datasheet_pdf_image: "https://sample.property-sales-engine.com/uploads/flat/680/sample.jpg",
      url: "https://sample.property-sales-engine.com/#A.0.04",
      media: [
        {
          image:{
            large: "https://sample.property-sales-engine.com/uploads/flat/680/large/sample.jpg",
            mid: "https://sample.property-sales-engine.com/uploads/flat/680/mid/sample.jpg",
            thumb: "https://sample.property-sales-engine.com/uploads/flat/680/thumb/sample.jpg"
          },
          media_type: "image",
          media_image: "floorplan"
        }
      ]
      rooms: [
        {
          "type":"living",
          "area":43.71,
          "area_string":"",
          "name":
            {
              "en":"Living room",
              "de":"Wohnzimmer"
            }
        },
        {
          "type":"bed",
          "area":16.1,
          "area_string":"",
          "name":
            {
              "en":"Bedroom",
              "de":"Schlafzimmer"
            }
        },
        {
          "type":"kitchen",
          "area":11.3,
          "area_string":"",
          "name":
            {
              "en":"Kitchen",
              "de":"Küche"
            }
        },
        {
          "type":"shower",
          "area":5.7,
          "area_string":"",
          "name":
            {
              "en":"Shower",
              "de":"Dusche"
            }
        },
        {
          "type":"garden",
          "area":82.45,
          "area_string":"",
          "name":
            {
              "en":"Garden",
              "de":"Garten"
            }
        }
      ]
    }
  ]
}

Result example on error :

{
  status: "error"
  error_message: "Unauthorized"
}
                

QUERY PARAMETERS

Field Type Required? Description
offset Integer optional (optional) A cursor for use in pagination. Pagination starts offset the specified offset.
limit Integer optional (optional) A limit on the number of objects to be returned, between 1 and 500.

Create Apartment


# Here is a curl example
curl \
-X POST https://www.webshow.property-sales-engine.com/restapi/apartment/create \
-H "x-API-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"name": "A112", building "A", "area": 45.11, floor: 1, room_number: 1}'
                

To create an Apartment you need make a POST call to the following URL:
https://www.webshow.property-sales-engine.com/restapi/apartment/create



Parameters example:

{
  name: "A112",
  building "A",
  status: "available",
  is_active: true,
  hidden: false,
  price: 0,
  area: 30.88,
  gross_area: 33.78,
  exterior_area: 42.61,
  floor: 1,
  room_number: 1,
  datasheet_pdf: "https://sample.property-sales-engine.com/uploads/flat/677/sample.pdf",
  datasheet_pdf_image: "https://sample.property-sales-engine.com/uploads/flat/677/sample.jpg",
  flatplan: "https://sample.property-sales-engine.com/uploads/flat/677/flatplan.jpg",
  flatplan2: "https://sample.property-sales-engine.com/uploads/flat/677/flatplan2.jpg",
  floorplan: "https://sample.property-sales-engine.com/uploads/flat/677/floorplan:.jpg",
  floorplan2:"https://sample.property-sales-engine.com/uploads/flat/677/floorplan2:.jpg",
  rooms: [
	{
	  "type":"living",
	  "area":43.71,
	  "area_string":"",
	  "name":
		{
		  "en":"Living room",
		  "de":"Wohnzimmer"
		}
	},
	{
	  "type":"bed",
	  "area":16.1,
	  "area_string":"",
	  "name":
		{
		  "en":"Bedroom",
		  "de":"Schlafzimmer"
		}
	},
	{
	  "type":"kitchen",
	  "area":11.3,
	  "area_string":"",
	  "name":
		{
		  "en":"Kitchen",
		  "de":"Küche"
		}
	},
	{
	  "type":"shower",
	  "area":5.7,
	  "area_string":"",
	  "name":
		{
		  "en":"Shower",
		  "de":"Dusche"
		}
	},
	{
	  "type":"garden",
	  "area":82.45,
	  "area_string":"",
	  "name":
		{
		  "en":"Garden",
		  "de":"Garten"
		}
	}
  ]
}


Result example :

{
  status: "ok",
  apartment_id: 9999
}

Result example on error :

{
  status: "error"
  error_message: "The value provided in the exterior_area field is invalid."
}
                

QUERY PARAMETERS

Field Type Required? Description
name string required Name of the apartment
status String optional Status, allowed values:
available
reserved
not_available
sold
is_active Boolean optional Is the apartment active? You can temporarily mark it as sold without changing its status.
hidden Boolean optional You can completely hide the apartment.
price float optional Price of the apartment
area float required Net or sales area
gross_area float optional Gross area
exterior_area float optional Exterior area
building string required Building
floor float required Floor/Level
room_number integer required How many roomsdoes it have?
datasheet_pdf string optional It must contain a full URL from which it can be downloaded. We will store this image, and if you change it, you will need to send it again. Only PDF files are allowed to be uploaded.
datasheet_pdf_image string optional Image of datasheet PDF. If you upload this, the datasheet_pdf field is not required. When you download the datasheet from showroom, this field will be downloaded. It must contain a full URL from which it can be downloaded. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
flatplan string optional The apartment floor plan. It must contain a full URL from which it can be downloaded. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
flatplan2 string optional The apartment second floor plan. It must contain a full URL from which it can be downloaded. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
floorplan string optional Floor plan of the entire floor/level. It must contain a full URL from which it can be downloaded. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
floorplan2 string optional Second floor plan of the entire floor/level. It must contain a full URL from which it can be downloaded. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
rooms array optional If you want to update the room list, you need to provide the full room list.
rooms -> area float optional The area of the room
rooms -> area_string float optional The area of the room if it is not a float number.
rooms -> type required optional The type of the room. Please at least specify terrace, balcony, and garden here. You can find the full list of room types here.
rooms -> name required optional The name of the room. If you set the lang_names, this is not required.
rooms -> lang_names required optional If you want to set the name of the room for each languages, use this. If you set the name, this is not required.
rooms -> lang_names -> lang code (example: en) string optional You need to provide the ISO 639-1 code of the language as the key, and the name of the room as the value.

Update Apartment


# Here is a curl example
curl \
-X PATCH https://www.webshow.property-sales-engine.com/restapi/apartment/update/{APARTMENT_ID} \
-H "x-API-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"status": "available", "is_active": true, "area": 45.11}'
                

To update an Apartment you need make a PATCH call to the following URL:
https://www.webshow.property-sales-engine.com/restapi/apartment/update/{APARTMENT_ID}
You can get the {APARTMENT_ID} at Get Apartments List



Parameters example:

{
  building "A",
  status: "available",
  is_active: true,
  hidden: false,
  price: 0,
  area: 30.88,
  gross_area: 33.78,
  exterior_area: 42.61,
  floor: 0,
  room_number: 1,
  datasheet_pdf: "https://sample.property-sales-engine.com/uploads/flat/677/sample.pdf",
  datasheet_pdf_image: "https://sample.property-sales-engine.com/uploads/flat/677/sample.jpg",
  flatplan: "https://sample.property-sales-engine.com/uploads/flat/677/flatplan.jpg",
  flatplan2: "https://sample.property-sales-engine.com/uploads/flat/677/flatplan2.jpg",
  floorplan: "https://sample.property-sales-engine.com/uploads/flat/677/floorplan:.jpg",
  floorplan2:"https://sample.property-sales-engine.com/uploads/flat/677/floorplan2:.jpg",
  rooms: [
	{
	  "type":"living",
	  "area":43.71,
	  "area_string":"",
	  "name":
		{
		  "en":"Living room",
		  "de":"Wohnzimmer"
		}
	},
	{
	  "type":"bed",
	  "area":16.1,
	  "area_string":"",
	  "name":
		{
		  "en":"Bedroom",
		  "de":"Schlafzimmer"
		}
	},
	{
	  "type":"kitchen",
	  "area":11.3,
	  "area_string":"",
	  "name":
		{
		  "en":"Kitchen",
		  "de":"Küche"
		}
	},
	{
	  "type":"shower",
	  "area":5.7,
	  "area_string":"",
	  "name":
		{
		  "en":"Shower",
		  "de":"Dusche"
		}
	},
	{
	  "type":"garden",
	  "area":82.45,
	  "area_string":"",
	  "name":
		{
		  "en":"Garden",
		  "de":"Garten"
		}
	}
  ]
}


Result example :

{
  status: "ok",
  apartment_id: 9999
}

Result example on error :

{
  status: "error"
  error_message: "The value provided in the exterior_area field is invalid."
}
                

QUERY PARAMETERS

Field Type Required? Description
status String optional Status, allowed values:
available
reserved
not_available
sold
is_active Boolean optional Is the apartment active? You can temporarily mark it as sold without changing its status.
hidden Boolean optional You can completely hide the apartment.
price float optional Price of the apartment
area float optional Net or sales area
gross_area float optional Gross area
exterior_area float optional Exterior area
building string optional Building
floor float optional Floor/Level
room_number integer optional How many roomsdoes it have?
datasheet_pdf string optional It must contain a full URL from which it can be downloaded. We will store this image, and if you change it, you will need to send it again. Only PDF files are allowed to be uploaded.
datasheet_pdf_image string optional Image of datasheet PDF. If you upload this, the datasheet_pdf field is not required. When you download the datasheet from showroom, this field will be downloaded. It must contain a full URL from which it can be downloaded. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
flatplan string optional The apartment floor plan. It must contain a full URL from which it can be downloaded. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
flatplan2 string optional The apartment second floor plan. It must contain a full URL from which it can be downloaded. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
floorplan string optional Floor plan of the entire floor/level. It must contain a full URL from which it can be downloaded. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
floorplan2 string optional Second floor plan of the entire floor/level. It must contain a full URL from which it can be downloaded. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
rooms array optional If you want to update the room list, you need to provide the full room list.
rooms -> area float optional The area of the room
rooms -> area_string float optional The area of the room if it is not a float number.
rooms -> type required optional The type of the room. Please at least specify terrace, balcony, and garden here. You can find the full list of room types here.
rooms -> name required optional The name of the room. If you set the lang_names, this is not required.
rooms -> lang_names required optional If you want to set the name of the room for each languages, use this. If you set the name, this is not required.
rooms -> lang_names -> lang code (example: en) string optional You need to provide the ISO 639-1 code of the language as the key, and the name of the room as the value.

Upload a file for the Apartment


# Here is a curl example
curl \
-X POST https://www.webshow.property-sales-engine.com/restapi/apartment/file_upload/{APARTMENT_ID} \
-H "x-API-key: your_api_key_here" \
-H "Content-Type: multipart/form-data" \
-F datasheet_pdf=@sample.pdf
-F datasheet_pdf_image=@sample.jpg
                

Upload a new file using a multipart request to specify destination and file information. To upload a file for the Apartment you need make a POST call to the following URL:
https://www.webshow.property-sales-engine.com/restapi/apartment/update/{APARTMENT_ID}
You can get the {APARTMENT_ID} at Get Apartments List



Result example :

{
  status: "ok"
}

Result example on error :

{
  status: "error"
  error_message: "The file provided in the datasheet_pdf_image field is invalid. The image dimensions must not exceed 6000px in width or height."
}
                

QUERY PARAMETERS

Field Type Required? Description
datasheet_pdf string optional Datasheet PDF. We will store this image, and if you change it, you will need to send it again. Only PDF files are allowed to be uploaded.
datasheet_pdf_image string optional Image of datasheet PDF. If you upload this, the datasheet_pdf field is not required. When you download the datasheet from showroom, this field will be downloaded. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
flatplan string optional The apartment floor plan. It must contain a full URL from which it can be downloaded. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
flatplan2 string optional The apartment second floor plan. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
floorplan string optional Floor plan of the entire floor/level. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP
floorplan2 string optional Second floor plan of the entire floor/level. We will store this image, and if you change it, you will need to send it again. The image dimensions must not exceed 6000px in width or height. Allowed file types: JPEG, PNG, WEBP

Delete Apartment


# Here is a curl example
curl \
-X DELETE https://www.webshow.property-sales-engine.com/restapi/apartment/delete/{APARTMENT_ID} \
-H "x-API-key: your_api_key_here" \
-H "Content-Type: application/json"
                

To delete an Apartment you need make a DELETE call to the following URL:
https://www.webshow.property-sales-engine.com/restapi/apartment/delete/{APARTMENT_ID}
You can get the {APARTMENT_ID} at Get Apartments List



Result example :

{
  status: "ok"
}

Result example on error :

{
  status: "error"
  error_message: "The apartment ID is missing"
}
            

QUERY PARAMETERS

No parameters are required.

Room types

The following romm types are available:

Type Description
anteAnte
hallwayHallway / Corridor
kitchenKitchen
pantryPantry
diningDining room
bathBathroom
showerShower
toiletToilet / WC
hhHousehold room / Laundry room
livingLiving room
bedBedroom
wardrobeWardrobe / Closet
hallway_wardrobeHallway + Wardrobe
terraceTerrace
balconyBalcony
loggiaLoggia
gardenGarden
roof_gardenRoof garden
green_roofGreen roof
living_diningLiving room + Dining room
intense_green_roofIntensive green roof
living_work_diningLiving room + Workroom + Dining room
toilet_showerToilet + Shower
living_bed_diningLiving room + Bedroom + Dining room
winter_gardenWinter garden
halfintense_green_roofSemi-intensive green roof
living_dining_bedLiving room + Dining room + Bedroom
terrace_balconyTerrace / Balcony
storageStorage
kitchen_diningKitchen + Dining room
saunaSauna
officeOffice
stairsStairs
workroomWorkroom
ante_hallwayAnte + Hallway
stais_hallwayStairs + Hallway
living_kitchenLiving room + Kitchen
basementBasement
living_workroomLiving room + Workroom
dining_workroomDining room + Workroom
living_bedLiving room + Bedroom
living_dining_kitchenLiving room + Dining room + Kitchen
dressingDressing room
entranceEntrance
living_officeLiving room + Office
denDen
kitchen_officeKitchen + Office
julietJuliet balcony
den_bedroomDen + Bedroom
otherOther

Errors

The API uses the following error codes:

Error Code Meaning
400 Bad Request The request was malformed or missing required parameters.
401 Unauthorized The API key provided was invalid or missing.
404 Not Found The requested resource was not found.
500 Internal Server Error An unexpected error occurred on the server.