LogiScan

Référence des schémas

Cette page est engendrée depuis les modèles que le service sert : ce qui est décrit ici est ce qui est renvoyé, au champ près. Les types suivent JSON ; « ou nul » signale un champ qui peut manquer, et un champ qui manque se lit « la source n'a rien dit », jamais « il n'y a rien ».

Les requêtes

DemandeAnalyse

Le corps de POST /v1/analyses.

ChampTypeRequisSens
source SourceLien ou SourceTexte ou SourceAdresse oui
prix_eur nombre ou nul Le prix affiché, s'il n'est pas dans la source. Sans prix : la fourchette.
radii liste d'entiers ou nul Rayons de comparaison en mètres, parmi ceux du site ; 300, 500, 800 et 1000 par défaut.

SourceLien

Une annonce désignée par son lien : Stream Estate d'abord, le fetcher ensuite.

ChampTypeRequisSens
listing_url chaîne (motif `^https?://`) oui (longueur 12–2000)

SourceTexte

Le texte d'une page d'annonce, analysé puis jeté (§ 2 bis).

ChampTypeRequisSens
listing_text chaîne oui (longueur 20–200000)
source_domain chaîne ou nul Le domaine d'où vient le texte, pour les statistiques agrégées seulement.

SourceAdresse

Une adresse postale, géocodée dans la Base Adresse Nationale — sans annonce.

ChampTypeRequisSens
address chaîne oui (longueur 5–250)
ban_id chaîne ou nul L'identifiant BAN à retenir parmi les propositions, s'il est connu.
facts PropertyFacts ou nul Ce qu'on sait du bien : type, surface, pièces…

DemandeCompletude

Ce que POST /v1/listings/completeness reçoit : une annonce structurée, ou un texte.

ChampTypeRequisSens
listing AnnonceApi ou nul Une annonce déjà structurée : commune, bien, diagnostic.
text chaîne ou nul Le texte d'une page d'annonce, lu par le parseur puis jeté.
source_domain chaîne ou nul Le domaine d'origine : il n'adapte que la phrase d'aide.
tous_les_champs booléen Rendre la liste entière des champs manquants, au lieu des trois du site.

AnnonceApi

Une annonce structurée telle que l'API l'accepte : des faits, jamais une provenance. C'est ListingInput sans source_url ni reference (§ 2 bis, § 1 undecies) : ces deux champs désignent une annonce chez un tiers et n'entrent pas par cette porte.

ChampTypeRequisSens
commune Commune ou nul
property PropertyFacts ou nul
dpe DPEFacts ou nul
description_text chaîne ou nul

Commune

Localité de l'annonce. Tous les champs sont facultatifs et indépendants.

ChampTypeRequisSens
nom chaîne ou nul Nom de la commune
code_postal chaîne (motif `^\d{5}$`) ou nul Code postal à 5 chiffres
code_insee chaîne (motif `^[0-9][0-9AB]\d{3}$`) ou nul Code INSEE de la commune (2A/2B admis pour la Corse)

PropertyFacts

Caractéristiques du bien telles qu'annoncées, toutes facultatives.

ChampTypeRequisSens
type_bien « appartement » | « maison » | « autre » ou nul
surface_m2 nombre ou nul Surface habitable en m²
surface_terrain_m2 nombre ou nul Surface totale du terrain en m², telle que l'annonce l'indique. Le cadastre publie la même grandeur, à la parcelle près : les deux se confrontent.
nb_pieces entier ou nul Nombre de pièces
nb_chambres entier ou nul Nombre de chambres
nb_salles_de_bain entier ou nul Nombre de salles de bain ou d'eau
prix_eur nombre ou nul Prix affiché en euros
prix_hors_honoraires nombre ou nul Prix hors honoraires d'agence, quand l'annonce le publie. C'est la grandeur comparable aux ventes DVF, qui enregistrent le prix porté à l'acte : voir docs/methodologie_deal_score.md, § 3 bis.
honoraires_acquereur booléen ou nul L'annonce indique-t-elle que les honoraires sont à la charge de l'acquéreur ? Vrai signifie que « prix_eur » comprend des honoraires que DVF n'enregistre pas : la comparaison de prix devient incertaine, et le Deal Score le dit au lieu de comparer deux grandeurs différentes.
etage entier ou nul Étage (0 = rez-de-chaussée)
annee_construction entier ou nul Année de construction annoncée. Elle ne situe aucun bien à elle seule, mais elle recoupe le bâti et sert de critère de départage au moment de confronter un candidat au cadastre.
chauffage « gaz » | « fioul » | « reseau » | « electrique » | « pompe_a_chaleur » | « bois » ou nul Énergie de chauffage annoncée (« chauffage au gaz », « pompe à chaleur »…). Le diagnostic ne la publie pas, mais ses émissions rapportées à sa consommation la trahissent : c'est un critère de départage, jamais un critère portant.

DPEFacts

Éléments de diagnostic de performance énergétique issus de l'annonce.

ChampTypeRequisSens
numero_ademe chaîne (motif `^[0-9A-Z]{13}$`) ou nul Numéro ADEME : 13 caractères alphanumériques majuscules
date_etablissement chaîne (date AAAA-MM-JJ) ou nul Date d'établissement du DPE
date_precision « jour » | « mois » | « annee » ou nul Finesse réellement connue de la date d'établissement
classe_energie « A » | « B » | « C » | « D » | « E » | « F » | « G » ou nul
classe_ges « A » | « B » | « C » | « D » | « E » | « F » | « G » ou nul
conso_kwh_m2_an nombre ou nul Consommation d'énergie primaire en kWh/m²/an
emission_ges_kg_m2_an nombre ou nul Émissions de gaz à effet de serre en kgCO₂/m²/an
facture_energie_min nombre ou nul Borne basse des dépenses annuelles d'énergie estimées par le diagnostic, en euros. Indice faible : la fourchette dépend de l'année de référence des prix de l'énergie, qui n'est pas toujours celle du DPE.
facture_energie_max nombre ou nul Borne haute des dépenses annuelles d'énergie estimées, en euros

Les réponses

ReponseAnalyse

