Skip to content

XML Import Specification

Getting Started

Welcome to the RERA XML Import Specification! This document provides everything you need to create compliant property listing feeds for the Cyprus Real Estate system.

Quick Start Checklist

Before you begin, ensure you have:

  • Access credentials - Your RERA account with import permissions
  • Technical contact - Developer or IT person familiar with XML
  • Property database - Your current property management system
  • Image hosting - CDN or image hosting solution for property photos
  • Testing environment - Safe space to validate feeds before going live

Integration Process

  1. Read the specification - Understand required vs optional fields
  2. Review examples - Check our comprehensive examples
  3. Map your data - Align your system fields with RERA requirements
  4. Create test feed - Start with 2-3 sample properties
  5. Validate structure - Use our testing tools (see Testing sections below)
  6. Submit for review - Send test feed for RERA approval
  7. Go live - Begin regular feed submissions

What You'll Learn

  • XML feed structure and required elements
  • Property types and their specific attributes
  • Image handling and CDN integration
  • Validation and testing procedures
  • Common integration issues and solutions

Time Estimate

  • Simple integration: 2-3 days for basic property types
  • Complex integration: 1-2 weeks for full attribute coverage
  • Testing & validation: 2-3 business days for RERA review

Overview

The RERA XML Import Specification enables real estate agencies, developers, and property management companies to automatically synchronize their property listings with RERA.CY platform.

Core Concept

Your system generates XML feeds containing property data, which RERA processes to create, update, or remove listings on the platform. This eliminates manual data entry and ensures your listings stay current across all channels.

Supported Property Types

The specification covers all major property categories in Cyprus:

Residential Properties:

  • Apartments & flats (studio to penthouse)
  • Houses (detached, semi-detached, villas, townhouses)
  • Land plots for residential development
  • Shared accommodations (rooms, bunk beds)

Commercial Properties:

  • Offices (individual units to whole buildings)
  • Retail spaces and trading areas
  • Warehouses and production facilities
  • HORECA (hotels, restaurants, cafes)
  • Commercial land plots and development sites

Deal Types

  • Sale: Permanent ownership transfer with full pricing details
  • Rent: Temporary occupancy with rental terms, deposits, and availability dates

Key Features

Comprehensive Attribute System: Over 100+ attributes covering everything from basic details (price, area, location) to specific amenities (smart home features, pet policies, parking types).

Flexible Structure: Required core fields ensure data integrity, while extensive optional attributes let you showcase unique property features.

Multi-language Support: Descriptions in English, Greek, or Russian with automatic translation to other languages.

Rich Media Integration: Support for multiple property images, virtual tours, and video content.

Geographic Precision: GPS coordinates with Cyprus-specific validation and formatted addresses.

Feed Processing

  1. Automatic Import: Your XML feed is processed regularly (frequency determined by your subscription)
  2. Data Validation: Each listing is checked against specification requirements
  3. Image Processing: Photos are automatically resized and optimized
  4. Publication: Validated listings appear on RERA platform and partner sites
  5. Sync Status: Receive feedback on successful imports and any validation errors

Benefits

  • Time Savings: Eliminate manual listing creation and updates
  • Accuracy: Reduce human errors with automated data transfer
  • Consistency: Maintain uniform property presentation across all channels
  • Scalability: Handle hundreds or thousands of properties efficiently
  • Real-time Updates: Keep listings current with automated synchronization

Guidelines & Conventions

Follow these best practices to ensure successful feed processing and optimal listing presentation.

XML Structure Rules

Well-formed XML: Your feed must be valid XML with proper opening/closing tags, escaped special characters, and correct nesting.

UTF-8 Encoding: Always use UTF-8 character encoding for international character support.

Root Element: Every feed must start with <root> and contain the required <rera> version block.

Data Quality Standards

Required Fields: Never omit required fields. Missing required data will cause listing rejection.

Consistent Units: Use metric system (m² for areas, EUR for prices, meters for distances).

Valid Coordinates: GPS coordinates must fall within Cyprus boundaries (see Pin Map section).

Realistic Values: Prices, areas, and other numeric values should be realistic for Cyprus property market.

