Domoplius import V1

The legacy-compatible Domoplius XML contract with category buckets and numeric location IDs.

Import documentation menu

Quick start

Create a UTF-8 XML document with domoplius, announcements, and category buckets. Select V1 on the source.

  1. 1Start with the V1 XML template and choose a category bucket: flats, commercials, garages, sites, buildings, fp_flats, fp_buildings, fp_cottages, fp_commercials, fp_sites.
  2. 2Give each listing a stable external_id or id and do not repeat it within the same category.
  3. 3Publish the XML at a public URL and send the URL and listing-owner account to your Domoplius contact.

Examples use existing numeric Domoplius placereg_* IDs. Verify the values and their hierarchy.

Minimal V1 XML template
<?xml version="1.0" encoding="UTF-8"?>
<domoplius>
  <!--Replace location and option IDs using the versioned endpoints, and supply public image URLs.-->
  <announcements>
    <flats>
      <external_id>100001</external_id>
      <action_type>1</action_type>
      <sell_price>145000</sell_price>
      <fk_placereg_adm_units_id>461</fk_placereg_adm_units_id>
      <fk_placereg_settlements_id>1</fk_placereg_settlements_id>
      <flat_size>50.5</flat_size>
      <flat_rooms>1</flat_rooms>
    </flats>
  </announcements>
</domoplius>

Import lifecycle

A V1 XML feed is downloaded safely, checked, and processed one record at a time. Feed reliability determines whether missing listings can be reconciled.

  1. 1. Download

    The importer downloads public XML under the configured size, time, and redirect limits.

  2. 2. Preflight

    It checks the announcements structure, unique category/ID identities, empty feeds, DTDs, and external entities.

  3. 3. Streaming

    Legacy fields and aliases are normalized and then validated for their category.

  4. 4. Persistence

    Valid records are created or partially updated; invalid records are reported.

  5. 5. Reconciliation

    Missing listings are considered only after all enabled Laravel sources for the owner finish reliably.

  6. 6. Review

    Results, warnings, and rejected records are reviewed before a source is enabled.

What to give Domoplius

Send your Domoplius contact the public V1 XML URL and the information needed to validate a disabled source.

  1. 1.Provide the public XML URL, Domoplius account, and category buckets in the feed.
  2. 2.Specify the schedule and contact replacement rules.
  3. 3.Keep one stable test record and correct validation warnings.
  4. 4.The source is enabled only after its disabled-source validation succeeds.

Run schedules

Time zone
Europe/Vilnius
Nightly
02:50
Frequent mode
02:50, 07:50, 10:50, 13:50, 16:50, 19:50

V1 XML requirements

V1 preserves the legacy importer structure and tolerant field handling.

Price updates
Omitted price amounts retain that currency family. An explicitly empty generic or _eur amount clears EUR, LTL, USD and its currency ID together. A positive alias takes precedence over an empty alias and regenerates the family; conflicting positive aliases reject the listing. Required main or daily prices cannot be cleared.
V1 scope and public tool
V1 covers ten domestic and foreign categories. Its public tool checks conversion readiness for V2; authoritative imports additionally check owners, plans, existing listings, downloads and reconciliation.
Identity, action and prices
Supply external_id or id. action_type defaults to 1. Actions 1 and 3 require sell_price or sell_price_eur. Action 9 requires short_rent_price_day or short_rent_price_day_eur; the general price is optional.
Legacy currency interpretation
Recognized LTL prices are converted to EUR. USD-labelled generic prices retain the effective EUR amount used by the old importer, with a conversion diagnostic. Unknown currency IDs block conversion.
Feature numbers and generated titles
V1 feature options return legacy nr values from 1 to 85; V2 returns database feature IDs. Supplied V1 titles are ignored and reported; titles are generated from listing data.
Address clearing and aliases
Omitted optional street and microdistrict values are retained. Explicit zero or empty values clear them. Conflicting supplied aliases reject the listing. site_size with site_measure or site_measures supports ares, hectares or square metres; nested window_direction lists are accepted.
XML structure
Use <domoplius><announcements><flats>…</flats></announcements></domoplius> without a namespace. Category buckets: flats, commercials, garages, sites, buildings, fp_flats, fp_buildings, fp_cottages, fp_commercials, fp_sites.
XML only
V1 does not support JSON. Use the V2 contract for JSON feeds.
Safety
DTD, DOCTYPE, and external XML entities are prohibited. XML is streamed under the configured size, record, and time limits.
Compatibility
Legacy aliases, price/currency normalization, numeric option IDs, features/add_features, and photos are supported. Unknown fields become warnings.

