reference · 54 mappings
Every public field has a source and a rule.
This catalogue is the shared machine-readable source for required/optional status, constraints, examples and propertyfeedtemplate mappings.
54 of 54
| XML path | Requirement | Type / constraint | propertyfeedtemplate mapping |
|---|---|---|---|
/@versionfeed · public | required | fixed string1.0 | contract version |
/@generated_atfeed · public | required | date-timeISO 8601 with timezone | export timestamp |
/@modefeed · public | required | fixed stringcomplete | export mode |
/provider/@provider_idprovider · public | required | string1-255; stable and unique | feed/provider configuration |
/provider/nameprovider · public | required | string1-1000 | agency name |
/provider/emailprovider · public | optional | emailpublic syndication address | agency public email |
/provider/telephoneprovider · public | optional | stringpublic syndication number | agency public telephone |
/provider/websiteprovider · public | optional | https URLabsolute HTTPS | agency public website |
/properties/property/listing_ididentity · public | required | stringprovider-scoped; immutable; unique in feed | stable external ID, not properties.id |
/properties/property/referenceidentity · public | optional | stringdisplay reference; not identity | properties.reference |
/properties/property/created_atidentity · public | optional | date-timeISO 8601 | properties.created_at |
/properties/property/updated_atidentity · public | required | date-timemust change when exported data changes | properties.updated_at |
/properties/property/statuslifecycle · public | required | enumavailable|reserved|under_offer|sold|rented|withdrawn|draft | properties.status/is_draft |
/properties/property/transactioncommercial · public | required | enumsale|rent_long_term|rent_short_term|sale_or_rent | properties.department |
/properties/property/prices/primarycommercial · public | required | decimalnon-negative; currency ID/code must agree | properties.numeric_price + price_currency |
/properties/property/prices/alternatecommercial · public | optional | decimal[]maximum 10 | properties.alt_prices |
/properties/property/prices/display_textcommercial · public | optional | stringnot a replacement for numeric primary price | properties.price_text |
/properties/property/property_type/@idclassification · public | required | controlled IDactive property_types.id | properties.property_type_id |
/properties/property/property_type/@labelclassification · public | required | stringdescriptive; ID controls | property_types.name_en/name_es |
/properties/property/property_type/@source_labelclassification · public | optional | stringprovider label for diagnostics | raw source type/subtype |
/properties/property/location/@country_idlocation · public | required | controlled IDactive countries.id | properties.country_id |
/properties/property/location/@region_idlocation · public | required | controlled IDactive regions.id belonging to country | properties.region_id |
/properties/property/location/@city_idlocation · public | required | controlled IDactive cites.id belonging to region | properties.city_id |
/properties/property/location/@country|@region|@citylocation · public | required | stringdiagnostic labels; IDs control | controlled catalogue labels |
/properties/property/location/address/*location · public-sensitive | optional | stringprivacy and publication policy apply | house_number, street, district, county, postal_code |
/properties/property/location/coordinates/@latitudelocation · public-sensitive | optional | decimal-90 to 90; both coordinates required together | properties.latitude |
/properties/property/location/coordinates/@longitudelocation · public-sensitive | optional | decimal-180 to 180; public spelling is longitude | properties.longtitude (legacy misspelling) |
/properties/property/details/bedroomsdetails · public | optional | integer>= 0 | properties.bedrooms |
/properties/property/details/bathroomsdetails · public | optional | integer>= 0 | properties.bathrooms |
/properties/property/details/living_roomsdetails · public | optional | integer>= 0 | properties.living_rooms |
/properties/property/details/constructed_areadetails · public | optional | decimal + unitpositive; sqm|sqft | properties.built + metric |
/properties/property/details/living_areadetails · public | optional | decimal + unitpositive; sqm|sqft | properties.living_area + metric |
/properties/property/details/plot_areadetails · public | optional | decimal + unitpositive; sqm|sqft | properties.garden/derived plot where explicitly mapped |
/properties/property/details/garden_areadetails · public | optional | decimal + unitpositive; sqm|sqft | properties.garden |
/properties/property/details/parking_spacesdetails · public | optional | integer>= 0 | properties.parking |
/properties/property/details/pool_countdetails · public | optional | integer>= 0 | properties.pools |
/properties/property/ownership/tenureownership · public | optional | stringplain controlled provider value | properties.tenure |
/properties/property/ownership/leaseholdownership · public | optional | booleantrue|false | properties.leasehold |
/properties/property/ownership/part_ownershipownership · public | optional | booleantrue|false | properties.part_ownership |
/properties/property/ownership/new_buildownership · public | optional | booleantrue|false | properties.new_build |
/properties/property/texts/headingcontent · public | required | localized text[]one per locale; plain text | properties.advert_heading/localized content |
/properties/property/texts/descriptioncontent · public | required | localized text[]one per locale; plain text; no HTML | properties.main_advert_1/localized content |
/properties/property/features/featureclassification · public | optional | controlled ID[]unique active features.id; maximum 152 | properties.features/property_features |
/properties/property/energy/*energy · public | optional | string/decimalexplicit rating and units where measured | epc, energy_consumption, energy_emission |
/properties/property/contact/*contact · public-sensitive | optional | public contactmust be approved for syndication | broker_name, telephone, public email |
/properties/property/links/source_urllinks · public | optional | https URLabsolute HTTPS | canonical listing page |
/properties/property/links/video_urllinks · public | optional | https URLpublic, embeddable provider URL | properties.video_url |
/properties/property/links/virtual_tour_urllinks · public | optional | https URLpublic, embeddable provider URL | properties.virtual_tour |
/properties/property/media/itemmedia · public-sensitive | optional | ordered media[]unique ID/order; 200 maximum; see media specification | property_images/pictures/listing_image_url |
/properties/property/identifiers/permit_numberidentifiers · public-sensitive | optional | stringpublish only where legally appropriate | properties.permit_number |
/properties/property/identifiers/cadastral_referenceidentifiers · public-sensitive | optional | stringpublish only where legally appropriate | explicit source mapping; never infer |
/properties/property/publication/visiblepublication · public | required | booleanfalse for draft/withdrawn where retained | properties.is_draft/status |
/properties/property/publication/networkpublication · public | required | booleanexplicit syndication intent | properties.is_network/portal_export policy |
/properties/property/publication/available_frompublication · public | optional | dateISO 8601 date | properties.available_from |
Explicitly excluded source fields
properties.idinternal zentra property ID is assigned after import and is never provider identity
feed_id, agent_id, batch_idinternal tenancy and processing identifiers
notes_and_commissionconfidential operational/commission data
network_referenceinternal network reconciliation value
taguncontrolled internal value without a public contract
pictures storage pathspublish stable HTTPS media URLs, never internal storage paths
is_draft, portal_export, is_networkmapped into the explicit publication contract; raw flags are not exposed