Content Guidelines

Language: Write descriptions in one language only (English, Greek, or Russian). Our system will auto-translate to other languages.

No HTML: Use plain text for all descriptions and titles. HTML tags will be stripped.

Professional Tone: Write descriptions for potential buyers/renters, not internal notes.

Accurate Information: Ensure all data matches the actual property. Inaccurate listings may be suspended.

Image Requirements

Format: JPEG or PNG images only Size: Minimum 800x600px, recommended 1200x800px or larger Quality: High-resolution photos that showcase property features CDN: Use reliable image hosting with fast global delivery Naming: Use descriptive, consistent naming patterns

Attribute Best Practices

Completeness: Include as many relevant attributes as possible - more data means better search matching.

Accuracy: Only include attributes that apply. Don't use default values for non-existent features.

Consistency: Use the same attribute patterns across similar properties.

Updates: Keep attributes current - remove seasonal items, update renovation status, etc.

Common Mistakes to Avoid

Mixed Languages: Don't mix English and Greek in the same description
HTML Content: No <p>, <br>, or other HTML tags in text fields
Invalid Enums: Only use specified values for enum fields
Wrong Coordinates: Double-check GPS coordinates are in Cyprus
Missing Images: Include at least 3-5 quality property photos
Inconsistent Pricing: Ensure price matches currency and market expectations

Performance Optimization

  • Feed Size: Keep individual feeds under 50MB for faster processing
  • Batch Updates: Group related changes together rather than frequent small updates
  • Image Optimization: Compress images appropriately while maintaining quality
  • Caching: Implement proper image CDN caching for faster load times

Testing Recommendations

  1. Start Small: Test with 2-3 properties before full integration
  2. Validate Structure: Use XML validation tools before submission
  3. Check Examples: Compare your output with provided examples
  4. Monitor Feedback: Review import logs for warnings or errors
  5. Regular Audits: Periodically verify your live listings match your database

Outline of Feed Structure

Root Structure

xml
<root>
  <rera>
    <feed_version>1</feed_version>
  </rera>
  <owner>
    <logo_url></logo_url>
    <name></name>
    <license></license>
    <reg_number></reg_number>
    <whatsapp_number></whatsapp_number>
    <phone_number></phone_number>
    <email></email>
  </owner>
  <listing>
    <!-- Listing fields -->
  </listing>
</root>

Owner Information

The <owner> block contains information about the property owner or listing agent. All fields are optional.

Important: If owner information is provided from external systems during integration, this data can be updated and changed in the RERA.CY system. When syncing from external platforms, the owner details may be modified in RERA based on the latest information from the integrated system.

logo_url

  • Type: url
  • Required: false
  • Description: URL to the owner's or agency's logo image.

name

  • Type: string
  • Required: false
  • Description: Owner or agency name.

license

  • Type: string
  • Required: false
  • Description: License number (for licensed real estate professionals).

reg_number

  • Type: string
  • Required: false
  • Description: Registration number.

whatsapp_number

  • Type: string
  • Required: false
  • Description: WhatsApp contact number (include country code, e.g., +357).

phone_number

  • Type: string
  • Required: false
  • Description: Primary contact phone number (include country code, e.g., +357).

email

  • Type: string
  • Required: false
  • Description: Contact email address.

Listing Fields

id

  • Type: number
  • Required: true
  • Description: Unique listing identifier from your system.

ref

  • Type: string
  • Required: true
  • Description: Your external reference/code shown to customers.

status

  • Type: string
  • Required: true
  • Description: Listing status. Use active for publishable items.

deal_type

  • Type: enum
  • Required: true
  • Description: Transaction type: sale or rent.

offer_type

  • Type: enum
  • Required: true
  • Description: Domain of the listing: residential or commercial.

price

  • Type: number
  • Required: true
  • Description: Asking price in currency.

old_price

  • Type: number
  • Required: false
  • Description: Previous asking price (if applicable).

deposit

  • Type: number
  • Required: false
  • Description: Deposit amount (only for rentals).

