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.
- 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.
- 2Give each listing a stable external_id or id and do not repeat it within the same category.
- 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.
<?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. Download
The importer downloads public XML under the configured size, time, and redirect limits.
2. Preflight
It checks the announcements structure, unique category/ID identities, empty feeds, DTDs, and external entities.
3. Streaming
Legacy fields and aliases are normalized and then validated for their category.
4. Persistence
Valid records are created or partially updated; invalid records are reported.
5. Reconciliation
Missing listings are considered only after all enabled Laravel sources for the owner finish reliably.
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.Provide the public XML URL, Domoplius account, and category buckets in the feed.
- 2.Specify the schedule and contact replacement rules.
- 3.Keep one stable test record and correct validation warnings.
- 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.
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. Administrative unit
Use the existing numeric municipality ID.
/api/v1/imports/locations/administrative-unitsGET /api/v1/imports/locations/administrative-units2. Settlement
Filter by administrative_unit_id.
/api/v1/imports/locations/settlements?administrative_unit_id=461GET /api/v1/imports/locations/settlements?administrative_unit_id=4613. Microdistrict
When applicable, filter by settlement_id.
/api/v1/imports/locations/microdistricts?settlement_id=1GET /api/v1/imports/locations/microdistricts?settlement_id=14. Street
The street must belong to the same settlement.
/api/v1/imports/locations/streets?settlement_id=1GET /api/v1/imports/locations/streets?settlement_id=1
<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
<?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.
Change history
- Import V1 · 2026-09-04
- Documented the XML-only partial-update contract and the V1-to-V2 conversion tool.