La réponse 200 : le contrat de sortie du moteur (§ 3, § 6), et ce qu'il a coûté.

ChampTypeRequisSens
id chaîne oui
statut chaîne oui « termine »
billed booléen oui
source chaîne oui « listing_url », « listing_text » ou « address »
mode chaîne oui « live » ou « test »
cost_credits nombre oui (≥ 0)
resolution ResolutionResult oui
deal_scores liste de NotesParCandidat
comparables liste de ComparableApi
enrichment EnvironnementApi ou nul
neighborhood NeighborhoodResult ou nul
diffuseurs Diffuseurs
sections liste de AnalysisSection
sources_status SourceStatus oui
duration_ms entier oui (≥ 0)

AnalyseAcceptee

La réponse 202 : le travail est parti, voici où le suivre.

ChampTypeRequisSens
id chaîne oui
status chaîne oui « en_cours »
status_url chaîne oui

AnalyseEnCours

La réponse 202 de GET tant que le travail dure.

ChampTypeRequisSens
id chaîne oui
status chaîne oui « en_cours »

AnalyseEchouee

Un travail qui a échoué par notre faute ou celle d'une source : crédit libéré.

ChampTypeRequisSens
id chaîne oui
statut chaîne oui « echec »
code chaîne oui
raison chaîne oui
billed booléen

FicheDpe

Ce que GET /v1/dpe/{numero} rend : la fiche, et d'où elle vient.

ChampTypeRequisSens
numero chaîne (motif `^[0-9A-Z]{13}$`) oui
provenance chaîne oui « local » (le miroir du dump ADEME) ou « api » (le flux data.ademe.fr).
billed booléen oui
mode chaîne oui « live » ou « test »
cost_credits nombre oui (≥ 0)
dpe AdemeDpeRecord oui La fiche telle que le moteur la lit : adresse, commune, bien, diagnostic.

ReponseCompletude

Ce que POST /v1/listings/completeness rend.

ChampTypeRequisSens
billed booléen oui
mode chaîne oui
cost_credits nombre oui (≥ 0)
suffisant booléen oui
champs liste de MissingField
message chaîne oui
champs_lus liste de chaînes Les champs du contrat que l'annonce renseignait (« property.surface_m2 »…).
tous_les_champs booléen oui

Compte

Ce que GET /v1/account rend.

ChampTypeRequisSens
email chaîne oui
key CleDuCompte oui
balance_credits nombre Le solde du portefeuille, en crédits. (≥ 0)
usage dictionnaire de FenetreUsage Par fenêtre (« 24h », « 7d », « 30d », « 90d ») : appels et crédits.
tarifs dictionnaire de nombres Le coût de chaque service, en crédits par appel.

Les objets emboîtés

AddressCandidate

Adresse candidate, jamais présentée comme sûre. Le couple matched_criteria / diverged_criteria rend le score explicable : il énumère ce qui concorde et ce qui diverge. comparaisons dit la même chose en mieux, quand le niveau qui a produit le candidat sait le faire : les deux valeurs côte à côte plutôt qu'un nom de règle. Les deux cohabitent parce que tous les niveaux ne peuvent pas la remplir — le niveau 4 rapproche une parcelle d'un prix de vente, il n'a pas de fiche à opposer à l'annonce — et parce que les appelants de l'API lisent déjà les deux listes de chaînes. Une interface affiche les comparaisons si elles existent, et retombe sur les listes sinon.

ChampTypeRequisSens
label chaîne oui Adresse formatée, telle qu'affichée (longueur 1–…)
ban_id chaîne ou nul Identifiant BAN de l'adresse
lat nombre ou nul
lon nombre ou nul
parcelle chaîne ou nul Référence cadastrale de la parcelle
confidence nombre oui Score de confiance dans [0, 1] (≥ 0.0, ≤ 1.0)
method chaîne oui Méthode de résolution ayant produit le candidat (longueur 1–…)
matched_criteria liste de chaînes
diverged_criteria liste de chaînes
comparaisons liste de CriterionComparison
position_approchee booléen Vrai quand le point n'est pas celui d'un référentiel mais celui d'une prise de vue devant la façade : la Base Adresse Nationale ne connaissait que la voie, et le repère aurait été au milieu de la rue (web/position.py).
dpe_trouve DPEFacts ou nul Diagnostic qui a désigné ce candidat, quand un niveau s'appuie sur l'ADEME. C'est de la donnée trouvée, jamais annoncée.

AdemeDpeRecord

Fiche DPE de l'ADEME, exprimée dans les contrats de données du domaine. Volontairement bâtie sur Commune, PropertyFacts et DPEFacts plutôt que sur une structure inventée pour l'occasion : un resolver compare ainsi une fiche ADEME et une annonce dans le même langage, champ à champ. numero_dpe conserve le numéro tel que l'ADEME le publie ; s'il ne respecte pas la forme attendue, dpe.numero_ademe reste vide plutôt que de faire échouer la lecture de toute la fiche.

ChampTypeRequisSens
numero_dpe chaîne oui
adresse chaîne ou nul
ban_id chaîne ou nul
lat nombre ou nul
lon nombre ou nul
commune Commune oui
property PropertyFacts oui
dpe DPEFacts oui
desactive booléen
remplace_par chaîne ou nul
identifiant_source chaîne ou nul
remplace_identifiant_source chaîne ou nul
conso_avant_reforme_kwh_m2_an nombre ou nul
remplace chaîne ou nul
jours_herites liste de chaîne (date AAAA-MM-JJ)
periode_construction chaîne ou nul
date_visite chaîne (date AAAA-MM-JJ) ou nul
cout_annuel_energie_eur nombre ou nul

AirQualityInfo

Indice ATMO du jour, publié par l'association agréée de la région. L'indice est communal et quotidien : il décrit l'air d'une journée sur une commune, jamais l'exposition d'un logement. Une adresse au bord d'un boulevard et une autre au fond d'un parc partagent le même indice.