currency

  • Type: enum
  • Required: true
  • Description: Currency code. Currently EUR.
  • Type: url
  • Required: false
  • Description: Public link to a 3D/VR tour (e.g., Matterport).
  • Type: url
  • Required: false
  • Description: Public video link (e.g., YouTube).

full_area

  • Type: number
  • Required: true
  • Description: Total area of the property (m²).

living_area

  • Type: number
  • Required: false
  • Description: Net living space (m²).

kitchen_area

  • Type: number
  • Required: false
  • Description: Kitchen area (m²).

floor

  • Type: number
  • Required: false
  • Description: Floor number of the unit.

floor_total

  • Type: number
  • Required: false
  • Description: Total number of floors in the building.

is_available

  • Type: boolean (1/0)
  • Required: false (for rentals)
  • Description: Availability flag; 1 means available.

become_available_at

  • Type: date (YYYY-MM-DD)
  • Required: false (for rentals, true if is_available = 1)
  • Description: Expected date the flat/house becomes available.

plot_area

  • Type: number
  • Required: false (true for land/plot listings)
  • Description: Land/plot area (m²) if applicable.

building_density

  • Type: string
  • Required: false (true for land/plot listings)
  • Description: Zoning/building density information (optional).

construction_year

  • Type: integer (YYYY)
  • Required: false
  • Description: Year the building or unit was constructed.

estimated_completion_at

  • Type: date (YYYY-MM-DD)
  • Required: false (true for projects under construction or off-plan)
  • Description: Estimated completion date for projects under construction or off-plan.

created_at

  • Type: datetime (YYYY-MM-DD HH:MM:SS)
  • Required: true
  • Description: Feed item creation timestamp.

updated_at

  • Type: datetime (YYYY-MM-DD HH:MM:SS)
  • Required: true
  • Description: Last update timestamp.

title

  • Type: string
  • Required: false
  • Description: Short human-readable headline for XL-promotion listings (avoid HTML). English, Greek, and Russian are accepted. Write in only one language, and our system will automatically translate your text into the other languages.

description

  • Type: string
  • Required: true
  • Description: Detailed, plain-text description (avoid HTML). English, Greek, and Russian are accepted. Write in only one language, and our system will automatically translate your text into the other languages.

city

  • Type: enum
  • Required: true
  • Description: Municipality name. Allowed: Nicosia, Limassol, Larnaca, Paphos, Famagusta, Ayia Napa, Paralimni.

Pin Map

  • Required: true
xml
<pin_map>
  <latitude>34.520948</latitude>
  <longitude>34.608660</longitude>
  <formatted_address>Agias Filaxeos 157, Lemesos 3083, Cyprus</formatted_address>
</pin_map>

Coordinates must be within Cyprus: latitude 34.52094835.712796, longitude 32.21197134.608660.

formatted_address

  • Type: string
  • Required: true
  • Description: full address or just the street name; country and city are optional here.

Images

Images support thumbnails. To get different sizes, replace "large" in the filename with small or medium.

text
Large: http://cdn.rera.cy/12811577_large.jpg
Medium: http://cdn.rera.cy/12811577_medium.jpg
Small: http://cdn.rera.cy/12811577_small.jpg
xml
<images>
  <image>
    <url>http://cdn.rera.cy/12811577_large.jpg</url>
  </image>
  <image>
    <tags>
      <tag>floorplan</tag>
    </tags>
    <url>http://cdn.rera.cy/12811578_large.jpg</url>
  </image>
  <image>
    <url>http://cdn.rera.cy/12811579_large.jpg</url>
  </image>
</images>

Attributes

Rules differ by offer_type. Use the sections below. General rules:

  • multiple: comma-separated values
  • single: one value only
  • boolean: 1 or 0

Common Attributes (residential and commercial)

window_views

  • Type: multiple
  • Required: false
  • Values: sea, mountains, street, courtyard, park, lake, river
  • Description: Visible views from the unit.

heating_types

  • Type: multiple
  • Required: false
  • Values: electric, gas, heat_pump, fireplace, central, underfloor_heating
  • Description: Available heating systems.

loggias

  • Type: single
  • Required: false
  • Values: 1, 2, 3, 4, 5+
  • Description: Count of loggias.

