# gesteco — Gesteco inc. - site: https://gesteco.ca/location (Umbraco .NET + app Vue homeRentalBrowsingApp) - méthode: **API JSON publique** `/umbraco/api/units?locale=fr&page=N&pageSize=100` - annonces: 14 (338 unités au total dans l'API : 214 louées, 75 vendues, 8 réservées, 41 disponibles dont 27 en vente — filtrées) - couverture (sur 14 annonces): prix 100%, dispo (date ISO) 100%, superficie 93%, type 100%, images 100%, description 100%, chiens (structuré) 100% - fixture: ok (4 requêtes JSON) · test: ok (2 verts) ## Découverte - robots.txt : tout permis sauf pages 404. Vérifié avant construction. - L'endpoint `unitconfigurations` documenté ne donne que les types d'unités ; la cartographie du bundle JS (`/dist/homeRentalBrowsingApp/index.js`) a révélé le vrai endpoint `GET /umbraco/api/units` (paramètres regionIds, statuses, listingTypes, dogAllowed, page, pageSize…). Pagination par taille de page (l'en-tête `X-Total-Pages` n'est pas rejouable par les fixtures). ## Filtres (fidèles à la source) - `status == "Available"` (énumération de l'API : Available/Rented/Reserved/Sold) - `buildingListingType == 1` = location (0 = achat, prix de vente à 6 chiffres — hors périmètre Lou-Ka), `rentalUrl` présent, `isActive` non faux. ## Champs extraits - external_id : `id` numérique de l'unité (clé BD Umbraco, stable). - url : `rentalUrl` (fiche localisée /location////…). - price : `rawBasePrice` (nombre) ; availability : `availabilityDate` ISO. - address : `fullAddress` (« 8-32 Chemin de l'Horizon, Waterloo, J0E 2N0 ») ; city : champ `city` de l'API — Granby (9), Waterloo (4), Bromont (1), Cowansville selon l'inventaire. - unit_type : `unitUnitConfigurations[0].unitConfigurationName` (« 4 ½ + bureau » -> 4½) ; area_sqft : `livingArea` (pi²). - amenities : configuration, chambres, sdb, étage (`floorName`), borne de recharge (`hasChargingStation`) — tous champs structurés de l'API. - details : `dog_allowed` (booléen API), `project` (nom du projet). - description : champ FR natif `description` (HTML nettoyé) — les champs « localized » ressortent en anglais malgré `locale=fr` ; promotion (`promotions`, ex. « 1ER MOIS GRATUIT ») préfixée à la description. - images : galerie de l'unité + `buildingImageUrl` + plan (`planImageUrl`). ## Champs indisponibles à la source - lat/lng par unité (la carte du site géocode côté client). - Chats/animaux autres que chiens : seulement en texte de description. ## Fragilités - API non versionnée : un changement de schéma Umbraco casserait le parsing (test de rejeu en sentinelle). - `rawBasePrice` sert aussi aux unités en vente (300 000 $ et plus) : le filtre `buildingListingType` est indispensable ; garde-fou parse 100-20 000 $.