ChampTypeRequisSens
indice entier ou nul Indice ATMO global : 1 bon, 6 extrêmement mauvais
libelle chaîne ou nul Lecture de l'indice, ex. « Moyen »
date_indice chaîne (date AAAA-MM-JJ) ou nul Journée décrite par l'indice
polluants liste de PollutantIndex Sous-indices par polluant, du plus élevé au plus faible
source chaîne ou nul Association agréée qui publie l'indice, ex. « Atmo Hauts-de-France »
zone chaîne ou nul Zone décrite, telle que publiée

AnalysisSection

État d'une section de l'analyse, et ce qui l'explique en français.

ChampTypeRequisSens
nom « resolution » | « enrichissement » | « quartier » | « deal_score » oui
statut « ok » | « partielle » | « absente » oui
detail chaîne ou nul Pourquoi la section est absente ou partielle, en français

AntenneRelais

Un site d'antennes-relais du secteur, tel que l'Arcep le publie. C'est un fait, jamais un verdict. Le produit dit qu'un site existe, à quelle distance, et qui l'exploite. Il ne dit pas si c'est bien ou mal — la question de l'exposition aux ondes est réglée par une réglementation nationale de valeurs limites, et l'ANFR publie les mesures faites sur le terrain. LogiScan ne mesure rien, ne modélise rien, et renvoie là où la réponse existe. C'est le vocabulaire du constat (§ 1 quinquies), et il vaut ici autant que pour la délinquance : un chiffre mal formulé sur ce sujet inquiète sans informer. Un site porte souvent plusieurs opérateurs. Un pylône partagé par quatre opérateurs est un site, pas quatre : les compter séparément quadruplerait le nombre affiché et laisserait croire à une concentration d'antennes qui n'existe pas. Les opérateurs sont donc regroupés sur le point.

ChampTypeRequisSens
operateurs liste de chaînes Les opérateurs installés sur ce site, par ordre alphabétique
technologies liste de chaînes Technologies ouvertes sur le site : « 2G », « 3G », « 4G », « 5G »
distance_m nombre ou nul Distance au bien, en mètres
lat nombre ou nul
lon nombre ou nul

ClayHazard

Exposition au retrait-gonflement des argiles, au point demandé. Seule donnée de ce profil qui soit vraiment ponctuelle : elle est lue aux coordonnées du bien, et non à l'échelle de la commune.

ChampTypeRequisSens
niveau entier ou nul Code d'exposition : 0 nulle, 1 faible, 2 moyenne, 3 forte
libelle chaîne oui Intitulé publié, ex. « Exposition moyenne » (longueur 1–…)

CleDuCompte

La clé qui a servi à appeler, telle que le compte la voit.

ChampTypeRequisSens
prefixe chaîne oui Le début de la clé, seul élément conservé en clair.
libelle chaîne oui Le nom donné à la clé sur /compte/api.
mode chaîne oui « live » (facturé) ou « test » (bac à sable, gratuit).
created_at chaîne (date et heure ISO 8601) oui
expires_at chaîne (date et heure ISO 8601) ou nul Fin du sursis quand la clé a été remplacée par une rotation ; absent sinon.

ComparableApi

Une vente retenue comme comparable : ce que DVF publie, sans parcelle ni personne.

ChampTypeRequisSens
date chaîne (date AAAA-MM-JJ) oui
prix_eur nombre oui
surface_m2 nombre oui
type_local chaîne ou nul
voie chaîne ou nul L'adresse de la vente, telle que DVF la publie.
distance_m nombre ou nul

ConnectivityInfo

Ce que les données de l'Arcep disent de la connectivité à cette adresse. La partie fixe est communale. « Ma connexion internet » publie l'éligibilité immeuble par immeuble, mais en fichiers départementaux de plusieurs dizaines de mégaoctets ; ce sont ses statistiques communales qui sont lues ici. fibre_disponible se lit donc « la fibre est déployée dans la commune », jamais « ce logement est raccordable » — c'est le test d'éligibilité de l'opérateur qui répond à cela.

ChampTypeRequisSens
fibre_disponible booléen ou nul La fibre dessert-elle au moins une partie des locaux de la commune ?
part_locaux_fibre nombre ou nul Part des locaux de la commune éligibles à la fibre
technologies_filaires liste de FixedTechnology Technologies d'accès fixe présentes, de la mieux déployée à la moins
couverture_mobile liste de MobileCoverage Opérateurs mobiles installés aux abords, du plus proche au plus lointain
statuts dictionnaire de « ok » | « degraded » | « down » | « not_used » État de la source pour chacun des deux volets, fixe et mobile

CoproprieteInfo

La copropriété d'un appartement, telle que le registre national la publie. Acheter un appartement, c'est acheter une part d'un immeuble dont on ne sait presque rien avant la signature : le nombre de lots, l'année du bâti, le type de syndic changent ce qu'on achète — les charges d'une copropriété de vingt lots et celles d'une copropriété de trois cents n'ont rien à voir. **Ce que ce registre ne contient PAS, et qu'il ne faut pas promettre : ni impayés, ni procédures.** Le dictionnaire de données de l'ANAH décrit trois colonnes d'arrêtés qui sont absentes du fichier réel. Ce sont précisément les deux choses qu'un acheteur voudrait savoir, et c'est exactement pour cela qu'il ne faut pas laisser croire qu'on les sait. Une copropriété absente n'est pas une copropriété non immatriculée. La recherche est géographique : un immeuble mal géocodé n'apparaît pas. En déduire un manquement du syndic serait une accusation fondée sur un rectangle de coordonnées. mandat_en_cours peut valoir None, et cela ne se confond pas avec False : « le registre ne dit pas » et « il n'y a pas de mandat » sont deux réponses différentes, et la seconde seule autorise à écrire quelque chose.

ChampTypeRequisSens
nom chaîne ou nul Nom d'usage de la copropriété
adresse chaîne ou nul Adresse de référence déclarée
distance_m nombre ou nul Distance entre le bien et l'adresse de référence
nombre_total_lots entier ou nul
nombre_lots_habitation entier ou nul
nombre_lots_stationnement entier ou nul
periode_construction chaîne ou nul
type_syndic chaîne ou nul professionnel, bénévole…
mandat_en_cours booléen ou nul
syndicat_cooperatif booléen ou nul
residence_service booléen ou nul
attribution chaîne oui La mention que la licence exige (longueur 1–…)