Effective limits

Maximum feed
100 MiB
Connection timeout
15 s
Download timeout
300 s
Preflight timeout
120 s
Single-run limit
55 min
Feed redirects
5 redirects
Photos per listing
30 photos
Single photo size
15 MiB
Single photo resolution
80 MP
Photo redirects
3 redirects

Looking for a specific V1 field?

Choose a legacy category bucket in the field reference and inspect its XML fields and aliases.

Open the field reference

How listings are updated

V1 uses partial updates. Owner, category, and external_id or id identify the listing.

Omitted field
The existing value remains unchanged.
Submitted empty field
The value is explicitly cleared where that field permits clearing.
Features and photos
Omitted collections remain unchanged; submitted collections replace the current imported set.
Missing listings
Reconciliation only runs after all enabled Laravel sources for the owner finish reliably.

Validation and errors

An invalid V1 record may be isolated, but a duplicate identity, empty feed, or structural failure rejects the complete XML and stops reconciliation.

Error matrix

Download, structure, DTD, empty-feed, or duplicate-identity failure
Record resultThe complete V1 XML is rejected; listings are unchanged.
Removal reconciliationNot run.
Invalid record with a recognisable identity
Record resultThe record is skipped and the previous listing protected.
Removal reconciliationMay run if the complete feed remains reliable.
Invalid record without an identity
Record resultThe record is skipped.
Removal reconciliationNot run because the listing cannot be protected safely.
Some photos fail to download
Record resultThe previous complete photo set is preserved.
Removal reconciliationListing-data reconciliation may continue.

How empty values are interpreted

Optional field is missing
General meaningThe previous imported value remains unchanged.
Special rulesV1 uses partial updates.
Empty element
General meaningThe value is explicitly cleared where allowed.
Special rulesAn empty required value may reject the record.
photos or features is absent
General meaningThe previous collection remains unchanged.
Special rulesA submitted collection replaces the imported set.
Coordinates are absent
General meaningPrevious coordinates remain unchanged.
Special rulesSubmit a complete coord_x/coord_y or wgs_lat/wgs_long pair.

Existing Domoplius addresses

Foreign categories require existing country_id and city_id from /api/v1/imports/locations/countries and /api/v1/imports/locations/cities?country_id=3397. The city must belong to its country; importing never creates locations. V1 does not introduce an address system. Use fk_placereg_adm_units_id, fk_placereg_settlements_id, fk_placereg_microdistricts_id, and fk_placereg_streets_id. Form aliases are also accepted: address_1 is a municipality ID, address_2 is 2_<settlement ID> or 3_<microdistrict ID>, and address_3 is a street ID. Foreign V1 property locations support country_id and city_id, plus wgs_lat/wgs_long coordinates. Legacy continent, street, microdistrict and editable-location fields are outside this contract; owner fk_place_* fields do not identify the property.

  1. 1. Administrative unit

    Use the existing numeric municipality ID.

    /api/v1/imports/locations/administrative-units
    GET /api/v1/imports/locations/administrative-units
  2. 2. Settlement

    Filter by administrative_unit_id.

    /api/v1/imports/locations/settlements?administrative_unit_id=461
    GET /api/v1/imports/locations/settlements?administrative_unit_id=461
  3. 3. Microdistrict

    When applicable, filter by settlement_id.

    /api/v1/imports/locations/microdistricts?settlement_id=1
    GET /api/v1/imports/locations/microdistricts?settlement_id=1
  4. 4. Street

    The street must belong to the same settlement.

    /api/v1/imports/locations/streets?settlement_id=1
    GET /api/v1/imports/locations/streets?settlement_id=1
V1 numeric location fields
<fk_placereg_adm_units_id>461</fk_placereg_adm_units_id>
<fk_placereg_settlements_id>1</fk_placereg_settlements_id>
<fk_placereg_microdistricts_id>31</fk_placereg_microdistricts_id>
<fk_placereg_streets_id>22328</fk_placereg_streets_id>

