All Collections
Developer API's
MyProperty Direct Feed Specifications Guide
MyProperty Direct Feed Specifications Guide

Technical specifications for service providers who would like to market listings on Entegral's MyProperty portals

Dillon avatar
Written by Dillon
Updated over a week ago

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

email

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:

{

"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",
"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>
<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)

email

The agent email

Yes

officeTel

The agent office contact number

Yes

0115559999

(cannot add a mobile nr in this field)

officeEmail

The agent office email address

Yes

profile

A brief description about the agent

Yes

Fantastic Agent

socialMedialinks

>twitter

>facebook

>linkedin

>instagram

>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.

  • Agent profile photos should be provided in jpg format and the recommended size is 640 x 800 px

Schemas:

JSON:

{

"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},

"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="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",
"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>
<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
monthly (default)
daily
weekly
yearly

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

  • Apartment

  • Cluster

  • Estate

  • Security Estate

  • Cottage

  • Duet

  • Flat

  • Holiday Accommodation

  • House

  • Penthouse

  • Retirement Village

  • Townhouse

  • Vacant Land Residential

Commercial

  • Commercial

  • Business

  • Game Farm

  • Lodge

  • Guest House

  • Hotel

  • Industrial

  • Office

  • Restaurant

  • Retail

  • Shop

  • Mixed Use

  • Vacant Land Commercial

Agricultural

  • Farm

  • Small Holding

  • Vacant Land Agricultural

propertyStatus

The status for the Listing

Yes

For Sale
Rental Daily
Rental Weekly
Rental Monthly
Rental Yearly
Auction
Pending Sale
Sold

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

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

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

>email

>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) we recommend using 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.

  • 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:

{

"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},

"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="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>

Did this answer your question?