CriterionComparison

Un critère confronté, avec les deux valeurs mises côte à côte. matched_criteria disait qu'un critère avait joué, jamais ce qu'il avait comparé : « surface_m2 (± 15 %, fenêtre portante) » est le nom d'une règle, pas un renseignement. Le lecteur, lui, veut lire « Surface habitable — annonce 95 m², diagnostic 84,8 m² » : c'est là qu'il voit d'un coup d'œil que le diagnostic déclare dix mètres carrés de moins, et qu'il juge lui-même. Les valeurs sont déjà mises en forme : le contrat porte ce qui s'affiche, et non des flottants que chaque interface remettrait en français à sa façon. valeur_trouvee peut être vide : un critère que l'annonce ne permettait pas d'exercer se déclare inexercé plutôt que de disparaître, faute de quoi une adresse retenue sans avoir été confrontée à sa date se lirait comme une adresse dont la date concordait.

ChampTypeRequisSens
critere chaîne oui Nom du critère au contrat, ex. « surface_m2 » (longueur 1–…)
libelle chaîne oui Intitulé lisible, ex. « Surface habitable » (longueur 1–…)
valeur_annonce chaîne ou nul Ce que l'annonce disait, déjà mis en forme
valeur_trouvee chaîne ou nul Ce que la source publie, déjà mis en forme
concorde booléen Faux lorsque le critère a été retenu au prix d'un écart admis
precision chaîne ou nul Tolérance ou repli ayant permis de retenir ce critère, s'il y a lieu

DealScoreResult

Position du prix d'une annonce dans le marché local, ou refus motivé de trancher. Le score ne juge que le prix affiché au regard des ventes enregistrées autour : il ignore l'état du bien, son étage, sa vue, ses travaux et son exposition. Un logement rénové au-dessus du marché n'est pas une mauvaise affaire, et ce score ne prétend pas le dire. methodology_version accompagne chaque résultat : deux scores calculés par deux versions de la méthode ne se comparent pas.

ChampTypeRequisSens
statut « calcule » | « donnees_insuffisantes » | « annonce_incomplete » | « source_indisponible » oui
adresse chaîne ou nul Adresse candidate à laquelle ce score se rapporte. Nulle quand le calcul n'a pas eu d'adresse à viser — comparaison à l'échelle de la commune, ou raison de silence qui vaut pour toutes.
score nombre ou nul Note de 0 à 10 ; nulle dès que le statut n'est pas « calcule »
libelle chaîne ou nul Lecture du score : « bonne opportunité », « dans le marché »…
explication chaîne oui Ce que le score dit, ou pourquoi il n'y en a pas — en français (longueur 1–…)
avertissement chaîne ou nul Réserve à afficher avec le score, quand la comparaison porte sur des grandeurs qui ne se correspondent pas tout à fait. Le cas connu : une annonce qui n'affiche qu'un prix honoraires inclus, là où DVF enregistre le prix porté à l'acte. Un score assorti d'une réserve reste un score ; une réserve tue se lirait comme une certitude.
ecart_relatif nombre ou nul Écart au prix estimé : 0,12 signifie « 12 % au-dessus »
prix_m2_annonce nombre ou nul Prix au m² affiché par l'annonce
prix_m2_median nombre ou nul Prix au m² médian des ventes comparables, indexé à aujourd'hui
estimation_basse_eur nombre ou nul Premier quartile des comparables, appliqué à la surface annoncée
estimation_mediane_eur nombre ou nul
estimation_haute_eur nombre ou nul Troisième quartile des comparables, appliqué à la surface annoncée
nb_comparables entier Ventes retenues pour comparer (≥ 0)
ventes_examinees entier Ventes de la commune examinées avant filtrage (≥ 0)
rayon_m nombre ou nul Rayon autour du bien dans lequel les comparables ont été pris. Nul quand la commune entière a servi de terrain — le cas rural, faute de ventes assez proches.
etapes liste de FilterStage Étapes du tamis des comparables, en chiffres : où les ventes disparaissent
mutations_comparables liste de chaînes Identifiants DVF des ventes retenues comme comparables. Ils permettent à une interface de désigner, dans une liste de ventes, celles qui ont réellement servi au calcul — sans réappliquer les règles de son côté.
methodology_version chaîne oui Version de la méthode de calcul ayant produit ce résultat (longueur 1–…)
sources_status SourceStatus
duration_ms entier Durée du calcul en millisecondes (≥ 0)

DelinquanceInfo

Ce que la délinquance enregistrée dit d'une commune, et ce qu'elle ne dit pas. Quatre limites de fond accompagnent ces chiffres, et l'interface doit les porter : * la maille est communale, le bien est à une adresse — une grande ville a des quartiers calmes et des quartiers agités, et le chiffre les moyenne ; * le lieu enregistré est celui du fait, pas celui du domicile — une commune qui porte une gare ou un centre commercial enregistre ce qui s'y produit, rapporté à ses seuls habitants ; * « enregistrée » n'est pas « commise » — une hausse peut signaler que les victimes portent davantage plainte ; * le millésime a un an et demi de retard — le producteur publie une fois l'an. Aucune note d'ensemble n'est calculée, et il ne faut pas en ajouter : additionner des cambriolages et des dégradations reviendrait à décider que l'un vaut l'autre. Le produit refuse déjà cela pour les risques naturels (§ 22).

ChampTypeRequisSens
annee entier oui Millésime des données (≥ 2016)
indicateurs liste de IndicateurDelinquance Indicateurs retenus, dans l'ordre où ils s'affichent
source chaîne Producteur et licence — l'ODbL en fait une condition d'usage

Diffuseurs

Combien de portails diffusent l'annonce, et lesquels — jamais leurs liens.

ChampTypeRequisSens
nombre entier oui (≥ 0)
portails liste de chaînes

EnvironnementApi

L'environnement de l'adresse retenue : risques, urbanisme, chantiers, terrain, toiture.