balconies

  • Type: single
  • Required: false
  • Values: 1, 2, 3, 4, 5+
  • Description: Count of balconies.

elevator_count

  • Type: single
  • Required: false
  • Values: 1, 2, 3, 4, 5+
  • Description: Number of elevators in the building.

with_freight_elevator

  • Type: boolean
  • Required: false
  • Description: Freight/service elevator present.

building_class

  • Type: single
  • Required: false
  • Values: A, B, C
  • Description: Building quality/class rating.

energy_class

  • Type: single
  • Required: true
  • Values: A, B, C, D, E, F, G, in_progress
  • Description: Energy efficiency certificate class.

construction_stage

  • Type: single
  • Required: false
  • Values: resale, new_build, under_construction, off_plan
  • Description: Development stage of the property.

rental_type

  • Type: single
  • Required: false
  • Values: long_term, short_term
  • Description: Rental term category.

security_systems

  • Type: multiple
  • Required: false
  • Values: video_surveillance, access_control, alarm_system, on_site_security, fire_safety_system, intercom, security_patrol, biometric_access
  • Description: Installed security measures.

furnished

  • Type: boolean
  • Required: false
  • Description: Unit offered furnished.

with_conditioner

  • Type: boolean
  • Required: false
  • Description: Air conditioning present.

with_internet

  • Type: boolean
  • Required: false
  • Description: Internet connectivity available.

with_phone

  • Type: boolean
  • Required: false
  • Description: Landline/telephony available.

is_accessible

  • Type: boolean
  • Required: false
  • Description: Accessible for people with reduced mobility.

distance_to_bus_stops

  • Type: single
  • Required: false
  • Values: walkable, short_walk, moderate_distance, far
  • Description: Proximity to public transport.

is_zero_floor

  • Type: boolean
  • Required: false
  • Description: Ground/zero floor unit.

plus_vat

  • Type: boolean
  • Required: false
  • Description: Price excludes VAT (VAT applicable separately).

cooling_type

  • Type: single
  • Required: false
  • Values: autonomous_cooling_system, central_cooling
  • Description: Cooling system type.

negotiable_price

  • Type: boolean
  • Required: false
  • Description: Price is negotiable.

sharing_plot

  • Type: boolean
  • Required: false
  • Description: Sale involves a share of a larger plot.

Residential Attributes (offer_type = residential)

residential_type

  • Type: single
  • Required: true
  • Values: flat, house, shared_room, bunk_room, land_plot
  • Description: Main residential category.

bedroom_type

  • Type: single
  • Required: false
  • Values: 1, 2, 3, 4, 5, 6+
  • Description: Number of bedrooms.

house_type

  • Type: single
  • Required: false
  • Values: detached, semi-detached, villa, cottage, townhouse, chalet
  • Description: House subtype for non-apartment residential.

flat_type

  • Type: single
  • Required: false
  • Values: studio, apartment, loft, penthouse, maisonette, duplex, condo
  • Description: Apartment subtype.

storage_types

  • Type: multiple
  • Required: false
  • Values: closet, storage_room, garage_storage, basement, utility_room, additional_space
  • Description: Available storage options.

parking_types

  • Type: multiple
  • Required: false
  • Values: street, garage, covered, underground, open, secure, multilevel, guest, ev_charging
  • Description: Parking availability/types.

combined_bathrooms

  • Type: single
  • Required: false
  • Values: 1, 2, 3, 4, 5, 6+
  • Description: Number of combined bath/WC rooms.

separate_bathrooms

  • Type: single
  • Required: false
  • Values: 1, 2, 3, 4, 5, 6+
  • Description: Number of bathrooms separate from WC.

with_bath

  • Type: boolean
  • Required: false
  • Description: Bathtub present.

shower_cubicle

  • Type: boolean
  • Required: false
  • Description: Shower cubicle present.

repair_type

  • Type: single
  • Required: false
  • Values: unrepaired, cosmetic, euro, design
  • Description: Renovation/finish level.

pets

  • Type: multiple
  • Required: false
  • Values: dogs_allowed, cats_allowed, small_pets_allowed
  • Description: Pet policy.

