Overview:
This technical guide is designed for real estate service providers or the technical team within an agency responsible for managing their own system and seeking to submit a feed of their listings to the MyProperty portals.
Feed Format:
The feed can be submitted in JSON or XML.
You will supply us with:
1) an Office file, containing the office details
2) an Agent file, containing the active agents
3) a Listing file, containing the active listings
4) the direct URL's of the files on your systems
Office Specification:
Following is an example of an Office feed, all fields in the example are required.
JSON:
{
"clientOfficeID": "1234",
"clientGroup": [
{
"name": "My Agency",
"id": "1234"
}
],
"name": "My Agency",
"country": "South Africa",
"tel": "0115559999",
"email": "info@myagency.co.za",
"profile": "We are Great",
"postalAddress": "Postnet Suite 5555\\nPrivate bag X777\\nPretoria\\n0022",
"physicalAddress": "\\nPretoria",
"website": "https://www.myagency.co.za/",
"logo": "https://image-server.myagency.co.za/estate_agent/logo/123.jpg"
}
XML:
<Office>
<clientOfficeID>1234</clientOfficeID>
<clientGroup>
<name>My Agency</name>
<id>1234</id>
</clientGroup>
<name>My Agency</name>
<country>South Africa</country>
<tel>0115559999</tel>
<email>info@myagency.co.za</email>
<profile>We are Great</profile>
<postalAddress>Postnet Suite 5555\nPrivate bag X777\nPretoria\n0022</postalAddress>
<physicalAddress>\nPretoria</physicalAddress>
<website>https://www.myagency.co.za/</website>
<logo>https://image-server.myagency.co.za/estate_agent/logo/123.jpg</logo>
</Office>
Field Definitions:
Attribute | Description | Required | Sample |
ClientOfficeID | Your Unique Internal Agency Ref Number | Yes | 1234 |
clientGroup >name
>id | Name of Franchise Group or Simply the Agency Name Unique Agency Group Ref Number if applicable or Same ID as ClientOfficeID | Yes Yes
Yes
|
My Agency
1234 |
name | Agency Name | Yes | My Agency |
country | Operating country | Yes | South Africa |
tel | Office nr (landline) | Yes | 0115559999 |
Main email of the office | Yes | ||
profile | Short Description such as About Us info for the Agency | Yes | Start your property journey with us |
postalAddress | Postal Address | Yes | Full / Complete Postal Address Format: P.O. Box etc., Suburb, Town / City, ZIP / Postal Code, Province |
physicalAddress | Office Address | Yes | Full / Complete Physical Address Format: Street No & Street Name, Suburb, Town / City, ZIP / Postal Code, Province |
website | Agency website URL | Yes | |
logo | URL of Agency logo | Yes |
Notes and Special Requirements:
It is important for tel number to be sent in the format provided in the sample. Spaces, Brackets or Dialing codes for example +27 will fail.
Office logo should be provided in jpg format and recommended size is 900 x 300 px
Schemas:
JSON:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"clientOfficeID": {"type": "string", "required": true},
"clientGroup": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string", "required": true},
"id": {"type": "string", "required": true},
"name": {"type": "string", "required": true},
"country": {"type": "string", "required": true},
"tel": {"type": "string", "required": true},
"email": {"type": "string", "required": true},
"profile": {"type": "string", "required": true},
"postalAddress": {"type": "string", "required": true},
"physicalAddress": {"type": "string", "required": true},
"website": {"type": "string", "required": true},
"logo": {"type": "string", "required": true}
},
"required": ["name", "id", "name", "country", "tel", "email", "profile", "postalAddress", "physicalAddress", "website", "logo"]
}
}
},
"required": ["clientOfficeID", "clientGroup"]
}
XML:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Office">
<xs:complexType>
<xs:sequence>
<xs:element name="clientOfficeID" type="xs:string" minOccurs="1"/>
<xs:element name="clientGroup" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="group" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="1"/>
<xs:element name="id" type="xs:string" minOccurs="1"/>
<xs:element name="name" type="xs:string" minOccurs="1"/>
<xs:element name="country" type="xs:string" minOccurs="1"/>
<xs:element name="tel" type="xs:string" minOccurs="1"/>
<xs:element name="email" type="xs:string" minOccurs="1"/>
<xs:element name="profile" type="xs:string" minOccurs="1"/>
<xs:element name="postalAddress" type="xs:string" minOccurs="1"/>
<xs:element name="physicalAddress" type="xs:string" minOccurs="1"/>
<xs:element name="website" type="xs:string" minOccurs="1"/>
<xs:element name="logo" type="xs:string" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Agents Specification:
Following is an example of an Agents feed, all fields in the example are required except for social media links.
JSON:
{
"clientAgentID": "5678",
"clientOfficeID": "1234",
"fullName": "Joe",
"lastName": "Doe",
"role": "Manager",
"cell": "0825551111",
"email": "joe@myagency.co.za",
"officeTel": "0115559999",
"officeEmail": "info@myagency.co.za",
"updatedDate": "2024/03/01 11:27:55",
"profile": "I am Great",
"socialMediaLinks": {
"twitter": "twitter profile",
"facebook": "facebook link",
"linkedin": "linkedin link",
"instagram": "instagram link",
"skype": "skypeName"
},
"photo": "https://image-server.myagency.co.za/5678_1234.jpg"
}
XML:
<Agents>
<clientAgentID>5678</clientAgentID>
<clientOfficeID>1234</clientOfficeID>
<fullName>Joe</fullName>
<lastName>Doe</lastName>
<role>Manager</role>
<cell>0825551111</cell>
<email>joe@myagency.co.za</email>
<officeTel>0115559999</officeTel>
<officeEmail>info@myagency.co.za</officeEmail>
<updatedDate>2024/03/01 11:27:55</updatedDate>
<profile>I am Great</profile>
<socialMediaLinks>
<twitter>twitter profile</twitter>
<facebook>facebook link</facebook>
<linkedin>linkedin link</linkedin>
<instagram>instagram link</instagram>
<skype>skypeName</skype>
</socialMediaLinks>
<photo>https://image-server.myagency.co.za/5678_1234.jpg</photo>
</Agents>
Field Definitions:
Attribute | Description | Required | Sample |
clientAgentID | Your Unique Internal Agent Ref Number | Yes | 5678 |
clientOfficeID | The unique Office ID | Yes | 1234 |
fullName | Agent Name | Yes | Joe |
lastName | Agent Surname | Yes | Doe |
role | The role of the Agent in the Office | Yes | Estate Agent |
credentials | Agent Public Credentials |
| NQF4, Registered with the PPRA FFC 123456 |
cell | Agent cell number | Yes | 0825551111 (cannot add a landline nr in this field) |
The agent email | Yes | ||
officeTel | The agent office contact number | Yes | 0115559999 (cannot add a mobile nr in this field) |
updatedDate | A timestamp for whenever changes are made and updated on an agent profile | Yes | in the format YYYY/mm/dd hh:mm:ss |
officeEmail | The agent office email address | Yes | |
profile | A brief description about the agent | Yes | Fantastic Agent |
socialMedialinks
>skype |
twitter profile link
facebook profile link linkedin profile link
instagram profile link skype profile name | No No
No
No
No
No |
estate.agent |
photo | URL for the profile image of the agent | Yes |
Notes and Special Requirements:
Important to note is that only active agents should be sent in the feed file, an agent you whish to delete should be excluded from the agents feed file and very important is that all his/her listings should also be excluded from the listings feed file, or each of the specific agent's listings will have to be updated with another agent in the listings feed file.
For contact nrs it is important that no spaces , brackets or dialing codes are sent.
Important is to set the "updatedDate" field whenever changes / updates are applied to an agent profile
Agent profile photos should be provided in jpg format and the recommended size is 640 x 800 px
NB: An Agent Profile photo / image is a requirement
Schemas:
JSON:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"clientAgentID": {"type": "string", "required": true},
"clientOfficeID": {"type": "string", "required": true},
"fullName": {"type": "string", "required": true},
"lastName": {"type": "string", "required": true},
"role": {"type": "string", "required": true},
"cell": {"type": "string", "required": true},
"email": {"type": "string", "required": true},
"officeTel": {"type": "string", "required": true},
"officeEmail": {"type": "string", "required": true},
"updatedDate": {"type": "string", "required": true},
"profile": {"type": "string", "required": true},
"socialMediaLinks": {
"type": "object",
"properties": {
"twitter": {"type": "string", "required": false},
"facebook": {"type": "string", "required": false},
"linkedin": {"type": "string", "required": false},
"instagram": {"type": "string", "required": false},
"skype": {"type": "string", "required": false}
}
},
"photo": {"type": "string", "required": true}
},
"required": ["clientAgentID", "clientOfficeID", "fullName", "lastName", "role", "cell", "email", "officeTel", "officeEmail", "profile", "photo"]
}
XML:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Agents">
<xs:complexType>
<xs:sequence>
<xs:element name="clientAgentID" type="xs:string" minOccurs="1"/>
<xs:element name="clientOfficeID" type="xs:string" minOccurs="1"/>
<xs:element name="fullName" type="xs:string" minOccurs="1"/>
<xs:element name="lastName" type="xs:string" minOccurs="1"/>
<xs:element name="role" type="xs:string" minOccurs="1"/>
<xs:element name="cell" type="xs:string" minOccurs="1"/>
<xs:element name="email" type="xs:string" minOccurs="1"/>
<xs:element name="officeTel" type="xs:string" minOccurs="1"/>
<xs:element name="officeEmail" type="xs:string" minOccurs="1"/>
<xs:element name="updatedDate" type="xs:string" minOccurs="1"/>
<xs:element name="profile" type="xs:string" minOccurs="1"/>
<xs:element name="socialMediaLinks" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="twitter" type="xs:string" minOccurs="0"/>
<xs:element name="facebook" type="xs:string" minOccurs="0"/>
<xs:element name="linkedin" type="xs:string" minOccurs="0"/>
<xs:element name="instagram" type="xs:string" minOccurs="0"/>
<xs:element name="skype" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="photo" type="xs:string" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Listing Specification:
Following is an example of a Listing feed, the example contains all the required fields to allow the listing to be created / imported, there are however a number of additional fields that are supported which is listed in the field definition table, which can be included.
JSON:
{
"clientPropertyID": "MA9101112",
"currency": "ZAR",
"price": 2000000,
"ratesAndTaxes": 350,
"levy": 0,
"landSize": 230,
"landSizeType": "m2",
"buildingSize": 180,
"buildingSizeType": "m2",
"propertyType": "House",
"propertyStatus": "For Sale",
"country": "South Africa",
"province": "Gauteng",
"town": "Pretoria",
"suburb": "Garsfontein",
"beds": 3,
"bedroomFeatures": "-",
"baths": 2,
"bathroomFeatures": "-",
"securityFeatures": "",
"gardenFeatures": "",
"kitchenFeatures": "",
"pool": "0",
"listDate": "2024/02/08 10:34:35",
"expiryDate": "2025/07/03 10:34:35",
"updatedDate": "2024/03/01 11:27:55",
"study": 1,
"livingAreas": 2,
"staffAccommodation": 0,
"petsAllowed": "0",
"carports": 2,
"openparking": 0,
"garages": 2,
"photos": [
{
"imgUrl": "https://imgage-server.myagency.co.za/1.jpg",
"imgDescription": "bathrooms"
},
{
"imgUrl": "https://imgage-server.myagency.co.za/2.jpg",
"imgDescription": "bedrooms"
}
],
"propertyFeatures": "-",
"streetNumber": "124",
"streetName": "Julian Str",
"unitNumber": 0,
"flatLet": "1",
"complexName": "-",
"latlng": "0,0",
"showOnMap": "0",
"description": "Beautiful property...",
"isReduced": "1",
"isDevelopment": "0",
"mandate": "Open",
"contact": [
{
"clientAgentID": "5678",
"clientOfficeID": "1234",
"fullName": "Joe Doe",
"cell": "0825559999",
"email": "joe@myagency.co.za",
"profile": "I am Great",
"logo": "https://www.myagency.co.za/1234.jpg"
}
],
"onshow": [
{
"dateStart": "2024/02/11 15:00:00",
"dateEnd": "2024/02/11 16:00:00",
"description": "Follow Boards"
}
],
"files": [
{
"url": "https://file-server.myagency.co.za/files/file1.pdf",
"description": "Guide",
"type": "file",
"id": "9101112"
},
{
"url": "https://file-server.myagency.co.za/preview.html",
"description": "Tour",
"type": "link",
"id": "MY9101112"
}
],
}
XML:
<Listings>
<clientPropertyID>MP9101112</clientPropertyID>
<currency>ZAR</currency>
<price>2000000</price>
<ratesAndTaxes>350</ratesAndTaxes>
<levy>0</levy>
<landSize>230</landSize>
<landSizeType>m2</landSizeType>
<buildingSize>180</buildingSize>
<buildingSizeType>m2</buildingSizeType>
<propertyType>House</propertyType>
<propertyStatus>For Sale</propertyStatus>
<country>South Africa</country>
<province>Gauteng</province>
<town>Pretoria</town>
<suburb>Garsfontein</suburb>
<beds>3</beds>
<bedroomFeatures>-</bedroomFeatures>
<baths>2</baths>
<bathroomFeatures>-</bathroomFeatures>
<securityFeatures></securityFeatures>
<gardenFeatures></gardenFeatures>
<kitchenFeatures></kitchenFeatures>
<pool>0</pool>
<listDate>2024/02/08 10:34:35</listDate>
<expiryDate>2025/07/03 10:34:35</expiryDate>
<updatedDate>2024/03/01 11:27:55</updatedDate>
<study>1</study>
<livingAreas>2</livingAreas>
<staffAccommodation>0</staffAccommodation>
<petsAllowed>0</petsAllowed>
<carports>2</carports>
<openparking>0</openparking>
<garages>2</garages>
<photos>
<photo>
<imgUrl>https://imgage-server.myagency.co.za/1.jpg</imgUrl>
<imgDescription>bathrooms</imgDescription>
</photo>
<photo>
<imgUrl>https://imgage-server.myagency.co.za/2.jpg</imgUrl>
<imgDescription>bedrooms</imgDescription>
</photo>
</photos>
<propertyFeatures>-</propertyFeatures>
<streetNumber>124</streetNumber>
<streetName>Julian Str</streetName>
<unitNumber>0</unitNumber>
<flatLet>1</flatLet>
<complexName>-</complexName>
<latlng>0,0</latlng>
<showOnMap>0</showOnMap>
<description>Beautiful property...</description>
<isReduced>1</isReduced>
<isDevelopment>0</isDevelopment>
<mandate>Open</mandate>
<contact>
<agent>
<clientAgentID>5678</clientAgentID>
<clientOfficeID>1234</clientOfficeID>
<fullName>Joe Doe</fullName>
<cell>0825559999</cell>
<email>joe@myagency.co.za</email>
<profile>I am Great</profile>
<logo>https://www.myagency.co.za/1234.jpg</logo>
</agent>
</contact>
<onshow>
<onshow>
<dateStart>2024/02/11 15:00:00</dateStart>
<dateEnd>2024/02/11 16:00:00</dateEnd>
<description>Follow Boards</description>
</onshow>
</onshow>
<files>
<file>
<url>https://file-server.myagency.co.za/files/file1.pdf</url>
<description>Guide</description>
<type>file</type>
<id>9101112</id>
</file>
<file>
<url>https://file-server.myagency.co.za/preview.html</url>
<description>Tour</description>
<type>link</type>
<id>MY9101112</id>
</file>
</files>
</Listings>
Field Definitions:
Attribute | Description | Required | Sample |
clientPropertyID | Your Unique Internal Listing Ref Number | Yes | MA89101112 |
currency | Currency | Yes | ZAR |
price | The Price for the Listing without any formatting | Yes | 2000000 |
priceUnit | The Unit in which the price is provided | Yes (For Rentals) | sqm |
ratesAndTaxes | Rates and Taxes for the Listing without any formatting. This will be displayed as per month | Yes | 495 |
levy | Levy for the Listing without any formatting. This will be displayed as per month | Yes | 1350 |
landSize | The listings stand / erf size without the unit | Yes | 850 |
landSizeType | The stand / erf size unit | Yes | m2, ha |
buildingSize | The building size without the unit | Yes | 150 |
buildingSizeType | The building size unit | Yes | m2 |
propertyType | The type of the property | Yes | Residential
Commercial
Agricultural
|
propertyStatus | The status for the Listing | Yes | For Sale |
country | The listing’s country | Yes | Area List: |
province | The listing's province | Yes | |
town | The listing's town | Yes | |
suburb | The listing's suburb | Yes | |
beds | The number of bedrooms | Yes | 0,1,2,3 etc |
bedroomFeatures | Description for the bedrooms | Yes | Spacious Bedrooms, or "-" if N/A |
baths | The number of bathrooms | Yes | 0,1,1.5,2,2.5 etc |
bathroomFeatures | Description for the bathrooms | Yes | Renovated bathrooms, or "-" if N/A |
kitchenFeatures | More information about the kitchen | Yes | Spacious Cupboards, or "-" if N/A |
gardenFeatures | More information about the garden | Yes | Big Garden with plenty Trees, or "-" if N/A |
securityFeatures | More information about the security | Yes | 24/7 Gated security, or "-" if N/A |
pool | If the Listing has a pool | Yes | 1 = Yes / 0 = No |
furnished | If the Listing is furnished | Yes | 1 = Yes / 0 = No |
listDate | The date when the Listing was loaded | Yes | in the format YYYY/mm/dd hh:mm:ss |
expiryDate | The date when the Listing expires | Yes | in the format YYYY/mm/dd hh:mm:ss |
updatedDate | A timestamp for whenever changes are made and updated on a listing | Yes | in the format YYYY/mm/dd hh:mm:ss |
depositRequired | Details regarding the deposit required | No | R50000 or 3 months lease upfront |
leasePeriod | The period the lease is for | No | 36 months |
availableFrom | The date the property is available from (The date of occupation for the new owner / tenant) | Yes | 2024/03/30 |
study | The number of studies | Yes | 0,1,2,3 etc |
livingAreas | The number of living areas | Yes | 0,1,2,3 etc |
staffAccommodation | The number of staff accommodations | Yes | 0,1,2,3 etc |
petsAllowed | If pets are allowed | Yes | 1 = Yes / 0 = No |
flatLet | If the property has an Extra Flat let | Yes | 1 = Yes / 0 = No |
carports | The number of carports (Covered Parking) | Yes | 0,1,2,3 etc |
openparking | The number of open parking bays (Uncovered Parking) | Yes | 0,1,2,3 etc |
garages | The number of garages | Yes | 0,1,2,3 etc |
files >url
>description
>type >id | Send empty array if N/A The url of the file or link of a virtual tour
Description for the file or link If it's a file or link Unique id for the file or link | Yes Yes
Yes
Yes Yes | https://www.myagency.co.za/files/a1.pdf or https://www.youtube.com/embed/r9s4ctJLk0o or https://my.matterport.com/show/?m=qB2PDTqnTdF
Virtual Tour
File / Link MA9101112 |
electricalSupply | This list of string types represents the options available to indicate what kind of power is available at the property | No | Members: Single Phase Power, Three Phase Power, Backup Generator, Backup Battery, Solar Panels, Wind Turbine |
waterSupply | This list of string types represents the options available to indicate what kind of water supply is available at the property | No | Members: Municipal Water, Borehole, Rain Water Harvesting, Dam Water |
grade | For Commercial Listings, this list of string types represents the options available to indicate the grading or rating of the building | No | Members: P, AAA, A, B, C |
propertyFeatures | Comma separated list of property features, "-" if N/A | Yes | electric fence, high walls etc. |
streetNumber | The street Number for the Listing | Yes | 17, 25B etc |
streetName | The street Name for the Listing | Yes | Julian Str |
unitNumber | The unit number for the Listing should it be in a Complex, 0 if N/A | Yes | 25,16A etc |
complexName | The Complex name, "-" if N/A | Yes | Silverlakes |
latlng | The geo location for the Listing, 0,0 if N/A | Yes | 25.128452,25.015354 |
showOnMap | If the Listing’s location should be showed on a map | Yes | 1/0 |
description | Description for the Listing | Yes | This is a beautiful house with spacious living areas |
title | Short Listing title or catchphrase | Yes | Just move in! |
isReduced | If the Listing price has been reduced | Yes | 1 = Yes / 0 = No |
isDevelopment | If the Listing is part of a development | Yes | 1 = Yes / 0 = No |
mandate | The mandate for the Listing | Yes | Open Sole Joint |
contact >clientAgentID
>clientOfficeID >fullName >cell >profile >logo |
The Internal ID for the Agent The Internal Office ID Name and Surname Agent Cell Agent email Agent Profile The thumbnail logo for the Agent's Office | Yes Yes
Yes Yes Yes Yes Yes Yes |
5678
1234 Joe Doe 0825551111 I am Great |
onshow >dateStart
>dateEnd
>description | Send empty array if N/A date & time show house starts
date & time show house is over
Message to public | Yes Yes
Yes
Yes |
in the format YYYY/mm/dd hh:mm:ss
in the format YYYY/mm/dd hh:mm:ss
Follow boards |
auction >dateStart
>dateEnd
>venue |
date & time auction starts
date & time auction ends
Where auction is held | No No
No
No |
in the format YYYY/mm/dd hh:mm:ss
in the format YYYY/mm/dd hh:mm:ss
Online Auction |
photos >imgUrl
>imgDescription |
The full image url
The description for the image | Yes Yes
Yes |
Patio Area |
Notes and Special Requirements:
For the Listing IDs (clientPropertyID) it is required that you use a prefix along with the Ref Number, for example: MA12345 or MA-123456 or MA_12345 Important to note is that only hyphens and underscores are supported, other special characters are not allowed.
Important to note is that only active listings should be sent in the feed file, listings that you wish to remove or are updated with any different status on your system, for example inactive or withdrawn, should simply be excluded from the feed file.
Important is to set the "updatedDate" field whenever changes / updates are applied to a listing
Property photos should be sent in jpg format and the recommended size is 1920 x 1080 px
There is an individual file size limit of 20 MB per photo
There is a limit which allows a maximum of 50 photos per listing
It will be required for you to do area mapping. Our suburb list for South Africa and Namibia is available to download as csv file from the following URL's:
Schemas:
JSON:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"clientPropertyID": {"type": "string", "required": true},
"currency": {"type": "string", "required": true},
"price": {"type": "integer", "required": true},
"priceUnit": {"type": "string", "required": false},
"ratesAndTaxes": {"type": "integer", "required": true},
"levy": {"type": "integer", "required": true},
"landSize": {"type": "integer", "required": true},
"landSizeType": {"type": "string", "required": true},
"buildingSize": {"type": "integer", "required": true},
"buildingSizeType": {"type": "string", "required": true},
"propertyType": {"type": "string", "required": true},
"propertyStatus": {"type": "string", "required": true},
"country": {"type": "string", "required": true},
"province": {"type": "string", "required": true},
"town": {"type": "string", "required": true},
"suburb": {"type": "string", "required": true},
"beds": {"type": "integer", "required": true},
"bedroomFeatures": {"type": "string", "required": true},
"baths": {"type": "integer", "required": true},
"bathroomFeatures": {"type": "string", "required": true},
"securityFeatures": {"type": "string", "required": true},
"gardenFeatures": {"type": "string", "required": true},
"kitchenFeatures": {"type": "string", "required": true},
"pool": {"type": "string", "required": true},
"listDate": {"type": "string", "required": true},
"expiryDate": {"type": "string", "required": true},
"updatedDate": {"type": "string", "required": true},
"depositRequired": {"type": "string", "required": false},
"leasePeriod": {"type": "string", "required": false},
"availableFrom": {"type": "string", "required": false},
"study": {"type": "integer", "required": true},
"livingAreas": {"type": "integer", "required": true},
"staffAccommodation": {"type": "integer", "required": true},
"petsAllowed": {"type": "string", "required": true},
"carports": {"type": "integer", "required": true},
"openparking": {"type": "integer", "required": true},
"garages": {"type": "integer", "required": true},
"photos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"imgUrl": {"type": "string", "required": true},
"imgDescription": {"type": "string", "required": true}
}
},
"required": true
},
"propertyFeatures": {"type": "string", "required": true},
"streetNumber": {"type": "string", "required": true},
"streetName": {"type": "string", "required": true},
"unitNumber": {"type": "integer", "required": true},
"flatLet": {"type": "string", "required": true},
"complexName": {"type": "string", "required": true},
"latlng": {"type": "string", "required": true},
"showOnMap": {"type": "string", "required": true},
"description": {"type": "string", "required": true},
"isReduced": {"type": "string", "required": true},
"isDevelopment": {"type": "string", "required": true},
"mandate": {"type": "string", "required": true},
"contact": {
"type": "array",
"items": {
"type": "object",
"properties": {
"clientAgentID": {"type": "string", "required": true},
"clientOfficeID": {"type": "string", "required": true},
"fullName": {"type": "string", "required": true},
"cell": {"type": "string", "required": true},
"email": {"type": "string", "required": true},
"profile": {"type": "string", "required": true},
"logo": {"type": "string", "required": true}
}
},
"required": true
},
"onshow": {
"type": "array",
"items": {
"type": "object",
"properties": {
"dateStart": {"type": "string", "required": true},
"dateEnd": {"type": "string", "required": true},
"description": {"type": "string", "required": true}
}
},
"required": true
},
"auction": {
"type": "array",
"items": {
"type": "object",
"properties": {
"dateStart": {"type": "string", "required": true},
"dateEnd": {"type": "string", "required": true},
"vnue": {"type": "string", "required": true}
}
},
"required": false
},
"electricalSupply": {
"type": "array",
"items": {"type": "string"},
"required": false
},
"waterSupply": {
"type": "array",
"items": {"type": "string"},
"required": false
},
"grade": {"type": "string", "required": false},
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {"type": "string", "required": true},
"description": {"type": "string", "required": true},
"type": {"type": "string", "required": true},
"id": {"type": "string", "required": true}
}
},
"required": true
}
},
"required": [
"clientPropertyID", "currency", "price", "ratesAndTaxes", "levy", "landSize", "landSizeType", "buildingSize", "buildingSizeType", "propertyType", "propertyStatus",
"country", "province", "town", "suburb", "beds", "bedroomFeatures", "baths", "bathroomFeatures", "securityFeatures", "gardenFeatures", "kitchenFeatures", "pool",
"listDate", "expiryDate", "study", "livingAreas", "staffAccommodation", "petsAllowed", "carports", "openparking", "garages", "photos", "propertyFeatures",
"streetNumber", "streetName", "unitNumber", "flatLet", "complexName", "latlng", "showOnMap", "description", "isReduced", "isDevelopment", "mandate", "contact",
"onshow", "files"
]
}
XML:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Listings">
<xs:complexType>
<xs:sequence>
<xs:element name="clientPropertyID" type="xs:string" minOccurs="1"/>
<xs:element name="currency" type="xs:string" minOccurs="1"/>
<xs:element name="price" type="xs:integer" minOccurs="1"/>
<xs:element name="priceUnit" type="xs:string" minOccurs="0"/>
<xs:element name="ratesAndTaxes" type="xs:integer" minOccurs="1"/>
<xs:element name="levy" type="xs:integer" minOccurs="1"/>
<xs:element name="landSize" type="xs:integer" minOccurs="1"/>
<xs:element name="landSizeType" type="xs:string" minOccurs="1"/>
<xs:element name="buildingSize" type="xs:integer" minOccurs="1"/>
<xs:element name="buildingSizeType" type="xs:string" minOccurs="1"/>
<xs:element name="propertyType" type="xs:string" minOccurs="1"/>
<xs:element name="propertyStatus" type="xs:string" minOccurs="1"/>
<xs:element name="country" type="xs:string" minOccurs="1"/>
<xs:element name="province" type="xs:string" minOccurs="1"/>
<xs:element name="town" type="xs:string" minOccurs="1"/>
<xs:element name="suburb" type="xs:string" minOccurs="1"/>
<xs:element name="beds" type="xs:integer" minOccurs="1"/>
<xs:element name="bedroomFeatures" type="xs:string" minOccurs="1"/>
<xs:element name="baths" type="xs:integer" minOccurs="1"/>
<xs:element name="bathroomFeatures" type="xs:string" minOccurs="1"/>
<xs:element name="securityFeatures" type="xs:string" minOccurs="1"/>
<xs:element name="gardenFeatures" type="xs:string" minOccurs="1"/>
<xs:element name="kitchenFeatures" type="xs:string" minOccurs="1"/>
<xs:element name="pool" type="xs:string" minOccurs="1"/>
<xs:element name="listDate" type="xs:string" minOccurs="1"/>
<xs:element name="expiryDate" type="xs:string" minOccurs="1"/>
<xs:element name="updatedDate" type="xs:string" minOccurs="1"/>
<xs:element name="depositRequired" type="xs:string" minOccurs="0"/>
<xs:element name="leasePeriod" type="xs:string" minOccurs="0"/>
<xs:element name="availableFrom" type="xs:string" minOccurs="0"/>
<xs:element name="study" type="xs:integer" minOccurs="1"/>
<xs:element name="livingAreas" type="xs:integer" minOccurs="1"/>
<xs:element name="staffAccommodation" type="xs:integer" minOccurs="1"/>
<xs:element name="petsAllowed" type="xs:string" minOccurs="1"/>
<xs:element name="carports" type="xs:integer" minOccurs="1"/>
<xs:element name="openparking" type="xs:integer" minOccurs="1"/>
<xs:element name="garages" type="xs:integer" minOccurs="1"/>
<xs:element name="photos" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="photo" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="imgUrl" type="xs:string" minOccurs="1"/>
<xs:element name="imgDescription" type="xs:string" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="propertyFeatures" type="xs:string" minOccurs="1"/>
<xs:element name="streetNumber" type="xs:string" minOccurs="1"/>
<xs:element name="streetName" type="xs:string" minOccurs="1"/>
<xs:element name="unitNumber" type="xs:integer" minOccurs="1"/>
<xs:element name="flatLet" type="xs:string" minOccurs="1"/>
<xs:element name="complexName" type="xs:string" minOccurs="1"/>
<xs:element name="latlng" type="xs:string" minOccurs="1"/>
<xs:element name="showOnMap" type="xs:string" minOccurs="1"/>
<xs:element name="description" type="xs:string" minOccurs="1"/>
<xs:element name="isReduced" type="xs:string" minOccurs="1"/>
<xs:element name="isDevelopment" type="xs:string" minOccurs="1"/>
<xs:element name="mandate" type="xs:string" minOccurs="1"/>
<xs:element name="contact" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="person" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="clientAgentID" type="xs:string" minOccurs="1"/>
<xs:element name="clientOfficeID" type="xs:string" minOccurs="1"/>
<xs:element name="fullName" type="xs:string" minOccurs="1"/>
<xs:element name="cell" type="xs:string" minOccurs="1"/>
<xs:element name="email" type="xs:string" minOccurs="1"/>
<xs:element name="profile" type="xs:string" minOccurs="1"/>
<xs:element name="logo" type="xs:string" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="onshow" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="event" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="dateStart" type="xs:string" minOccurs="1"/>
<xs:element name="dateEnd" type="xs:string" minOccurs="1"/>
<xs:element name="description" type="xs:string" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="auction" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="event" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="dateStart" type="xs:string" minOccurs="1"/>
<xs:element name="dateEnd" type="xs:string" minOccurs="1"/>
<xs:element name="vnue" type="xs:string" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="electricalSupply" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="supply" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="waterSupply" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="supply" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="grade" type="xs:string" minOccurs="0"/>
<xs:element name="files" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="file" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="url" type="xs:string" minOccurs="1"/>
<xs:element name="description" type="xs:string" minOccurs="1"/>
<xs:element name="type" type="xs:string" minOccurs="1"/>
<xs:element name="id" type="xs:string" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>