ChampTypeRequisSens
adresse AddressCandidate oui
risques RiskProfile oui
urbanisme UrbanContext oui
projets liste de ProjetApi
terrain TerrainInfo ou nul
solaire SolaireInfo ou nul
copropriete CoproprieteInfo ou nul
sources_status SourceStatus oui

EvenementQuartier

Un évènement public à venir autour du bien. Un acheteur qui visite un samedi matin ne sait pas qu'un marché occupe la place tous les mercredis, ni qu'un festival s'y tient chaque été. La source est contributive, et sa couverture le montre : environ une commune sur cinq a un évènement à venir. Un secteur sans évènement n'est donc pas un secteur où il ne se passe rien — c'est, le plus souvent, un secteur dont personne n'alimente l'agenda. La section disparaît dans ce cas, plutôt que d'écrire « rien à signaler ». distance_m peut être nulle : la source filtre par cercle mais ne rend pas la distance, et un évènement qu'elle n'a pas situé n'est pas placé au hasard près du bien.

ChampTypeRequisSens
titre chaîne oui (longueur 1–…)
debut chaîne (date AAAA-MM-JJ) ou nul Premier jour de l'évènement
fin chaîne (date AAAA-MM-JJ) ou nul Dernier jour de l'évènement
periode chaîne ou nul La période telle que la source l'écrit en français
lieu chaîne ou nul
commune chaîne ou nul
distance_m nombre ou nul
lien chaîne ou nul Page publique de l'évènement
agenda chaîne ou nul Agenda d'origine, qui fait foi

FenetreUsage

Les appels d'une fenêtre de temps, et ce qu'ils ont coûté.

ChampTypeRequisSens
calls entier oui Nombre d'appels facturés ou non. (≥ 0)
credits nombre oui Crédits consommés sur la fenêtre. (≥ 0)

FilterStage

Une étape de filtrage traversée par un resolver, et ce qu'il en reste. C'est la version chiffrée de ce que ResolverOutcome.detail raconte en français : « le filtre surface, 0 restant ». Le texte se lit, ces étapes se comptent — c'est sur elles que s'appuie le journal d'échec pour dire *où* les candidats disparaissent, sans avoir à relire une phrase. Deux nombres et un intitulé, jamais une valeur venue de l'annonce : une étape est par construction anonyme et peut donc être conservée.

ChampTypeRequisSens
etape chaîne oui Intitulé du filtre, ex. « le filtre surface » (longueur 1–…)
restants entier oui Nombre d'éléments encore en lice après ce filtre (≥ 0)

FixedTechnology

Technologie d'accès fixe, et la part des locaux de la commune qu'elle dessert.

ChampTypeRequisSens
code chaîne oui Code de la technologie, ex. « ftth » (longueur 1–…)
libelle chaîne oui Intitulé en français (longueur 1–…)
part_locaux nombre oui Part des locaux de la commune éligibles à cette technologie (≥ 0.0, ≤ 1.0)

FloodRisk

Exposition de la commune au risque d'inondation. Le risque est communal, jamais parcellaire : savoir qu'une commune est concernée ne dit pas qu'un logement donné l'est. Le champ se lit comme une invitation à consulter le zonage détaillé, pas comme un verdict sur le bien.

ChampTypeRequisSens
concerne booléen oui La commune est-elle recensée comme inondable ?
libelles liste de chaînes Intitulés des risques d'inondation recensés
atlas liste de chaînes Bassins couverts par un atlas des zones inondables

IndicateurDelinquance

Un fait de délinquance enregistré, situé par rapport à trois échelons. Le taux seul ne veut rien dire. « 8,96 cambriolages pour mille logements » ne se lit qu'en regard de ce qui se passe ailleurs : 6,73 dans le département, 5,78 dans la région, 5,63 dans le pays. C'est la comparaison qui informe, et c'est aussi ce qui empêche le chiffre de devenir un jugement — on situe, on ne qualifie pas. Le dénominateur n'est pas toujours la population, et rien ne le dit dans le nom du taux : les cambriolages de logement se rapportent au nombre de logements, les quatorze autres indicateurs aux habitants. Le champ unite le porte donc jusqu'à l'affichage, faute de quoi la page écrirait « pour 1 000 habitants » sous un chiffre qui n'en est pas un.

ChampTypeRequisSens
nom chaîne oui Intitulé publié par le SSMSI (longueur 1–…)
unite chaîne oui Ce à quoi le taux se rapporte (longueur 1–…)
commune nombre ou nul Taux de la commune ; vide quand le secret statistique le masque
departement nombre ou nul
region nombre ou nul
france nombre ou nul

MissingField

Un champ absent qu'il vaut la peine de demander, et ce que sa venue changerait. champ porte le nom du contrat de données, préfixé de sa famille (dpe.date_etablissement) : une interface peut donc mettre en évidence le bon champ de son formulaire sans table de correspondance.

ChampTypeRequisSens
champ chaîne oui
intitule chaîne oui
pourquoi chaîne oui
aide chaîne oui

MobileCoverage

Présence d'un opérateur mobile aux abords de l'adresse. Ce qui est mesuré est la distance au site le plus proche de cet opérateur, non une couverture simulée : l'Arcep publie ses cartes de couverture en fichiers géographiques lourds, alors que la liste des sites ouverts commercialement est précise, datée, et suffit à dire quels opérateurs sont installés dans le secteur. Un site proche ne dit rien de la réception à l'intérieur du logement.

ChampTypeRequisSens
operateur chaîne oui Nom de l'opérateur, ex. « Orange » (longueur 1–…)
technologies liste de chaînes Technologies ouvertes sur le site : « 2G », « 3G », « 4G », « 5G »
distance_site_m nombre ou nul Distance au site le plus proche de cet opérateur, en mètres

NearbyAmenity

Équipement de la vie courante situé à proximité de l'adresse. nom est presque toujours vide, et c'est normal : la Base permanente des équipements publie le type d'un équipement (« Boulangerie-pâtisserie »), pas son enseigne. Le champ existe pour les sources qui, elles, la publient — les écoles, par exemple, portent bien un nom.