Photos and video

Include photo and video references inside each V1 XML category record.

Photo list
Use photos/photo elements with up to 30 public HTTP(S) URLs in the desired order.
Omitted photos
When photos is absent, the previous imported set remains unchanged; a submitted set replaces it.
Features
features/feature and add_features/add_feature are combined; omission preserves previous values.
Video
Use has_video with a supported YouTube URL or ID; omission preserves the previous value.

V1 XML example

Download the complete V1 XML example with the legacy category-bucket structure.

Examples use existing numeric Domoplius placereg_* IDs. Verify the values and their hierarchy.

Full V1 XML example

The template demonstrates legacy fields, numeric location IDs, features, and photos.

Full V1 XML example
Full V1 XML example
<?xml version="1.0" encoding="UTF-8"?>
<domoplius>
  <!--Replace location and option IDs using the versioned endpoints, and supply public image URLs.-->
  <announcements>
    <flats>
      <external_id>100001</external_id>
      <action_type>1</action_type>
      <contacts_name>Partnerio brokeris</contacts_name>
      <contacts_phone>+37060000000</contacts_phone>
      <contacts_email>[email protected]</contacts_email>
      <sell_price>145000</sell_price>
      <fk_placereg_adm_units_id>461</fk_placereg_adm_units_id>
      <fk_placereg_settlements_id>1</fk_placereg_settlements_id>
      <fk_placereg_microdistricts_id>31</fk_placereg_microdistricts_id>
      <fk_placereg_streets_id>22328</fk_placereg_streets_id>
      <wgs_lat>54.687157</wgs_lat>
      <wgs_long>25.279652</wgs_long>
      <comments>Šviesus butas.</comments>
      <features>
        <feature>2</feature>
        <feature>7</feature>
      </features>
      <photos>
        <photo>https://example.lt/photo.jpg</photo>
      </photos>
      <flat_size>50.5</flat_size>
      <flat_rooms>1</flat_rooms>
      <window_directions>n,e</window_directions>
      <adress_building_number>12A</adress_building_number>
    </flats>
    <commercials>
      <external_id>100002</external_id>
      <action_type>1</action_type>
      <contacts_name>Partnerio brokeris</contacts_name>
      <contacts_phone>+37060000000</contacts_phone>
      <contacts_email>[email protected]</contacts_email>
      <sell_price>145000</sell_price>
      <fk_placereg_adm_units_id>461</fk_placereg_adm_units_id>
      <fk_placereg_settlements_id>1</fk_placereg_settlements_id>
      <fk_placereg_microdistricts_id>31</fk_placereg_microdistricts_id>
      <fk_placereg_streets_id>22328</fk_placereg_streets_id>
      <wgs_lat>54.687157</wgs_lat>
      <wgs_long>25.279652</wgs_long>
      <comments>Komercinės patalpos.</comments>
      <features/>
      <photos>
        <photo>https://example.lt/photo.jpg</photo>
      </photos>
      <is_price_for_all_place>false</is_price_for_all_place>
      <commercial_room_size>50.5</commercial_room_size>
      <adress_building_number>12A</adress_building_number>
      <commercial_room_purposes_id>
        <commercial_room_purpose_id>408</commercial_room_purpose_id>
        <commercial_room_purpose_id>410</commercial_room_purpose_id>
      </commercial_room_purposes_id>
    </commercials>
  </announcements>
</domoplius>

Common mistakes

Sending JSON
V1 accepts XML only. Use the V2 contract for JSON.
Repeating an identity
Submit each external_id or id only once within a category.
Mixing V1 and V2 fields
V1 uses announcements, plural category buckets, and legacy field names.
Breaking the location hierarchy
Municipality, settlement, microdistrict, and street IDs must belong to one hierarchy.
Expecting complete-snapshot semantics
Omitted V1 optional fields and collections remain unchanged.

Versions and changes

V1 supports established legacy XML feeds only. The strict V2 contract is recommended for new XML or JSON feeds.

Machine-readable contract

GET /api/v1/imports/manifest returns the XML format, ten domestic and foreign category buckets, and links to field, option, and location APIs.

JSON

Change history

Import V1 · 2026-09-04
Documented the XML-only partial-update contract and the V1-to-V2 conversion tool.