Flux XML pour les projets et les plans
1. Objectif du flux
Le flux XML transfère des données structurées sur les projets immobiliers et les typologies types. Son objectif est de permettre au système destinataire de créer et mettre à jour automatiquement les fiches projets, d’afficher les prix, statuts, galeries, équipements, conditions de paiement, EOI et supports promotionnels fournis par les promoteurs.
Le flux transmet les typologies sous forme agrégée : un enregistrement de typologie décrit un plan type et le nombre d’unités disponibles de ce type. Il ne s’agit pas d’une liste d’appartements, de bureaux ou de lots spécifiques.
- realty-feed: conteneur racine de l’ensemble du flux XML. ID principal : —
- offers: un projet ou un complexe. ID principal : complex-id
- layouts: typologie type au sein d’un projet. ID principal : id
- payment_plans: une option de paiement du projet. ID principal : id
- eoi_item: une condition EOI. ID principal : —
- stock: campagne marketing, actualité ou message promotionnel du promoteur. ID principal : —
1.1 Qu’est-ce qu’un flux XML
Un flux XML est un fichier structuré contenant des données sur des projets immobiliers et des typologies types. Il inclut les descriptions, photos, prix, adresses, statuts, caractéristiques, équipements et autres données nécessaires à l’affichage des biens sur le site d’une agence ou dans un catalogue.
En termes simples, un flux XML est un flux de données immobilières que le système destinataire télécharge régulièrement, lit et utilise pour mettre à jour automatiquement les fiches de biens.
Alnair fournit les données. Le développement du site, du catalogue, l’intégration CRM et la logique d’import sont pris en charge par le client ou par son équipe technique.
1.2 Ce dont l’agence a besoin
Pour utiliser le flux XML, l’agence doit disposer de sa propre infrastructure technique capable de télécharger régulièrement le XML, d’analyser sa structure et de mettre à jour les données dans son système.
- Site web ou catalogue immobilier: l’endroit où les projets et typologies du flux seront affichés.
- Équipe technique ou développeur: configuration du téléchargement XML, de l’analyse et de l’import.
- Parseur XML: lecture de la structure XML et conversion vers le modèle de données interne.
- Module d’import: création, mise à jour et désactivation des projets et des typologies.
- Planificateur de tâches: exécution régulière de l’import selon un calendrier, par exemple via cron ou scheduler.
- Journalisation des erreurs: surveillance des valeurs enum inconnues, des champs vides et des erreurs de chargement.
1.3 Comment l’agence utilise le flux XML
Un flux de travail type se présente comme suit :
- Le système de l’agence télécharge le XML depuis un lien web personnel.
- Le XML est enregistré comme instantané brut pour le diagnostic et le retraitement.
- Le parseur lit la structure realty-feed, offers, layouts et les blocs imbriqués.
- Le module d’import crée de nouveaux projets et typologies ou met à jour les éléments existants.
- Les objets qui disparaissent du nouveau flux sont marqués comme inactifs.
- Le site de l’agence affiche des fiches projets, prix, galeries et statuts à jour.
Principales fonctionnalités d’intégration :
- Mises à jour automatiques : les projets et typologies sont mis à jour sans saisie manuelle.
- Création de pages biens : les données du flux servent aux fiches projets et typologies.
- Prix et statuts à jour : le site reçoit les mises à jour XML selon le planning.
- Filtres et recherche : les champs quartier, prix, type de bien, nombre de pièces et surface peuvent être utilisés pour filtrer.
- Galeries médias : les photos du projet, galeries thématiques et images de typologies peuvent être affichées dans l’interface.
2. Structure générale du XML
<realty-feed>
<generation-date>2026-06-17T12:06:39+04:00</generation-date>
<offers>...</offers>
<offers>...</offers>
</realty-feed>
- realty-feed: objet. Bloc racine du flux.
- generation-date: datetime. Date et heure de génération du XML. Utilisé pour vérifier la fraîcheur des données.
- offers: objet[]. Liste de projets ou complexes. Chaque bloc offers contient les données du projet et ses typologies.
2.1 Accès au flux et limites de téléchargement
Le flux est fourni au client via un lien web personnel. Ce lien est unique au client et est utilisé par le système destinataire pour télécharger automatiquement le XML.
Le lien personnel est disponible pour l’administrateur dans le compte Alnair. L’administrateur peut transmettre ce lien à l’équipe technique du client pour configurer l’import.
- Type d’accès: lien web personnel. URL individuelle du flux XML pour le client.
- Où obtenir le lien: compte Alnair. Le lien est disponible pour l’administrateur client.
- Fréquence de mise à jour du flux: toutes les 4 heures. Les données XML sont mises à jour côté Alnair une fois toutes les 4 heures.
- Intervalle minimum de téléchargement: pas plus d’une fois par heure. Le système destinataire ne doit pas accéder au flux plus d’une fois par heure.
- Limite dépassée: blocage de l’accès. Si les requêtes sont trop fréquentes, l’accès au flux peut être temporairement bloqué.
Logique d’intégration recommandée : configurer un téléchargement planifié via cron ou scheduler, enregistrer le dernier XML reçu et ne pas interroger le flux à chaque chargement de page du site. Le mode optimal consiste à télécharger le flux au maximum une fois par heure, tout en tenant compte du fait que les nouvelles données apparaissent environ toutes les 4 heures.
3. Projet: <offers>
offers est l’entité principale du flux. Elle contient la description du projet, le promoteur, l’emplacement, le statut de construction et de vente, les prix, les médias, les équipements, les plans de paiement, l’EOI, les promotions marketing et les typologies types.
<offers>
<complex-id>5646</complex-id>
<type>project</type>
<logo>https://...</logo>
<photo>https://...</photo>
<title>...</title>
<description>...</description>
<price_on_request>1</price_on_request>
<status>...</status>
<construction_start_at>2025-01-01T00:00:00+04:00</construction_start_at>
<construction_progress>15</construction_progress>
<planned_completion_at>2027-12-31T00:00:00+04:00</planned_completion_at>
<predicted_completion_at>2027-12-31T00:00:00+04:00</predicted_completion_at>
<amenities>...</amenities>
<developer>...</developer>
<city>Dubai</city>
<address>...</address>
<latitude>25.000000</latitude>
<longitude>55.000000</longitude>
<districts>...</districts>
<album>...</album>
<albums>...</albums>
<constructions_count>1</constructions_count>
<for_sale_count>10</for_sale_count>
<price>...</price>
<br_prices>...</br_prices>
<updated_at>2026-06-17T10:53:20+04:00</updated_at>
<is_sold_out>0</is_sold_out>
<payment_plans>...</payment_plans>
<sales_status>...</sales_status>
<stocks>...</stocks>
<eoi>...</eoi>
<service_charge>...</service_charge>
<assignment>...</assignment>
<is_limited_publication>0</is_limited_publication>
<layouts>...</layouts>
</offers>
- complex-id: entier. ID unique du projet dans Alnair. À utiliser comme ID externe du projet pour l’upsert.
- type: enum. Type d’entité de premier niveau : project ou compound. Conserver la valeur brute et importer comme projet de premier niveau.
- logo: url. Logo du projet. À afficher dans le branding, ne pas utiliser comme visuel de couverture.
- photo: url. Image principale du projet / couverture. À utiliser comme image de couverture et image hero.
- title: objet localisé. Nom du projet en en/ru/ar. À afficher selon la langue de l’interface.
- description: HTML localisé. Description du projet en en/ru/ar. À afficher de façon sécurisée ; le HTML est inclus dans CDATA.
- price_on_request: 0/1. Indicateur de masquage du prix. Si 1, afficher « Prix sur demande ».
- status: objet. Statut de construction. Ne pas confondre avec sales_status.
- construction_start_at: datetime. Date de démarrage des travaux. À afficher si renseignée.
- construction_progress: decimal. Pourcentage d’avancement des travaux. À afficher en pourcentage.
- planned_completion_at: datetime. Date prévue d’achèvement du projet. À utiliser comme date de remise.
- predicted_completion_at: datetime. Date prévisionnelle d’achèvement. Peut être utilisée comme date mise à jour.
- amenities: objet. Équipements et atouts du projet. À mapper par clé.
- developer: objet. Promoteur du projet. Stocker le nom et le logo.
- city / address: chaîne. Ville et adresse du projet. À utiliser dans les données de localisation.
- latitude / longitude: decimal. Coordonnées. À utiliser pour la carte.
- districts: objet. Quartiers du projet. À utiliser pour les filtres et la fiche projet.
- album: objet. Galerie principale du projet, non catégorisée. À afficher comme galerie générale.
- albums: objet. Galeries thématiques du projet. À regrouper par titre.
- for_sale_count: entier. Nombre d’unités disponibles dans le projet. Peut être affiché comme disponibilité.
- price: objet. Fourchette de prix générale du projet. À masquer lorsque price_on_request=1.
- br_prices: objet[]. Prix par nombre de chambres ou par catégorie. À utiliser pour les filtres et les listes.
- updated_at: datetime. Date de mise à jour du projet. À utiliser pour la synchronisation.
- is_sold_out: 0/1. Indicateur de sold out. À utiliser avec sales_status.
- payment_plans: objet[]. Options de paiement proposées par le promoteur. À afficher comme options de paiement.
- sales_status: objet localisé. Statut commercial du projet. Définit l’étape de vente.
- stocks: objet. Campagnes marketing et messages promotionnels du promoteur. À afficher comme blocs promo.
- eoi: objet. Expression of Interest. À afficher uniquement pour Presale (EOI).
- service_charge: objet. Charges de service. À afficher si la valeur est renseignée.
- assignment: decimal. Condition d’assignment. Vide signifie non spécifié.
- is_limited_publication: 0/1. Restriction de publication. Si 1, ne pas publier publiquement sans autorisation.
- layouts: objet[]. Typologies types du projet. À importer comme entités enfants du projet.
4. Champs localisés
Les champs localisés ont la même structure : les valeurs en anglais, russe et arabe sont transmises à l’intérieur de la balise.
<title>
<en>Project Name</en>
<ru>Название проекта</ru>
<ar>اسم المشروع</ar>
</title>
- en: valeur anglaise. Fallback recommandé.
- ru: valeur russe.
- ar: valeur arabe.
Règle de repli :
- Utiliser la langue de l’interface si elle est renseignée.
- Si la langue requise est vide, utiliser en.
- Si en est vide, utiliser ru.
- Si ru est vide, utiliser ar.
- Si toutes les valeurs sont vides, ne pas afficher le champ.
5. Statuts
5.1 Statut de construction: <status>
Le statut de construction indique l’état physique du projet. Il n’indique pas la disponibilité commerciale.
<status>
<key>development_stage_progress</key>
<en>In Progress</en>
<ru>Строится</ru>
<ar>قيد الإنشاء</ar>
</status>
- Scheduled: le projet est planifié.
- In Progress: la construction est en cours.
- Ready: le projet est achevé.
- Stopped: la construction est arrêtée.
5.2 Statut de vente: <sales_status>
Le statut de vente indique l’étape commerciale du projet : annonce, présale, lancement, ventes actives ou sold out.
- Preliminary Info: informations préliminaires sur le projet.
- Announcement: le projet a été annoncé.
- Presale (EOI): la collecte des EOI est en cours.
- Launch: lancement des ventes.
- On Sale: le projet est disponible à l’achat.
- Sold Out: le projet est vendu.
- Pending: le statut est en attente de mise à jour.
6. Promoteur et emplacement
Ces blocs sont nécessaires pour afficher la marque du promoteur et la localisation géographique du projet.
<developer>
<title>
<en>Developer Name</en>
<ru>Developer Name</ru>
<ar>Developer Name</ar>
</title>
<logo>https://...</logo>
</developer>
<city>Dubai</city>
<address>Project Address, Dubai</address>
<latitude>25.01809076</latitude>
<longitude>55.13354525</longitude>
<districts>
<district>Jumeirah Village Triangle (JVT)</district>
</districts>
- developer.title: objet localisé. Nom du promoteur.
- developer.logo: url. Logo du promoteur.
- city: chaîne. Ville.
- address: chaîne. Adresse.
- latitude / longitude: decimal. Coordonnées pour la carte.
- districts.district: string[]. Quartiers du projet.
7. Prix
7.1 Prix du projet: <price>
Le prix au niveau du projet affiche la fourchette générale des offres disponibles dans le projet.
<price>
<min>815462</min>
<max>2089780</max>
<min_usd>222009</min_usd>
<max_usd>568942</max_usd>
<currency>AED</currency>
</price>
- min: decimal. Prix minimum.
- max: decimal. Prix maximum.
- min_usd: decimal. Prix minimum en USD.
- max_usd: decimal. Prix maximum en USD.
- currency: enum. Devise principale, généralement AED.
Si price_on_request = 1, les prix exacts ne sont pas affichés publiquement, même si price est renseigné.
7.2 Prix par catégorie: <br_prices>
br_prices regroupe les prix et les surfaces par nombre de chambres ou par type de bien. C’est utile pour les filtres et les fiches projet courtes.
<br_prices>
<key>1</key>
<count>7</count>
<min_price>1070564</min_price>
<max_price>1289674</max_price>
<min_price_m2>17204</min_price_m2>
<max_price_m2>18483</max_price_m2>
<currency>AED</currency>
<min_area><m2>57.92</m2><ft2>623.45</ft2></min_area>
<max_area><m2>74.17</m2><ft2>798.36</ft2></max_area>
</br_prices>
- studio: studios.
- 1-6: nombre de chambres.
- villa: villas.
- townhouse: maisons de ville.
- n: non applicable / catégorie non résidentielle / autre.
8. Médias
Les médias du flux sont répartis en plusieurs types. Ils ne doivent pas être fusionnés dans une seule galerie sans tenir compte de leur usage : une image peut être la couverture du projet, une autre le logo, une autre une image promotionnelle et une autre un plan.
- logo: offers.logo. Logo du projet. À afficher dans le branding du projet ; ne pas utiliser comme couverture.
- photo: offers.photo. Image principale du projet / couverture. À utiliser comme image de couverture dans la fiche et comme image hero sur la page projet.
- album.image: offers.album.image. Galerie principale du projet, non catégorisée. À afficher dans la galerie générale du projet.
- albums.album.images.image: offers.albums.album.images.image. Galerie thématique du projet. À regrouper par albums.album.title.
- developer.logo: offers.developer.logo. Logo du promoteur. À afficher dans le bloc promoteur.
- stocks.stock.logo: offers.stocks.stock.logo. Image de campagne marketing. À afficher dans le bloc promotionnel.
- layouts.album.image: offers.layouts.album.image. Galerie d’une typologie spécifique. À afficher au niveau de la typologie.
- levels_photos.level_photo.image: offers.layouts.levels_photos.level_photo.image. Image de typologie par niveau. À utiliser comme plan.
<photo>https://...</photo>
<album>
<image>https://...</image>
</album>
<albums>
<album>
<title><en>Infrastructure</en><ru>Инфраструктура</ru><ar>...</ar></title>
<images>
<image>https://...</image>
</images>
</album>
</albums>
- Présentation du projet: images de présentation du projet.
- Avancement des travaux: photos de l’avancement de la construction.
- Exemples de finition: exemples de finitions.
- Infrastructure: infrastructure du projet.
- Vue: vues et environnement.
Toutes les catégories ne doivent pas forcément être présentes dans chaque projet. Si le titre de la catégorie est vide, les images peuvent être importées comme non catégorisées ou placées dans la galerie générale.
Il n’existe pas de balise XML séparée pour history/story dans la structure actuelle. Les actualités, messages promotionnels et supports marketing du projet sont transmis via stocks. Pour l’historique de construction, la catégorie Construction progress peut être utilisée si elle est présente dans albums.
9. Équipements
amenities décrit les équipements et atouts du projet. Pour l’intégration, il est préférable d’utiliser key, tandis que les valeurs localisées doivent être utilisées pour l’affichage.
<amenities>
<amenity>
<key>project_facilities_gym</key>
<en>Gym</en>
<ru>Тренажёрный зал</ru>
<ar>صالة رياضية</ar>
</amenity>
</amenities>
- amenities: objet. Conteneur des équipements.
- amenity: objet. Un équipement.
- key: enum. Clé technique.
- en / ru / ar: chaîne. Nom de l’équipement en trois langues.
La clé projecet_hotel_license contient une faute de frappe, mais elle doit être mappée comme Hotel License. Il est recommandé de prendre en charge l’alias et de ne pas interrompre l’import.
10. Promotions marketing: <stocks>
stocks regroupe les campagnes marketing, actualités et messages promotionnels des promoteurs. Ils peuvent inclure des prix spéciaux, remises, conditions de lancement, annonces EOI, offres de paiement temporaires et supports publicitaires. Ce bloc n’est pas un stock d’inventaire et ne définit pas la disponibilité des unités.
<stocks>
<stock>
<title>...</title>
<description>...</description>
<start_at>2025-06-26T00:00:00+04:00</start_at>
<end_at/>
<logo>https://...</logo>
</stock>
</stocks>
- stocks: objet. Conteneur des messages marketing.
- stock: objet. Une campagne, une actualité ou une annonce promotionnelle.
- title: objet localisé. Titre de la promotion.
- description: HTML localisé. Description de la promotion.
- start_at: datetime. Date de début.
- end_at: datetime. Date de fin ; peut être vide.
- logo: url. Image de la promotion.
Utilisez for_sale_count, layouts.sale_units_count et sales_status pour la disponibilité des biens, et non stocks.
11. EOI
EOI signifie Expression of Interest. Le bloc décrit l’intérêt préliminaire ou les conditions de dépôt pour les projets au statut Presale (EOI).
<eoi>
<is_eoi_return>0</is_eoi_return>
<eoi_items>
<eoi_item>
<price>100000</price>
<percent/>
<description>
<en>EOI amount for 2 Bedrooms</en>
<ru>Сумма EOI для 2-комнатных</ru>
<ar>...</ar>
</description>
</eoi_item>
</eoi_items>
</eoi>
- is_eoi_return: 0/1/vide. 0 = non remboursable, 1 = remboursable, vide = non spécifié.
- eoi_items: objet. Conteneur des conditions EOI.
- eoi_item: objet. Une condition EOI.
- price: decimal. Montant fixe de l’EOI.
- percent: decimal. Pourcentage EOI, si utilisé.
- description: objet localisé. Description de la condition.
- sales_status.en = Presale (EOI) et eoi_items est renseigné: afficher l’EOI.
- Tout autre sales_status: masquer l’EOI.
12. Charges de service et assignment
<service_charge>
<value>172.22</value>
<unit>sq. m</unit>
<currency>AED</currency>
</service_charge>
<assignment>40.00</assignment>
- service_charge.value: montant des charges de service. Si vide, ne pas afficher le bloc.
- service_charge.unit: unité de calcul, généralement sq. m. Peut être vide.
- service_charge.currency: devise, généralement AED. Peut être vide.
- assignment: pourcentage à partir duquel l’assignation est possible. Vide = information non spécifiée, pas une restriction.
13. Plans de paiement: <payment_plans>
payment_plans décrit les options de paiement du bien proposées par le promoteur. Un projet peut avoir plusieurs plans de paiement. Chaque plan détaille le paiement par étapes : réservation, construction, remise des clés et après remise. Les frais et charges additionnelles sont transmis séparément, de sorte que le pourcentage total peut dépasser 100%. Par exemple, 104% peut signifier 100% du prix du bien + 4% de frais DLD.
- Basic: id, title, currency. Identifiant du plan, titre et devise. title est un texte libre, pas un enum.
- Booking: on_booking_percent, on_booking_fix, on_booking_payments_count, on_booking_fees. Paiements et frais à l’étape de réservation.
- Construction: on_construction_percent, on_construction_fix, on_construction_payments_count, on_construction_fees. Paiements pendant la construction.
- Handover: on_handover_percent, on_handover_fix, on_handover_payments_count, on_handover_fees. Paiements à la remise du bien.
- Post-handover: post_handover_percent, post_handover_fix, on_post_handover_payments_count, on_post_handover_fees. Paiements après la remise.
- ROI: roi_percent, roi_fix, roi_payments_count, roi_fees. Champs pour les schémas de ROI ou de revenu garanti.
- Additional fees: additional, additional_percent, additional_fix, additional_fix_m2. Paiements additionnels, par exemple DLD Fee.
- Periods: period_after_handover, period_after_roi. Fréquence des paiements récurrents.
- Totals: price_total, fees_included_total. Montants totaux du plan et frais inclus.
14. Typologies: <layouts>
layouts décrit une typologie type au sein d’un projet. Il s’agit d’un type d’unité agrégé, pas d’un appartement ou bureau spécifique.
- id: entier. ID unique de la typologie. À utiliser comme ID externe de la typologie.
- title: objet localisé. Nom de la typologie. À afficher selon la langue de l’interface.
- project_id: entier. ID du projet parent. À relier à offers.complex-id.
- building_name: objet localisé. Nom de l’immeuble. Ne pas afficher si vide.
- price_on_request: 0/1. Indicateur de masquage du prix. Si 1, ne pas afficher le prix.
- area_min / area_max: objet. Fourchette de surface. m2 et ft2.
- area_balcony_min / area_balcony_max: objet. Fourchette de surface du balcon. Peut être vide.
- type: objet localisé. Type de bien. Voir la référence des types d’unité.
- sale_units_count: entier. Nombre d’unités disponibles de ce type. Ce n’est pas une liste de lots.
- album: objet. Galerie de la typologie. À afficher au niveau de la typologie.
- levels_photos: objet. Images par niveau. À utiliser comme plans.
- floors_count: entier. Nombre d’étages. 1, 2, 3, etc.
- rooms_count: objet localisé. Nombre de pièces. Voir la référence du nombre de pièces.
- price: objet. Fourchette de prix de la typologie. À masquer lorsque price_on_request=1.
- is_limited_publication: 0/1. Restriction de publication. Si 1, masquer publiquement.
15. Références des valeurs enum
- Type de projet: project, compound.
- Statut de vente: Preliminary Info, Announcement, Presale (EOI), Launch, On Sale, Sold Out, Pending.
- Statut de construction: Scheduled, Ready, Stopped, In Progress.
- Type d’unité: Apartment, Villa, Townhouse, Duplex, Triplex, Penthouse, Retail, Office, Suite.
- Nombre de pièces: Studio, 1 BR, 2 BR, 3 BR, 4 BR, 5 BR, 6 BR, 7 BR, 8 BR, NA.
- Clé de prix BR: studio, 1, 2, 3, 4, 5, 6, villa, townhouse, n.
- Catégorie de galerie: Project presentation, Construction progress, Finishing examples, Infrastructure, View.
- Devise: AED.
- Unité de charges de service: sq. m.
- Indicateurs booléens: 0, 1 ; vide autorisé pour certains champs.
Si le flux contient une valeur qui ne figure pas dans la liste de référence, l’import ne doit pas échouer. La valeur doit être stockée telle quelle, mappée comme inconnue et consignées pour examen.
16. Valeurs vides
Une valeur vide signifie « non spécifié », et non 0. Les balises vides peuvent apparaître sous la forme <field/> ou <field></field>.
- assignment: la condition d’assignation n’est pas spécifiée.
- service_charge.value: les charges de service ne sont pas spécifiées.
- eoi.is_eoi_return: le caractère remboursable de l’EOI n’est pas spécifié.
- area_balcony_min.m2: la surface du balcon n’est pas spécifiée.
- description.en: la description est absente.
17. Règles d’affichage
- Prix masqué: price_on_request = 1. Afficher « Prix sur demande ».
- Prix visible: price_on_request = 0. Afficher le prix min/max.
- EOI: sales_status.en = Presale (EOI) et EOI est renseigné. Afficher l’EOI.
- EOI non pertinent: sales_status.en != Presale (EOI). Masquer l’EOI.
- Sold out: is_sold_out = 1 ou sales_status.en = Sold Out. Afficher « Vendu » ou masquer de la liste.
- Publication limitée: is_limited_publication = 1. Ne pas publier publiquement.
- Assignment vide: assignment vide. Ne pas afficher le bloc assignment.
- Charges de service vides: service_charge.value vide. Ne pas afficher les charges de service.
18. Règles d’import
- Projet: rechercher par complex-id ; si trouvé, mettre à jour ; sinon, créer.
- Typologie: rechercher par layouts.id ; lier au projet via project_id.
- Suppression: si un objet disparaît du nouveau flux, le marquer inactif au lieu de le supprimer immédiatement.
- Enum inconnu: stocker la valeur brute, la mapper comme inconnue et la consigner.
- Valeurs vides: ne pas convertir en 0 sans règle explicite propre au champ.
19. Structure de données recommandée
Champ projet → Source
- external_project_id: complex-id.
- raw_offer_type: type.
- title_*: title.
- description_*: description.
- developer_name: developer.title.
- developer_logo_url: developer.logo.
- city/address/coordinates: city, address, latitude, longitude.
- districts: districts.district.
- construction_status: status.en.
- sales_status: sales_status.en.
- price_min / price_max: price.
- price_on_request: price_on_request.
- galleries: photo, album, albums.
- payment_plans: payment_plans.
- eoi: eoi.
- stocks: stocks.
- source_updated_at: updated_at.
Champ typologie → Source
- external_layout_id: layouts.id.
- external_project_id: layouts.project_id.
- title_*: layouts.title.
- building_name_*: building_name.
- unit_type: type.en.
- rooms_count: rooms_count.en.
- sale_units_count: sale_units_count.
- area_min / area_max: area_min, area_max.
- balcony_min / balcony_max: area_balcony_min, area_balcony_max.
- floors_count: floors_count.
- price_min / price_max: price.
- layout_gallery: album.
- levels_photos: levels_photos.
- is_limited_publication: is_limited_publication.