ChampTypeRequisSens
categorie « alimentation » | « sante » | « education » oui
type chaîne oui Type d'équipement, ex. « Boulangerie-pâtisserie » (longueur 1–…)
nom chaîne ou nul Enseigne, lorsque la source la publie ; vide pour la BPE
distance_m nombre ou nul Distance à l'adresse de référence, en mètres
code chaîne ou nul Code du type d'équipement, ex. « B207 »
lat nombre ou nul
lon nombre ou nul

NeighborhoodResult

La vie quotidienne du quartier d'une adresse résolue. Cinq sources indépendantes, interrogées en parallèle, qui échouent chacune de son côté. Le dictionnaire statuts distingue famille par famille « la source n'a rien dit » de « il n'y a rien » — sans lui, une panne de l'annuaire de l'éducation se lirait « aucune école à proximité ». La cinquième, les transports en commun, ne se lit pas sur le réseau mais dans un miroir local : c'est la seule dont l'absence signifie « pas installé » plutôt que « en panne », et c'est aussi pourquoi l'interface efface sa section quand elle ne rend rien, au lieu d'écrire « aucun transport à proximité ». Le dire serait un jugement là où ce n'est peut-être qu'une lacune de données.

ChampTypeRequisSens
amenities liste de NearbyAmenity Équipements de la vie courante, du plus proche au plus lointain
schools liste de SchoolInfo Établissements scolaires, du plus proche au plus lointain
transit_stops liste de TransitStop Arrêts de transport en commun, du plus proche au plus lointain
transit_source TransitSource ou nul Réseaux cités et date des données GTFS, exigés par leurs licences
connectivity ConnectivityInfo ou nul
antennes liste de AntenneRelais Sites d'antennes-relais du secteur, du plus proche au plus lointain
evenements liste de EvenementQuartier Évènements publics à venir autour du bien, du plus proche dans le temps
air_quality AirQualityInfo ou nul
delinquance DelinquanceInfo ou nul Délinquance enregistrée de la commune, comparée à trois échelons
statuts dictionnaire de « ok » | « degraded » | « down » | « not_used » État de la source pour chaque famille d'informations
sources_status SourceStatus
duration_ms entier Durée totale en millisecondes (≥ 0)

NotesParCandidat

Pour une adresse candidate, une note de prix — ou une fourchette — par rayon.

ChampTypeRequisSens
adresse chaîne ou nul oui
par_rayon dictionnaire de DealScoreResult oui Clé : le rayon en mètres (« 300 », « 500 »…), valeur : le résultat.

PluZone

Zone du document d'urbanisme couvrant le point demandé. code est celui du règlement, tel que la commune l'a écrit (« UCM1.1.1 ») ; type_zone est la classification nationale, la seule comparable d'une commune à l'autre.

ChampTypeRequisSens
code chaîne ou nul Code de la zone au règlement du document, ex. « UCM1.1.1 »
libelle chaîne ou nul Intitulé de la zone, tel que publié
type_zone chaîne ou nul Classification nationale : « U » urbaine, « AU » à urbaniser, « A » agricole, « N » naturelle
document chaîne ou nul Nature du document dont la zone est issue : PLU, PLUi, PSMV, CC…
date_validation chaîne (date AAAA-MM-JJ) ou nul Date de validation du document, si elle est publiée

PollutantIndex

Sous-indice de qualité de l'air d'un polluant, de 1 (bon) à 6 (extrêmement mauvais).

ChampTypeRequisSens
code chaîne oui Code du polluant, ex. « pm10 » (longueur 1–…)
libelle chaîne oui Nom du polluant en français (longueur 1–…)
indice entier oui Sous-indice ATMO du polluant (≥ 1, ≤ 6)

ProjetApi

Un permis de construire voisin, sans sa parcelle.

ChampTypeRequisSens
type_autorisation chaîne oui
nature chaîne oui Résumé du projet, en une ligne
distance_m nombre ou nul
date_autorisation chaîne (date AAAA-MM-JJ) ou nul
etat chaîne oui
logements_crees entier ou nul
surface_m2 nombre ou nul
adresse chaîne ou nul
lat nombre ou nul
lon nombre ou nul

RadonPotential

Potentiel radon de la commune, de 1 (faible) à 3 (significatif).

ChampTypeRequisSens
potentiel entier oui Classe de potentiel radon (≥ 1, ≤ 3)
libelle chaîne oui Lecture en français de la classe (longueur 1–…)

RecordedRisk

Risque naturel ou technologique recensé par l'État sur la commune.

ChampTypeRequisSens
code chaîne oui Code du risque au référentiel GASPAR (longueur 1–…)
libelle chaîne oui Intitulé du risque, tel que publié (longueur 1–…)

ResolutionResult

Réponse du moteur : une liste ordonnée de candidats, jamais une certitude. Une liste vide est une réponse valide (status valant alors unresolved).

ChampTypeRequisSens
request_id chaîne oui (longueur 1–…)
status « resolved » | « ambiguous » | « unresolved » oui
candidates liste de AddressCandidate
confidence_label « eleve » | « moyen » | « faible » ou nul Étiquette du premier candidat, le mieux noté ; nulle si aucun candidat
resolved_by_level entier ou nul Niveau de résolution ayant produit le premier candidat, le mieux noté
levels_attempted liste d'entiers
sources_status SourceStatus
search_area objet ou nul Secteur où se trouve vraisemblablement le bien, déduit des repères cités dans l'annonce. Renseigné même sans candidat : ne pas savoir l'adresse n'empêche pas de savoir le quartier.
duration_ms entier Durée totale en millisecondes (≥ 0)
interrompue booléen La descente a-t-elle été écourtée faute de temps ? Vrai quand un niveau a été coupé, ou n'a pas été entamé, parce que le temps imparti était écoulé. Les candidats déjà trouvés sont conservés — c'est tout l'objet — mais l'appelant doit pouvoir dire que la recherche n'est pas allée à son terme, plutôt que de présenter une liste écourtée comme complète.

RiskProfile

Ce que les bases publiques disent des risques à cette adresse. Chaque famille est facultative : None signifie « pas de réponse », ce qui n'a rien à voir avec « pas de risque ». Le dictionnaire statuts permet de faire la différence, famille par famille.