residential_common_areas

  • Type: multiple
  • Required: false
  • Values: spa, gym, swimming_pool, bathhouse, playroom, garden, lounge_area, kindergarten
  • Description: Shared amenities in the residential complex.

kitchen_furnished

  • Type: boolean
  • Required: false
  • Description: Kitchen is furnished/equipped.

furnished_rooms

  • Type: boolean
  • Required: false
  • Description: Rooms are furnished.

with_tv

  • Type: boolean
  • Required: false
  • Description: TV provided.

with_fridge

  • Type: boolean
  • Required: false
  • Description: Fridge provided.

with_washing_machine

  • Type: boolean
  • Required: false
  • Description: Washing machine provided.

with_tumble_dryer

  • Type: boolean
  • Required: false
  • Description: Tumble dryer provided.

with_dishwasher

  • Type: boolean
  • Required: false
  • Description: Dishwasher provided.

with_interactive_tv

  • Type: boolean
  • Required: false
  • Description: Interactive/Smart TV service provided.

smoking_allowed

  • Type: boolean
  • Required: false
  • Description: Smoking allowed inside the unit.

jacuzzi

  • Type: boolean
  • Required: false
  • Description: Jacuzzi/hot tub available.

smart_home_features

  • Type: boolean
  • Required: false
  • Description: Smart home devices/features installed.

selling_and_looking_to_buy

  • Type: boolean
  • Required: false
  • Description: Seller is open to a swap/part-exchange.

residential_planning_zone

  • Type: single
  • Required: false
  • Values: ka3, ka4, ka5, ka6, ka7, ka8, ka9, ka10
  • Description: Residential planning zone code (only for land_plots).

residential_plot_type

  • Type: single
  • Values: detached_house, apartment_complex, subdivided_plot
  • Description: Plot type for residential properties (only for land_plots).

Commercial Attributes (offer_type = commercial)

commercial_type

  • Type: single
  • Required: true
  • Values: office, coworking, building, trading_area, warehouse, production_facility, horeca, land_plot, other
  • Description: Commercial property category.

office_type

  • Type: single
  • Required: false
  • Values: ground, top_floor, whole_floor, entire_building, standard_office
  • Description: Office subtype.

design_features

  • Type: multiple
  • Required: false
  • Values: modern_design, traditional_design, high_ceiling, glass_walls, spacious_rooms
  • Description: Fit-out/finish features.

layout_type

  • Type: single
  • Required: false
  • Values: open_layout, flexible_layout, closed_layout
  • Description: Space layout.

common_areas

  • Type: multiple
  • Required: false
  • Values: conference_rooms, lounges, kitchens, restrooms, reception_area, cafeteria, gym, rooftop, outdoor_spaces, common_meeting_rooms, storage_areas, server_room, kindergarten
  • Description: Shared amenities in the business center/building.
  • Type: single
  • Required: false
  • Values: freehold, leasehold, rental, with_right_of_first_refusal, co_ownership, mortgaged
  • Description: Ownership/lease status.

advertising_installation_allowed

  • Type: single
  • Required: false
  • Values: yes, no, restricted
  • Description: External/internal advertising signage allowed.

equipped

  • Type: boolean
  • Required: false
  • Description: Space is equipped for immediate use.

available_parking_spaces

  • Type: multiple
  • Required: false
  • Values: one_parking_space, multiple_parking_spaces, reserved_parking, shared_parking, paid_parking, free_parking, guest_parking, ev_charging
  • Description: Parking availability/features.

additional_details

  • Type: multiple
  • Required: false
  • Values: full_access, daily_cleaning, pet_friendly
  • Description: Additional commercial details.

foot_traffic

  • Type: single
  • Required: false
  • Values: low, medium, high
  • Description: Typical pedestrian traffic level around the property.

commercial_planning_zone

  • Type: single
  • Required: false
  • Values: eb1, eb2, eb3, eb4, eb5, eb6
  • Description: Planning zone code for commercial usage.

commercial_plot_type

  • Type: single
  • Required: false
  • Values: office_building, shop
  • Description: Plot type for commercial property.