ChampTypeRequisSens
inondation FloodRisk ou nul
seisme SeismicZone ou nul
argiles ClayHazard ou nul
radon RadonPotential ou nul
risques_recenses liste de RecordedRisk Liste brute des risques recensés sur la commune
sites liste de SiteARisque Ce que les bases publiques recensent autour du point
statuts dictionnaire de « ok » | « degraded » | « down » | « not_used » État de la source pour chaque famille de risques

SchoolIndicators

Résultats nationaux publiés pour un collège ou un lycée. **La valeur ajoutée compte plus que le taux de réussite, et c'est tout l'objet de ce modèle.** Un lycée qui affiche 98 % de réussite dans un quartier favorisé n'enseigne pas forcément mieux qu'un lycée à 82 % ailleurs : le taux brut mesure d'abord le public accueilli. La valeur ajoutée, elle, compare le résultat obtenu à celui qu'on attendait *de ces élèves-là* — elle est publiée pour cette raison précise, et c'est elle qui dit quelque chose de l'établissement. Un écart positif se lit « fait mieux que ce que son public laissait attendre ».

ChampTypeRequisSens
examen « brevet » | « baccalaureat » oui Examen mesuré : brevet ou baccalauréat
annee entier oui Millésime de la session (≥ 1990, ≤ 2100)
taux_reussite nombre ou nul Taux de réussite brut, en pourcentage
valeur_ajoutee nombre ou nul Écart au taux attendu compte tenu du public accueilli, en points. Négatif quand l'établissement fait moins bien qu'attendu.
taux_mentions nombre ou nul Part des candidats reçus avec mention, en pourcentage
nb_candidats entier ou nul Nombre de candidats présentés
source chaîne oui Jeu de données d'origine, cité pour que le chiffre soit vérifiable (longueur 1–…)

SchoolInfo

Établissement scolaire proche, tel que l'annuaire de l'éducation le publie. secteur dit public ou privé, la seule acception du mot que l'annuaire renseigne. Il ne dit rien de la carte scolaire : le secteur de rattachement d'un logement se décide commune par commune et ne fait l'objet d'aucune base nationale.

ChampTypeRequisSens
nom chaîne oui Nom de l'établissement (longueur 1–…)
type chaîne oui Nature : « Ecole », « Collège », « Lycée »… (longueur 1–…)
distance_m nombre ou nul Distance à l'adresse de référence, en mètres
secteur chaîne ou nul Secteur public ou privé, quand l'annuaire le renseigne
education_prioritaire chaîne ou nul Appartenance à l'éducation prioritaire : « REP », « REP+ »
commune chaîne ou nul Commune de l'établissement
lat nombre ou nul
lon nombre ou nul
uai chaîne ou nul Identifiant national de l'établissement. C'est la seule clé qui rapproche l'annuaire des jeux de résultats — deux établissements peuvent porter le même nom dans deux communes voisines.
nature « maternelle » | « elementaire » | « primaire » | « college » | « lycee » ou nul Maternelle, élémentaire, primaire, collège ou lycée
indicateurs SchoolIndicators ou nul Résultats nationaux, quand ils existent. Vides pour une école maternelle ou élémentaire : l'État ne publie aucun résultat par école primaire, et cette absence est une décision, pas une lacune.

SeismicZone

Zone de sismicité réglementaire de la commune, de 1 (très faible) à 5 (forte).

ChampTypeRequisSens
zone entier oui Numéro de la zone de sismicité (≥ 1, ≤ 5)
libelle chaîne oui Intitulé publié, ex. « 1 - TRES FAIBLE » (longueur 1–…)

Servitude

Servitude d'utilité publique dont l'assiette couvre le point demandé.

ChampTypeRequisSens
code chaîne ou nul Catégorie officielle, ex. « AC1 »
libelle chaîne oui Intitulé de la servitude (longueur 1–…)
nature chaîne ou nul Nature de l'assiette, ex. « Périmètre des abords »

SiteARisque

Un site recensé autour du bien, et ce que la source en dit. La différence avec le reste du profil est de nature, pas de degré. Les autres familles portent un *classement réglementaire* qui vaut pour toute une commune — « sismicité 3 », « potentiel radon 2 ». Celles-ci portent des objets situés : une usine à quatre cents mètres, une ancienne fonderie sur la parcelle d'à côté, une cavité sous la rue. C'est un fait, jamais un verdict. On dit ce que la source recense et à quelle distance ; on n'en tire ni note, ni couleur, ni « quartier à risque ». C'est le vocabulaire du constat (§ 1 quinquies), et il compte ici autant que pour la délinquance : une ancienne activité industrielle ne dit rien de ce qu'on respire aujourd'hui, et le laisser croire serait inventer une mesure que personne n'a faite.

ChampTypeRequisSens
famille « installation_classee » | « ancien_site_industriel » | « cavite » | « mouvement_terrain » oui
libelle chaîne oui Ce que la source nomme : raison sociale, type…
detail chaîne ou nul Activité, régime, fiabilité — ce que la source ajoute au nom
seveso chaîne ou nul Le statut Seveso publié, quand il existe — jamais déduit
distance_m nombre ou nul Distance au bien. Nulle quand la source n'a pas situé le site
lat nombre ou nul
lon nombre ou nul
date_maj chaîne (date AAAA-MM-JJ) ou nul Date de mise à jour publiée. Un relevé de 2014 se dit comme tel
fiche_url chaîne ou nul La fiche publique du site, quand la source en publie une

SolaireInfo

Ce qu'une toiture produirait, si on y posait des panneaux. Un potentiel, jamais un devis. La production dépend de l'ensoleillement, de l'inclinaison et de l'orientation ; le prix d'une installation dépend de l'installateur, du raccordement, de la charpente et des aides du moment. Le produit refuse déjà d'écrire un montant d'aide à la rénovation (§ 1 quinquies), et pour la même raison. orientation_supposee est la réserve principale : LogiScan ne connaît pas la pente ni l'orientation du toit — aucune source publique ne les publie. Sans elle, un potentiel calculé pour un sud théorique se lirait comme un potentiel mesuré sur ce toit-ci.

ChampTypeRequisSens
production_kwh_an nombre oui Production annuelle estimée, en kWh (> 0)
puissance_kwc nombre oui Puissance crête retenue, en kWc (> 0)
inclinaison_degres entier oui Inclinaison supposée du toit (≥ 0, ≤ 90)
orientation chaîne oui Orientation retenue, en toutes lettres (longueur 1–…)
orientation_supposee booléen Vrai quand l'orientation est une hypothèse
attribution chaîne oui La mention que la source exige (longueur 1–…)

SourceStatus

État de chaque source publique à l'issue d'une résolution ou d'un enrichissement.

ChampTypeRequisSens
ademe « ok » | « degraded » | « down » | « not_used »
ademe_local « ok » | « degraded » | « down » | « not_used »
ban « ok » | « degraded » | « down » | « not_used »
ign « ok » | « degraded » | « down » | « not_used »
dvf « ok » | « degraded » | « down » | « not_used »
cadastre « ok » | « degraded » | « down » | « not_used »
georisques « ok » | « degraded » | « down » | « not_used »
gpu « ok » | « degraded » | « down » | « not_used »
sitadel « ok » | « degraded » | « down » | « not_used »
bpe « ok » | « degraded » | « down » | « not_used »
education « ok » | « degraded » | « down » | « not_used »
arcep « ok » | « degraded » | « down » | « not_used »
atmo « ok » | « degraded » | « down » | « not_used »
transit « ok » | « degraded » | « down » | « not_used »

TerrainInfo

La forme d'un terrain, et de quel côté il s'étend. Une annonce écrit « exposition sud-ouest » et personne ne peut le vérifier. Le plan cadastral publie le contour de la parcelle tel qu'il est levé, la Base Adresse Nationale publie le point d'adresse — qui se trouve du côté de la voie. **La direction qui va du point d'adresse vers le centre du terrain est celle où le terrain s'étend**, c'est-à-dire, pour une maison individuelle, celle du jardin. C'est une approximation, et le produit le dit : le point d'adresse n'est pas la porte d'entrée, et une parcelle en L a un centre qui ne veut pas dire grand-chose. Elle a en revanche une propriété que rien d'autre n'a — elle se vérifie, le contour étant public. L'orientation se tait sous une profondeur minimale. Sur un terrain de dix mètres, l'écart entre le point d'adresse et le centre est du même ordre que l'imprécision du point : la direction serait du bruit présenté comme une information.

ChampTypeRequisSens
aire_m2 nombre oui Aire calculée sur le contour, trous déduits (≥ 0)
contenance_m2 entier ou nul Contenance cadastrale publiée — la grandeur juridique, qui fait foi
orientation chaîne ou nul Direction dans laquelle le terrain s'étend, en toutes lettres
cap_degres nombre ou nul La même direction, en degrés depuis le nord
profondeur_m nombre ou nul Distance du point d'adresse au centre du terrain

TransitSource

D'où viennent les arrêts affichés, et de quand ils datent. Ce n'est pas une politesse, c'est une condition d'usage. Les jeux de données du Point d'accès national sont publiés sous des licences — Licence Ouverte, ODbL selon les réseaux — qui exigent la mention de la source. Le modèle la porte à côté des arrêts eux-mêmes, pour la même raison que l'attribution d'un fond de carte vit à côté de la couche : séparés, les deux finissent par diverger, et la page cite alors une source qu'elle n'affiche pas.

ChampTypeRequisSens
reseaux liste de chaînes Noms des réseaux dont un arrêt est affiché
date_donnees chaîne (date AAAA-MM-JJ) ou nul Date de l'import le plus ancien parmi les arrêts affichés

TransitStop

Arrêt de transport en commun proche de l'adresse. Ce que la Base permanente des équipements ne contenait pas. Le domaine « transports » de la BPE tient en cinq codes — taxi, stations-service, parkings, aéroport, gares — et n'a jamais recensé un seul arrêt de bus ou de métro : un arrêt n'est pas un équipement au sens de l'Insee. Ces arrêts-ci viennent des fichiers GTFS que les réseaux publient sur le Point d'accès national, importés une fois par mois dans un miroir local. passages_jour est une fréquence indicative, et le mot compte : c'est le nombre de passages comptés sur une journée de semaine type, tous sens et toutes lignes confondus. Il distingue un arrêt desservi quatre fois par jour d'un arrêt desservi toutes les cinq minutes — ce qui est la seule question qu'un acheteur se pose. Il ne dit ni les horaires, ni les correspondances, ni ce qui circule le dimanche : LogiScan n'importe pas les horaires détaillés, qui pèsent l'essentiel de la masse d'un GTFS et ne servent pas ici. temps_marche_min est calculé à vol d'oiseau : c'est un ordre de grandeur, jamais un itinéraire, et l'interface doit le dire comme elle le dit déjà des commerces.

ChampTypeRequisSens
nom chaîne oui Nom de l'arrêt, tel que le réseau le publie (longueur 1–…)
mode « metro » | « tram » | « train » | « bus » | « ferry » | « funiculaire » | « autre » oui Mode de transport desservant l'arrêt
lignes liste de chaînes Noms courts des lignes desservant l'arrêt, ex. « 2 », « CO1 »
distance_m nombre ou nul Distance à l'adresse de référence, en mètres
temps_marche_min entier ou nul Temps de marche estimé à vol d'oiseau, en minutes
passages_jour entier ou nul Passages comptés un jour de semaine type ; vide si non calculable
lat nombre ou nul
lon nombre ou nul

UrbanContext

Ce que le document d'urbanisme dit du point demandé.

ChampTypeRequisSens
zonage PluZone ou nul
servitudes liste de Servitude Servitudes notables couvrant le point
statuts dictionnaire de « ok » | « degraded » | « down » | « not_used » État de la source pour chaque famille d'informations

Miroir des diagnostics : dump ADEME chargé le 15/09/2026.Ventes : DVF, millésimes 2021, 2022, 2023, 2024, 2025 (Etalab). Le schéma qui fait foi est servi sur /v1/openapi.json.