About Character Encoding

Proper character encoding ensures your property descriptions, addresses, and other text content display correctly across all platforms and languages.

Required Encoding: UTF-8

All XML feeds must use UTF-8 encoding. This encoding supports:

  • English alphabet and numbers
  • Greek characters (Α, Β, Γ, Δ, etc.)
  • Cyrillic characters (А, Б, В, Г, etc.)
  • Common symbols (€, ², ³, °, etc.)
  • Special punctuation and diacritical marks

XML Declaration

Always start your XML files with the UTF-8 declaration:

xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
  <!-- Your feed content -->
</root>

Special Characters in XML

Certain characters have special meaning in XML and must be escaped:

CharacterEscaped FormWhen to Use
<&lt;In text content
>&gt;In text content
&&amp;In text content
"&quot;Inside attributes
'&apos;Inside attributes

Examples

Correct encoding of Greek description:

xml
<description>Διαμέρισμα 85 m² με θέα στη θάλασσα</description>

Correct encoding with special characters:

xml
<description>Luxury apartment &amp; penthouse with 180° sea view</description>
<formatted_address>Anexartisias 123 "Marina Bay", Limassol</formatted_address>

Common Issues & Solutions

Issue: Greek or Russian text appears as question marks (???)
Solution: Ensure your XML file is saved with UTF-8 encoding, not ASCII or Latin-1

Issue: Ampersand characters break XML parsing
Solution: Replace & with &amp; in all text content

Issue: Addresses with quotes cause parsing errors
Solution: Use &quot; for quotes inside attribute values

Testing Character Encoding

  1. Save Check: Verify your XML file is saved with UTF-8 encoding
  2. Visual Check: Open the XML in a browser - all characters should display correctly
  3. Validation Check: Use an XML validator to ensure proper structure
  4. End-to-End Check: Submit a test feed and verify text appears correctly on RERA platform

Development Tips

Text Editors: Use editors that support UTF-8 (VS Code, Sublime Text,Web Storm)
Programming: Ensure your code specifies UTF-8 when reading/writing XML files
Database: Configure your database to store and retrieve UTF-8 text properly
Web Requests: Set content-type headers to include charset=utf-8

Testing the Structure

Before submitting your feed to RERA, thoroughly test its structure to ensure compliance and prevent import errors.

XML Validation Tools

Online Validators (Quick testing):

Command Line Tools (Development workflow):

bash
# Using xmllint (Linux/Mac)
xmllint --noout your-feed.xml

# Using xmlstarlet (Cross-platform)
xmlstarlet val your-feed.xml

Programming Libraries:

  • PHP: DOMDocument with validateOnParse
  • Python: xml.etree.ElementTree or lxml
  • JavaScript/Node.js: fast-xml-parser or libxmljs
  • .NET: XmlDocument with schema validation

Structure Checklist

✅ Required Elements Present:

  • [ ] XML declaration with UTF-8 encoding
  • [ ] Root <root> element containing all content
  • [ ] RERA version block: <rera><feed_version>1</feed_version></rera>
  • [ ] Owner information block <owner> (all fields optional)
  • [ ] At least one <listing> element

✅ Every Listing Contains:

  • [ ] Unique numeric <id>
  • [ ] String <ref> (your reference code)
  • [ ] Valid <status> (typically "active")
  • [ ] Enum <deal_type> (sale/rent)
  • [ ] Enum <offer_type> (residential/commercial)
  • [ ] Numeric <price> and <currency>
  • [ ] Numeric <full_area>
  • [ ] ISO datetime <created_at> and <updated_at>
  • [ ] Text <description>
  • [ ] Enum <city> (valid Cyprus municipality)
  • [ ] Pin map with latitude, longitude, formatted_address
  • [ ] Required <energy_class> attribute
  • [ ] Required type attribute (residential_type or commercial_type)

✅ Data Format Validation:

  • [ ] Dates in YYYY-MM-DD format
  • [ ] Datetimes in YYYY-MM-DD HH:MM:SS format
  • [ ] Numbers are valid (not text, not empty)
  • [ ] GPS coordinates within Cyprus bounds
  • [ ] Currency is "EUR"
  • [ ] All enum values match specification exactly

Common Structure Errors

❌ Invalid XML Syntax:

xml
<!-- WRONG: Unclosed tag -->
<listing>
  <id>123</id>
  <ref>PROP_001
</listing>

<!-- CORRECT: Properly closed tags -->
<listing>
  <id>123</id>
  <ref>PROP_001</ref>
</listing>

❌ Missing Required Elements:

xml
<!-- WRONG: Missing required fields -->
<listing>
  <id>123</id>
  <price>250000</price>
</listing>

<!-- CORRECT: All required fields present -->
<listing>
  <id>123</id>
  <ref>PROP_001</ref>
  <status>active</status>
  <deal_type>sale</deal_type>
  <offer_type>residential</offer_type>
  <price>250000</price>
  <currency>EUR</currency>
  <!-- ... other required fields ... -->
</listing>

❌ Invalid Nesting:

xml
<!-- WRONG: Attributes outside attributes block -->
<listing>
  <id>123</id>
  <residential_type>flat</residential_type>
  <attributes>
    <energy_class>B</energy_class>
  </attributes>
</listing>

<!-- CORRECT: All attributes inside attributes block -->
<listing>
  <id>123</id>
  <attributes>
    <residential_type>flat</residential_type>
    <energy_class>B</energy_class>
  </attributes>
</listing>

Integration Testing

After structural validation, test with actual RERA import:

  1. Submit test feed with 1-3 sample properties
  2. Monitor import logs for detailed error messages
  3. Check live listings to ensure data appears correctly
  4. Verify images load and display properly
  5. Test search functionality with your property attributes

Testing Character Encoding

Character encoding issues can cause property descriptions and addresses to display incorrectly. Follow these tests to ensure your multilingual content works properly.

Quick Visual Test

Step 1: Open your XML file in different applications:

  • Text Editor: Should display Greek (Ελληνικά) and Cyrillic (Русский) characters correctly
  • Web Browser: Drag XML file to browser - all text should render properly
  • XML Viewer: Use online XML viewers to check character display

Step 2: Look for these warning signs:

  • ❌ Question marks: Διαμέρισμα ?????? θάλασσα
  • ❌ Squares or boxes: Apartment ☐☐☐ sea view
  • ❌ Garbled text: ÎιαμέÏιÏμα

Automated Encoding Tests

Command Line Testing:

bash
# Check file encoding (Linux/Mac)
file -i your-feed.xml
# Should output: text/xml; charset=utf-8

# Test XML with special characters  
xmllint --encode UTF-8 your-feed.xml | head -20

# Verify specific character ranges are preserved
grep -P "[\x{0370}-\x{03FF}]" your-feed.xml  # Greek
grep -P "[\x{0400}-\x{04FF}]" your-feed.xml  # Cyrillic

Final Validation Checklist

  • [ ] XML file saved with UTF-8 encoding
  • [ ] XML declaration specifies UTF-8
  • [ ] Greek characters display correctly in browser
  • [ ] Russian characters display correctly in browser
  • [ ] Euro symbols (€) appear properly
  • [ ] Special characters (&, <, >, ", ') are escaped
  • [ ] No question marks or boxes in text content
  • [ ] Automated encoding tests pass
  • [ ] Test feed imports successfully with multilingual content

Getting Help

When you encounter issues during XML feed integration, multiple support channels are available to assist you.

Quick Self-Help Resources

📚 Documentation:

  • Examples Collection: Complete XML samples for all property types
  • Specification Reference: This document with all field definitions
  • FAQ Section: Common questions and solutions (check RERA portal)

🔧 Self-Service Tools:

  • Online Validator: Real-time XML structure checking
  • Character Encoding Tester: Verify multilingual content
  • Coordinate Validator: Check GPS boundaries for Cyprus
  • Image URL Checker: Validate image accessibility

Technical Support Channels

📧 Email Support

  • Address: it@rera.cy
  • Response time: 12-48 hours
  • Include: Company name, XML sample, error details
  • Best for: Complex technical issues, specification clarifications